design
Create a design canvas - a multi-artboard visual design published as an Artifact that runs Claude Design's canvas editor (an early preview of Claude Design inside Claude Code). You DRAFT the design as .dc.html artboards laid out on one pan/zoom canvas; where saving is enabled for the user's account they refine every element visually (click-to-select, a properties panel, inline text editing, undo/redo) and Save publishes a new version for everyone, otherwise they get a view-and-export (PNG/PDF) preview of your draft. Good for UI mockups and screen flows, landing pages, marketing and social graphics, and print pieces - posters, flyers, brochures as single-page artboards; memos and reports as one flowing artboard. Use when someone wants a design, mockup, wireframe, UI or screen design, landing page, poster, flyer, brochure, banner, card, one-pager, or any visual layout they would rather tweak by hand than in code. Only for CREATING or re-seeding a canvas; an existing one is edited in its published Artifact.
git clone --depth 1 https://github.com/asgeirtj/system_prompts_leaks /tmp/design && cp -r /tmp/design/Anthropic/claude-code/skills/design ~/.claude/skills/designSKILL.md
# Create a design canvas
**Two quick exits.** Empty request: ask in one line what they want
designed (and for what), then stop. Request EXACTLY one of `consent`,
`revoke`, `sync`, `login`, `import`, `export` or `status` alone (or
`import`/`export`/`sync` plus only a URL or project name): that is a
Claude Design account/project command this preview doesn't handle -
say so in one line and stop. For `consent`, `revoke`, `login`, `sync`
point at `/design <verb>` alone (`/design-sync <project>` for a sync
with a project hint); those need a first-party claude.ai login and an
org policy permitting Claude Design, so without either say Design
consent/sync is not available here. For `import`, `export`, `status`
say those are not available while this preview is on and point at
claude.ai/design, never a `/design ...` spelling. Do not design
something named "status". Anything that describes something to design
-- a login page, an export dialog, a status dashboard - is a brief.
This is an early preview of Claude Design inside Claude Code: the
skill ships a **precompiled payload** - Claude Design's "Design
Components" editor on a multi-artboard canvas, packaged to run inside
a published Artifact. It is not at parity with claude.ai/design and
the editor baked into each canvas does not update after publish; say
so plainly if asked. You do NOT build or modify the editor - you seed
design content into a copy of the payload with the helper, and
publish. Every `.dc.html` file renders as its own ARTBOARD (its own
sandboxed preview iframe) on one pan/zoom canvas; `canvas.json` lays
them out and picks the launch view. Where saving is enabled (the
artifact-publish capability - step 4 finds out) the viewer gets a
WYSIWYG canvas: click-to-select, a properties panel bound to the
focused artboard (closed until opened from the toolbar or a
selection's quick menu), inline text editing, undo/redo, edits local
until the explicit **Save** publishes the page for everyone. Without
it Save is refused and the view is read-only - viewing plus PNG/PDF
export is what the user gets. Never edit the payload's code: only the
title, the README note and the state block vary between canvases.
The foundation - save model, untrusted-state rule, no-egress iframe
rule, content guidance - is under "Foundation" at the end. One general
artifact rule is deliberately SUPERSEDED here: a design canvas stores
and EXECUTES `.dc.html`, which is only safe because the editor never
renders published content in its own page - everything runs in a
nested sandboxed preview iframe (opaque origin, no allow-same-origin,
inheriting the CSP's no-egress rule, postMessage-only). That isolation
is load-bearing; nothing may weaken it.
Keep the machinery to yourself - helper, payload, state block,
capabilities, contracts, versions - even when a publish fails or is
denied. Narrate
the deliverable ("drafting two directions for the poster", "saving
your canvas"). Never ask the user to approve or confirm a publish in
chat: the tool collects its own approval. (The one publish-time
question that stays is the "anyone still editing?" check before a
`force: true` save, under "Updating an existing canvas".)
## What lives where
Everything lives in the one payload file:
- **The editor code** is the bulk of `payload.template.html` in the
skill's base directory (listed above; ~2 MiB minified - never read
it into context, paste it, or open it with an echoing edit tool; only
copy and seed it with the helper).
- **The design content** is the `files` record in the state block
(script id `appifact-doc`): path -> raw `.dc.html` source. EVERY
`.dc.html` entry renders as an artboard; `Main.dc.html` is the entry
file (seed it always; it is the focused artboard on a focused open).
Components a design imports (`<dc-import name="Card">`) are sibling
`.dc.html` entries - artboards in their own right.
- **The canvas layout** is a `canvas.json` files entry ("Artboards and
canvas.json" below): positions, pages, launch view. Seed it for any
multi-artboard design.
- **Images** become `files` entries holding base64 under their
filename. Keep each under ~70 KB - downsample with whatever is on the
machine (`sips -Z 1200`, `magick in.png -resize 1200x out.png`,
Pillow); if nothing is, say so and use fewer, smaller images - the
whole document republishes on every save (16 MiB cap) and the editor
silently drops any entry over 2 MiB (the helper refuses one). The
helper stores them (`--image`) and warns when one is large.
- **Referencing files from .dc.html** - every failure below is silent:
store images as **BARE base64** (no `data:` prefix - the runtime adds
the wrapper; a stored data:-URI double-wraps into a broken image);
reference by filename, `<img src="logo.png">` or `./logo.png`, with
the `src` **double-quoted** and the name matching the files key
exactly (literal substitution; CSS `url(./logo.png)` works in any
quote form); only `.png .jpg .jpeg .gif .webp .avif .bmp .svg`
entries resolve as images; a missing entry renders as a broken image
with no warning.
## Workflow
0. **Match the existing app pixel-perfectly - by default, without
being asked.** Inside a codebase the user should NEVER have to say
"recreate our UI first". Before drawing: find the design system /
tokens (`tokens.css`, `theme.*`, `variables.css`, a
`tailwind.config.*` theme, `design-system/` · `ui/` · `components/`,
Storybook, the icon set, brand fonts under `assets/`/`public/`) AND
the existing screens closest to the ask. Lift EXACT values from the
real component source and stylesheets - colors, type ramp, weights,
line-heights, spacing, radii, borders, shadows, control heights,
icon sizes - following tokens to their resolved values, never
rounding to a 4/8px grid. Reproduce the app's STANDARD components'
anatomy and states as they exist; since you usually can't import
them into a `.dc.html`, copy them pixel-perfectly as markup + inliDeep research harness — fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report.
Author or improve the run-<unit> skill - a per-project skill that tells agents how to build, launch, and drive this project's app. Use when the user asks to set up the project, get it running, write run instructions, or verify build/run steps work from a clean environment.
Runtime capabilities a published Artifact page can be granted — behavior static HTML cannot provide on its own, such as the page reading live or connected data, remembering what people do on it (a poll, a sign-up sheet, a checklist, a document edited in place — it saves new versions of itself), keeping state shared across viewers, knowing who is viewing, asking Claude a question of its own, storing files people add, or handing the viewer a file to save. Serves this user's live capability roster and the typed call definitions. Load it whenever the user asks for an artifact needing any such runtime behavior.
Design guidance and fundamentals for Artifacts.
Diagramming know-how for Artifacts - when a picture earns its place, how to draw one that shows the real mechanism, and the inline-SVG mechanics that keep it legible in both themes.
Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR.
Automates your Chrome browser to interact with web pages - clicking elements, filling forms, capturing screenshots, reading console logs, and navigating sites. Opens pages in new tabs within your existing Chrome session. Requires site-level permissions before executing (configured in the extension).
Review the current diff, or a PR number/branch/path target, for correctness bugs and reuse/simplification/efficiency cleanups at the given effort level (low/medium: fewer, high-confidence findings; high→max: broader coverage, may include uncertain findings; ultra: deep multi-agent review in the cloud); with no level given, it reuses the level you typed last. Pass --comment to post findings as inline PR comments, or --fix to apply the findings to the working tree after the review. For ultra on a GitHub.com PR target, --post asks to post the finished review’s findings to the PR as a single comment from the user’s GitHub account (not a review; the launch dialog still confirms in interactive sessions, while non-interactive mode posts on the flag alone) and --no-post hides that option.