Agent skill
Install this skill so your coding agent deploys and extends canvases against this
instance, first try, without manual correction. It ships in the standard skill
format (a SKILL.md with name/description frontmatter and a when-to-use
trigger), so an agent loads it automatically when a task matches.
Download and install
GET /skill.zip is public — no session or API key required — so an agent can fetch
and unpack it in one step:
curl -fLOJ "{base}/skill.zip"
unzip canvas-drop-skill.zip -d ~/.claude/skills/
Replace {base} with this instance's base URL. The download is named
canvas-drop-skill.zip and unpacks to a single canvas-drop/ folder containing
SKILL.md plus an optional examples/ directory. Point your agent at the unpacked
SKILL.md, or drop the folder wherever your agent discovers skills. The skill is
self-contained: it refers to this instance by base URL and asks the user for
{base} when it doesn't know it.
What's inside
The zip is built from an explicit allowlist (SKILL.md plus examples/*.md), so it
never carries a stray secret. The skill covers four ways to work against this
instance:
- Connect over MCP. Add
{base}/mcp, sign in once through the instance's own login, then call identity-scoped tools (whoami,list_canvases,create_canvas,deploy_canvas,get_canvas_file,rollback_canvas, and more — 18 tools in all) with no key to paste. See the MCP server. - Deploy over HTTP with a per-canvas API key:
PUT {base}/v1/canvases/{id}/deploy(Bearer auth, ZIP body) publishes immediately. Companion read-back and recovery routes (GET {base}/v1/canvases/{id},…/versions,…/files,POST …/rollback,POST …/unpublish) let an agent confirm what went live and undo it. See Deploy API. - Add backend capability with the zero-config browser SDK. One
<script src="/sdk/v1.js">tag defines the globalwindow.canvasdropand rides the signed-in session cookie, so the five primitives (KV, files,me(), AI, realtime) work with no keys in client code. See the SDK overview. - The golden rules. Never put a secret in canvas files. Canvases are static
only, with no server build step. Every primitive is off until the owner enables
Backend plus that feature, so a disabled call throws
CapabilityDisabledError(code: "CAPABILITY_DISABLED", status 403). - Typed errors. Branch on a stable
err.code/err.statusrather than parsing messages. Full table at Error codes.
Lighter alternative
For a copy-into-context version with no install step, use
{base}/llms.txt, the single-file agent quick reference.