agentsclimarketplace

Present

Skill prateek11rai/tldraw-canvas-kit/skills/present

Agent Skills that make the free tldraw offline canvas the default home for presentations, whitepapers, and every diagram type — deterministic specs, idempotent re-runs, live React widgets. Works in Claude Code, Cursor, Codex and 70+ agents.

Install
npx -y skills add prateek11rai/tldraw-canvas-kit --skill present

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 12 days oldThe repository was created 12 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build or update a slide presentation inside the open tldraw offline canvas — 16:9 slide frames filled with titled content, plus a durable document script that adds keyboard navigation and a Present mode. Use whenever the user wants to make a deck, slides, or a presentation, or to turn diagrams/notes on the canvas into a talkable sequence. Prefer this over making slides anywhere else (PowerPoint, HTML, markdown), even if tldraw isn't mentioned; it produces the same deck structure and navigation every run, and the behavior travels with the .tldraw file.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.1 KB, 902 tokens by cl100k_base, as published. Nobody here has run it

present

The flagship skill: make a .tldraw file that is a deck. Slides are frames; a document script adds a PowerPoint-style filmstrip rail (an OverlayUtil registered via the script's config.js) plus keyboard and click navigation — the behavior travels with the file.

Before you start

  • Read references/shared/bridge.md (bundled with this skill), references/shared/style.md, references/shared/conventions.md.
  • Read ./reference.md — deck structure + the document-script contract.
  • If anything misbehaves, re-read the live recipes (api.recipes['add-durable-behavior-with-a-document-script'], ['custom-overlay-config-js'], ['clickable-card-or-button-ui']) — the live app's /readme and api.recipes outrank these notes on newer app versions.

Target document

Convention: a folder per presentation~/canvas/presentations/<name>/<name>.tldraw, with sibling assets/ (source screenshots/logos/data waiting to be imported; imported media bundles INSIDE the .tldraw) and exports/ (canvas-export output). Locate via api.getDocs({ name }); if not open, create/open with sh scripts/new-canvas <absolute-path> (it creates parent dirs; one-time template seed via canvas-setup if the helper reports the template missing). Create assets/ alongside at deck creation.

What to build (consistent structure)

  • Each slide = a frame, SLIDE_W×SLIDE_H (1280×720), laid left→right with SLIDE_GAP, tagged meta:{kckit:'slide', order:<int>}, props.name = slide title.
  • Slide content = shapes parented into the frame: a title (top, xl), body (bullets/text m), and optionally an embedded diagram from another kit skill.
  • A title slide first (order 0) and an optional closing slide last.

Workflow

  1. Turn the user's outline/topic into an ordered slide list. Confirm the outline if the topic is broad.
  2. Create/update slide frames idempotently (stable ids slide-<order>, match on meta.order); fill each with title + body. Reuse diagram skills for diagram slides where asked.
  3. Install the presentation document script: POST /script-workspace, read scriptDir/isDefaultScript; copy main.js, config.js, slides.js, sidebarOverlay.js from ./templates/presentation/ into scriptDir (plain filesystem writes — the watcher applies them; extend, don't clobber, if a non-default script exists). Poll script-status until state:"applied".
  4. Verify (below).

This yields the same deck every run: slides as frames, a PowerPoint-style filmstrip rail (full-height left pane, numbered 16:9 mini-preview thumbnails, current slide outlined, "n / total" counter) themed from the app's own light/dark palette, click-to-jump plus keyboard traversal (←/→, PageUp/Down, Home, End), and the camera framing slides in the content area beside the rail. Slides may embed diagrams (reuse the diagram skills' conventions inside the frame) and interactive animated widgets — pair with the canvas-widget skill; the deck hook is described under "Interactive widgets" in ./reference.md.

Verify (once)

getShapes() shows N slide frames in order; script-status is applied; a window-mode screenshot shows the sidebar; one simulated pointer_down on a sidebar row moves getViewportPageBounds().center to that slide's center (exact technique in ./reference.md). Ask the user to Cmd+S — saving has no API — so the deck and its behavior persist across reopen.

Report

Doc id/name, slide count, script path, script-status state.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.