跳到正文
cccskills
免费在 GitHub 公开

canvas

A Cursor Canvas is a live React app that the user can open beside the chat. You MUST use a canvas when the agent produces a standalone analytical artifact — quantitative analyses, billing investigations, security audits, architecture reviews, data-heavy content, timelines, charts, tables, interactive explorations, repeatable tools, or any response that benefits from visual layout. Especially prefer a canvas when presenting results from MCP tools (Datadog, Databricks, Linear, Sentry, Slack, etc.) where the data is the deliverable — render it in a rich canvas rather than dumping it into a markdown table or code block. If you catch yourself about to write a markdown table, stop and use a canvas instead. You MUST also read this skill whenever you create, edit, or debug any .canvas.tsx file.

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration星标 3(GitHub 3 + cccskills 0)
集成工具SlackSentryDatadog

实测评分 未实测

查看安装方法

包含的文件(12)

  • SKILL.md9.0 KB
  • sdk/canvas-tokens.d.ts7.0 KB
  • sdk/chart-primitives.d.ts6.9 KB
  • sdk/dag-layout.d.ts3.3 KB
  • sdk/diff-view.d.ts4.8 KB
  • sdk/form-primitives.d.ts6.4 KB
  • sdk/hooks.d.ts4.4 KB
  • sdk/index.d.ts2.8 KB
  • sdk/theme.d.ts1.7 KB
  • sdk/todo-list.d.ts1.5 KB
  • sdk/ui-primitives.d.ts18.9 KB
  • sdk/ui-primitives.test.d.ts59 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

A canvas is a single .canvas.tsx file the IDE compiles so the user can open it beside the chat. Follow the workflow below in order.

Workflow

1. Decide whether to use a canvas

The trigger is user intent, not response shape. Ask: would the user benefit from viewing this output as its own standalone artifact, separate from the chat? If the output is a means to an end (a drafted message, a code fix, a dashboard in another tool), skip the canvas.

Use a canvas when the agent produces new standalone analytical output:

  • Quantitative analyses and metrics breakdowns (e.g. "send 500 requests and tell me how many fail")
  • Billing or account investigations that surface structured findings from database queries
  • Security audits or architecture reviews with categorized findings
  • Cross-system data analyses and overlap reports
  • Structured data from MCP tools (Databricks, Datadog, etc.) where the data IS the deliverable
  • Financial analyses, margin decompositions, usage trend reports
  • Tables with more than a handful of rows that the user asked to see

Do NOT use a canvas when:

  • The user asks for work in a specific tool — "create a Datadog dashboard" means give them a Datadog dashboard, not a canvas
  • The user has a specific deliverable — "draft a support response", "fix this code", "make this PR"
  • The user is working within an existing artifact — improving an HTML dashboard, editing an existing file
  • The user is doing targeted debugging or active development, even if structured findings emerge along the way
  • Short factual answers, one-off file edits, or quick clarifying questions
  • MCP tools are queried as an intermediate step for a different deliverable (e.g. querying Stripe to draft a support reply)

2. Write the canvas

Location. Canvases live at /Users/<user>/.cursor/projects/<workspace>/canvases/<name>.canvas.tsx. The IDE only detects canvases written directly inside that exact directory — subfolders, alternate extensions, and other locations are not picked up. For a new canvas, always use the write file tool to create the .canvas.tsx file at that exact path; do not stop after telling the user the path or showing code in chat. Treat that managed canvases/ directory as pre-provisioned by Cursor itself: write the canvas file directly there and do not spend turns creating the directory with mkdir or checking whether it exists before writing. Listing its contents for other purposes (e.g. checking for existing canvases) is fine. If you can't determine the workspace directory from absolute paths already in your environment (terminals, transcripts, recently-viewed files), list ~/.cursor/projects/ rather than guessing. Use a descriptive kebab-case filename ending in .canvas.tsx; preserve acronym capitalization and lowercase the rest.

File rules:

  • Exactly one .canvas.tsx file per canvas. Never create helper files, style files, or supporting modules.
  • Import only from cursor/canvas. No relative imports, no npm packages, no Node built-ins.
  • Default-export the top-level component.
  • Embed all data inline. No fetch(), no network calls.

Component discovery: prefer built-in cursor/canvas components over hand-rolled markup. The full public surface (components, hooks, prop types, tokens) is declared in ~/.cursor/skills-cursor/canvas/sdk/index.d.ts and its sibling .d.ts files — read them when you need exact exports, prop shapes, or hook signatures rather than guessing. Referencing an export that does not exist is the most common runtime error.

Apply the Canvas generation policy below as you write, and complete its pre-delivery self-check (section 6) before returning the canvas.

Design guidance

Be creative. The SDK gives you expressive building blocks — use them in whatever combination best serves the content. But avoid slop: no gradients, no emojis, no box-shadows, no rainbow coloring. Cursor canvases are flat, minimal, and purposeful.

Visual hierarchy

Not everything deserves equal treatment. Primary content gets more space, larger headings, and accent color. Supporting content stays compact. Squint test: blur your eyes — can you tell what matters?

Color. All colors from useHostTheme() tokens — read its JSDoc in the SDK declarations for the return shape and usage pattern. No hardcoded hex. Use accent color deliberately, not on everything.

Slop patterns — forbidden

These specific patterns produce low-quality output. If 2+ are present, redesign.

  • Gradients — no linear-gradient, radial-gradient, background-clip: text.
  • Emojis — no emoji as icons, status indicators, bullets, or section markers.
  • Box shadows — no box-shadow. Flat surfaces only.
  • Wall of identical cards — every section wrapped in the same card style with no variation. Mix open sections with cards.
  • Rainbow coloring — a different color on every element. Most elements are neutral; color is used sparingly with purpose.
  • Giant text — font sizes above H1 (24px), or bold text stuffed in CardHeader.
  • Decorative borders — colored borders on every element. Borders are structural (subtle stroke tokens), not decorative.

Pre-delivery self-check

Before returning canvas code, verify:

  1. Does the layout have visual hierarchy? One thing should stand out.
  2. Is there variety in the composition? Not just a single column of uniform blocks.
  3. Slop check: scan for the forbidden patterns above.

Introducing the canvas

When you create a canvas, add a short note in your chat response telling the user you created a canvas they can open beside the chat:

  • First canvas — if no other .canvas.tsx files exist in the workspace's canvases/ directory, include one sentence explaining what a canvas is.
  • Unsolicited canvas — if the user didn't ask for a canvas, include one sentence explaining why you chose it over plain text.

Both can apply at once; one or two sentences total is enough. Skip the intro for subsequent canvases.

Troubleshooting

If a canvas appears blank or missing, the most common cause is that it was not written under /Users/<user>/.cursor/projects/<workspace>/canvases/ exactly — re-save it to that path. Do not debug this by trying to create the managed directory manually; focus on correcting the file path instead. Users can click the canvas file path in the response to open it, just like any other file path in Cursor. When present, the canvas server writes a <name>.canvas.status.json sidecar after each build with status, diagnostics, or error fields you can read; the file is best-effort and may not exist, so don't block on it.

Good example

import { Divider, Grid, H1, H2, Stack, Stat, Table, Text } from 'cursor/canvas';

export default function ServiceOverview() {
  return (
    <Stack gap={20}>
      <H1>Service Overview</H1>
      <Grid columns={3} gap={16}>
        <Stat value="6" label="Total Services" />
        <Stat value="5" label="Healthy" tone="success" />
        <Stat value="1" label="Degraded" tone="warning" />
      </Grid>
      <Divider />
      <H2>Service Status</H2>
      <Table
        headers={["Service", "Status", "Uptime", "Latency"]}
        rows={[
          ["api-gateway", "Operational", "99.99%", "12ms"],
          ["auth-service", "Degraded", "99.2%", "340ms"],
          ["billing", "Operational", "99.8%", "45ms"],
        ]}
        rowTone={[undefined, "warning", undefined]}
      />
      <Divider />
      <H2>Recent Changes</H2>
      <Text>Auth service latency increased after the 14:30 deploy.</Text>
      <Text tone="secondary" size="small">Last checked: Apr 7, 2026 14:52 UTC</Text>
    </Stack>
  );
}

Stats in a Grid, Table directly under H2, text sections without cards.

Bad example — do not imitate

// BAD — every section wrapped in Card, no hierarchy, Table unnecessarily boxed
<Stack gap={12}>
  <Card><CardHeader>Summary</CardHeader><CardBody><Text>6 services.</Text></CardBody></Card>
  <Card><CardHeader>Status</CardHeader><CardBody><Table headers={[...]} rows={[...]} /></CardBody></Card>
  <Card><CardHeader>Changes</CardHeader><CardBody><Text>Latency increased.</Text></CardBody></Card>
</Stack>

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

B2B サイトの戦略・情報設計。価値提案・メッセージマップ・ジャーニー導線・意思決定マップ・信頼棚卸・トーン/禁止表現まで一気通貫でテンプレ化する。実装前フェーズ専用(全PJ共通)。

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

babysit

免费

Keep a PR merge-ready by triaging comments, resolving clear conflicts, and fixing CI in a loop.

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

法人向けHTMLプレゼンスライドの実装エンジン。Claude Codeから指示書(アウトライン+テンプレート指定+カラー+コンテンツ)を受け取り、単一HTMLファイルとして実装する。43種テンプレート+14種アニメーション。トリガー:プレゼン実装、スライドHTML生成、提案資料コーディング。

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

Authors Cursor Rules (.cursor/rules/*.mdc) and custom Subagents (.cursor/agents/*.md or ~/.cursor/agents). Use when creating or refactoring rules/subagents, splitting large rules, choosing subagent vs skill, setting model/readonly/background, or replacing repeated delegation prompts.

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

Authors reusable Agent Skills (SKILL.md) for personal (~/.cursor/skills/) or project (.cursor/skills/) scope. Use when the user wants to create, split, or refactor a skill; standardize skill shape; or migrate repeated chat prompts into a skill. Complements Cursor's built-in create-skill in skills-cursor.

中文简介正在准备中。当前显示原文说明。

ax-inc-dev/claude-cursor-orchestration32026年4月25日 更新

查看 ax-inc-dev 的全部技能

报告此技能的问题