Canvas theme
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.
npx -y skills add prateek11rai/tldraw-canvas-kit --skill canvas-themeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 11 days oldThe repository was created 11 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
Apply and enforce the tldraw-canvas-kit style tokens across an existing canvas so a diagram, deck, or whitepaper looks consistent — normalizing colors, fills, text sizes, fonts, and spacing to the shared conventions, and reporting anything off-standard. Use when the user wants to "clean up", "make it consistent", "apply our style", or "tidy" a canvas, or after hand-editing a canvas that should match the kit's look. Applies the same rules every run.
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
2.8 KB, as published. Nobody here has run it
canvas-theme
The consistency pass. Reads references/shared/style.md and brings an existing
canvas into line with it — the counterpart to the generating skills, for
hand-edited or off-standard canvases.
Before you start
- Read
references/shared/style.md(the tokens — the source of truth) andreferences/shared/bridge.md(bundled with this skill).
Target document
The focused doc (api.getFocusedDoc), or one named by the user via
api.getDocs({ name }).
What it normalizes
Per style.md:
- Text: font →
sansfor docs/decks; size roles (titlexl, headingl, bodym, captions) — infer role from context (frame title vs body) and set thesizestyle. - Color/fill: reset to default (
black/none) unless the shape'smeta.kckit.kindmaps to a semantic color, then apply that color. Don't recolor shapes the user deliberately colored — treat explicit user color as a signal; only normalize shapes the kit owns (meta.kckit) or ones clearly off-palette. When unsure, report rather than change. - Spacing: flag overlapping shapes or non-standard gaps; optionally re-space
kit-owned diagram nodes to
NODE_GAP. Ask before moving user-arranged shapes. - Arrows: ensure meaningful arrows are bound (flag unbound ones via
getLints()); apply solid/dashed per role where the kit owns the edge.
The canvas is programmable — shapes tagged meta:{kckit:'widget'} belong to
animated/interactive widgets whose scripts read their geometry; theme their
colors/fonts but never move or resize them. Pair with the canvas-widget
skill when the user wants motion or interactivity added.
Workflow
- Read all shapes (
api.getShapes) + bindings +getLints(). - Build a change list: for each shape, current vs. target style, and whether the
kit owns it (
meta.kckit) or the user set it. - Apply safe normalizations (kit-owned + clearly off-standard). For anything that touches user-arranged/user-colored shapes, list it and ask before applying.
getLints()again → fix.
Verify (once)
getShapes() reflects the normalized styles; getLints() clean.
Report
Doc id/name, counts of shapes normalized by category (font/size/color/spacing/ arrows), and a list of proposed-but-not-applied changes awaiting user consent.