agentsclimarketplace

Canvas theme

Skill prateek11rai/tldraw-canvas-kit/skills/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.

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

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

  • 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) and references/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 → sans for docs/decks; size roles (title xl, heading l, body m, caption s) — infer role from context (frame title vs body) and set the size style.
  • Color/fill: reset to default (black/none) unless the shape's meta.kckit.kind maps 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

  1. Read all shapes (api.getShapes) + bindings + getLints().
  2. Build a change list: for each shape, current vs. target style, and whether the kit owns it (meta.kckit) or the user set it.
  3. Apply safe normalizations (kit-owned + clearly off-standard). For anything that touches user-arranged/user-colored shapes, list it and ask before applying.
  4. 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.

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.