mcpField
C
canicode

canicode

本地服务
github.com/let-sunny开发工具1020 周前更新

关于 canicode

canicode 面向设计师和编码 Agent 分析 Figma 设计,发现实现信息缺口,并将回答整理为规格写回设计文件。

主要功能

  1. 0117 项确定性设计检查
  2. 02针对缺失意图提问
  3. 03将结构化注释写入 Figma
  4. 04带评分的 HTML 报告
  5. 05CLI 和 MCP 服务

适用场景

  1. 01在生成代码前发现响应式行为缺口
  2. 02在 Figma 文件中记录交互细节
  3. 03在 CI 中检查设计就绪情况

MCP 相关

可选的 canicode MCP 服务向 MCP 客户端提供设计分析工具。往返工作流还需要 Figma MCP 服务来读取和写入设计数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"let-sunny-canicode": {
"command": "npx",
"args": [
"-y",
"canicode"
],
"env": {
"FIGMA_TOKEN": "<FIGMA_TOKEN>"
}
}
}
}
启动命令npx -y canicode
需要配置的环境变量
FIGMA_TOKEN密钥Figma personal access token for REST API access and comment posting

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcanicode0.5.2

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
inputstring否Figma URL。未提供 designData 时使用。需要 FIGMA_TOKEN。
tokenstring否Figma API 令牌(若未提供,则使用 FIGMA_TOKEN 环境变量)
presetenum否分析预设relaxed | dev-friendly | ai-ready | strict
fileKeystring否Figma 文件密钥(与 designData 配合使用以生成深层链接)
fileNamestring否Figma 文件名(与 designData 配合使用以供显示)
configPathstring否用于规则覆盖的配置 JSON 文件路径
designDatastring否来自 Figma MCP get_metadata 的 Figma 节点数据(XML 或 JSON)。使用 Figma MCP 时,请传入此数据,而不是 input。
targetNodeIdstring否将分析范围限定为指定的节点 ID
customRulesPathstring否自定义规则 JSON 文件的路径

详细介绍

CanICode

CanICode

npm 版本 Figma 插件 CI Release

无需学习 CSS,就能让 Figma 设计稿如你所愿地落地。

在浏览器中试用 — 无需安装。

CanICode 报告


canicode 的功能

你在 Figma 中完成了设计,也清楚它应该呈现什么样子、如何运作——但 AI 代码生成总靠猜,而且十有八九会猜错。卡片在移动端没有堆叠排列,悬停状态消失了,内边距被统一调整。这不是我设计的样子。

canicode 是你的 Figma 文件与 AI 代码生成之间的实现前访谈。它会像开发者在实现前那样提出问题,而且使用通俗易懂的语言:

“这三张卡片在桌面宽度下并排显示——屏幕变窄时应该怎么办?”

你用日常语言回答(“좁아지면 한 줄에 하나씩” / “变窄后每行显示一张”)。canicode 会将答案转化为代码生成所需的精确技术规范,并将其作为结构化注释写回 Figma 文件,这样下次运行时就不必再猜了。

你只需留在 Figma 中,无需输入 CSS 选择器。设计意图就能落实。

→ 完整论述:docs/POSITIONING.md

三个层面
  1. Linter — 17 条规则会揭示那些你凭专业直觉察觉到、却说不清的问题。“这个间距好像不太对。” → 它会找出那张内边距为 14px、而其他卡片都是 16px 的卡片。
  2. 问答引导 — 针对每个问题,canicode 都会用你的词汇而非开发者的术语提问。你来回答,它负责将答案转化为规范。
  3. 往返持久化 — 答案会作为 Dev Mode 注释保存在 Figma 文件中。下次运行、交给下一个人、使用下一款代码生成工具时,都能看到设计意图。

Linter 的分析是确定性的(分析本身不会消耗 LLM 令牌),在消耗量比原始 JSON 少 5 倍的情况下,像素准确率经消融验证达到 94%,并且还通过真实 Figma 设计进行了校准。


为什么选择 canicode(而不是 Claude Design)

Claude Design 于 2026 年 4 月推出,出色地覆盖了提示词 → 应用的流程——AI 根据你的提示词进行设计,并将结果交给 Claude Code。canicode 覆盖的是另一种工作流:

Claude Designcanicode
谁来设计AI(根据提示词设计)设计师(在 Figma 中设计)

如果你希望 AI 替你设计,请使用 Claude Design。如果你已经完成设计,希望它完全按你的意图实现,那么 canicode 就适合你。两者并非竞争关系——它们对设计由谁负责有不同的假设。

完整论述(目标用户、工作流假设,以及 canicode 不适用于哪些情况)请参阅 docs/POSITIONING.md。


往返工作流

技能: canicode-gotchas = 调查答案仅保存在 SKILL.md 中的本地(备忘)。canicode-roundtrip = 使用相同的分析路径,外加写入 Figma(注释/属性)。只需记录问题时选择 gotchas;需要修改设计文件时选择 roundtrip。

  1. 分析 — 根据 Figma 设计运行 17 条规则(报告包含评级)。
  2. 提出问题 — 分析器会针对无法推断的设计信息提出问题(缺失的状态、不明确的变体、响应式设计意图)。
  3. 将修复应用到 Figma — /canicode-roundtrip 技能通过 use_figma 将答案写回。每次写入都会在摘要中显示以下三种结果标记之一:
    • ✅ 场景写入成功 — 属性已直接写入场景节点或实例覆盖项。
    • 📝 已为场景节点添加注释 — 技能添加了结构化注释,而不是写入属性。对于实例子级布局写入,这是默认做法,因为将属性传播到组件定义(进而传播到它的每个实例)几乎从来都不是用户想要的。摘要中满是 📝 标记是正确行为,而不是失败。
    • 🌐 定义写入已传播 — 属性已写入组件定义,且每个实例都继承了该属性。仅当用户预先选择启用 allowDefinitionWrite 时才会发生。
  4. 重新分析 — 验证问题是否已记录(注释/确认);如果出现新问题,则重复第 2 步。
  5. 交接给 figma-implement-design — canicode 的工作范围到增强设计为止。Figma 官方代码生成技能会接手已整理好的设计并生成代码。
  6. 通过 Code Connect 映射收尾 — figma-implement-design 返回后,roundtrip 会询问生成的代码是否令人满意。若回答 y,canicode 会注册一个 Code Connect 映射,将 Figma 组件指向刚生成的代码,这样后续处理包含此组件的界面时,roundtrip 会复用已有实现,而不是重新生成标记。如果你的仓库尚未设置 Code Connect,则会跳过此步骤 — roundtrip 会在问题调查开始前提前提醒你,让你决定是先安装前置条件,还是不创建映射直接继续。

30 秒快速体验

  1. 打开 Web 应用 — 粘贴任意 Figma URL,即可获取报告。无需安装、无需令牌,也不会产生 AI 费用。这是 Linter 视图(第 1 层),单独使用也很有帮助。
  2. 如果你想使用完整的问答往返流程,再安装下方的 Claude Code 技能。

运行完整往返流程(Claude Code)

npx canicode init
# saves your Figma token + installs /canicode-roundtrip
# (the prompt asks for the token; never paste it into agent chat)

/canicode-roundtrip https://www.figma.com/design/ABC123/MyDesign?node-id=1-234
# in your Claude Code session

往返流程会调用 Figma MCP 服务来读取和写入你的设计 — 运行 claude mcp add -s project -t http figma https://mcp.figma.com/mcp 安装一次,然后重启 Claude Code。

Cursor / Claude Desktop / 其他 MCP 宿主:同样支持。CLI 安装方式(npx canicode init --cursor-skills)、裸 MCP 服务安装方式、用于 CI 门禁的 GitHub Action 以及其他渠道,都列在下方的安装矩阵中。

可选 — Code Connect(用于收尾步骤 6 的映射):根据 Figma 的设置指南,安装 @figma/code-connect,并在仓库根目录创建 figma.config.json,然后运行 canicode doctor。如果跳过这一步,往返流程仍然可以正常运行 — 只是不会注册映射。它会提前提醒你,让你自行决定。


检查内容

类别规则数衡量内容
像素关键项3AI 能否读懂布局?(自动布局、绝对定位、分组)
响应式关键项2能否适配不同视口?(固定尺寸、尺寸约束)
代码质量5设计是否便于 AI 理解上下文?(组件、变体、嵌套、Code Connect 覆盖率)
令牌管理2AI 能否还原精确值?(原始值、间距网格)
交互2AI 能否了解交互效果?(状态变体、原型)
语义3AI 能否推断含义?(语义名称、约定)

每个问题都会分类为:阻塞项 > 风险 > 缺失信息 > 建议。


安装 — 任选一种

令牌安全: 切勿将 Figma 令牌粘贴到 Claude / Cursor / Agent 聊天中——会话日志可能会保留该令牌。请使用 CLI 提示(npx canicode init)、--token 或 FIGMA_TOKEN=… 环境变量。

以下每一行都是一套完整的安装方式。请勿运行多种方式——它们涵盖的用途有所重叠。

如果你使用……安装方式
Claude Code(推荐用于往返工作流)npx canicode init(在 TTY 中交互式输入令牌)或 npx canicode init --token figd_xxxxxxxxxxxxx(CI / 非 TTY)——保存令牌,并将 /canicode、/canicode-gotchas、/canicode-roundtrip 技能安装到 ./.claude/skills/。这些技能已知道如何通过 npx canicode … 调用 canicode,因此无需安装 canicode MCP;但 /canicode-roundtrip 的应用步骤仍需要 Figma MCP——请参阅下方的前置条件。之后若要轮换令牌而不重新安装技能:npx canicode config set-token。
Cursor / Claude Desktop / 其他 MCP 宿主将 canicode 添加到宿主的 MCP 配置中——请参阅 docs/CUSTOMIZATION.md。示例(Cursor 项目文件):通过 --package=canicode 使用 npx 和 canicode-mcp。
OpenClaw / 其他兼容 AgentSkills 的宿主手动复制技能——请参阅其他 Agent(手动安装)。文档尽力提供参考,不构成支持承诺。
仅使用 CLI(CI、脚本)无需安装。npx canicode analyze "<figma-url>" 可直接运行。如果希望将令牌保存到 ~/.canicode/config.json,请运行一次 canicode init --token …。之后若要轮换令牌,请使用 canicode config set-token(无需重新安装技能)。

获取令牌: Figma → Settings → Security → Personal access tokens → Generate new token。Figma 的 PAT 文档 权限范围: canicode 只需只读权限。 有效期: 令牌默认有效期为 90 天;生成令牌时请查看下拉菜单。

往返流程的前置条件: /canicode-roundtrip 技能会调用 Figma MCP 服务来读取和写入设计。请运行一次 claude mcp add -s project -t http figma https://mcp.figma.com/mcp 安装,然后重启 Claude Code,以加载新的 MCP 工具。

Claude Code 技能 — 安装详情
# Interactive (TTY) — prompts for the token, never paste it into agent chat
npx canicode init

# Non-interactive (CI / non-TTY) — token via env or --token only
FIGMA_TOKEN=figd_xxxxxxxxxxxxx npx canicode init
npx canicode init --token figd_xxxxxxxxxxxxx

会将三项技能安装到 ./.claude/skills/:

  • canicode — 轻量级 CLI 封装工具(使用 /canicode <figma-url>)
  • canicode-gotchas — 独立的常见问题检查(使用 /canicode-gotchas <figma-url>)
  • canicode-roundtrip — 完整的分析 → 常见问题检查 → 应用往返流程(使用 /canicode-roundtrip <figma-url>)

安装过程总共会复制 7 个文件——上述三个 SKILL.md 文件,以及四个 canicode-roundtrip 辅助文件(helpers.js、helpers-bootstrap.js、helpers-installer.js、canicode-roundtrip-helpers.d.ts),供往返流程第 4 步的应用路径使用。CLI 摘要中的 files installed: 7 表示此文件数量。 显式调用: SKILL.md 的 description 字段会说明触发条件,以便模型自动将 Figma URL 提示路由到相应技能,但路由并非确定性的。如需确定性调用,请直接输入 /canicode <figma-url>、/canicode-gotchas <figma-url> 或 /canicode-roundtrip <figma-url>——斜杠命令会绕过基于模型的路由。

这些技能会调用 npx canicode … 来执行 analyze / gotcha-survey,因此安装 canicode MCP 服务是可选的(两种方式都会生成相同结构的 JSON)。不过,apply 步骤需要 Figma MCP 服务(/canicode-roundtrip 中的步骤 4);请参阅上方的先决条件说明。

标志:--global 会改为安装到 ~/.claude/skills/。--cursor-skills 还会在 .cursor/skills/ 下安装 Cursor 副本。--force 会覆盖现有技能文件,且不提示确认。运行 canicode docs setup 查看完整的设置指南。

如需管理已保存的配置,而不重新安装技能:

canicode config set-token   # rotate Figma token (interactive on TTY; --token for CI)
canicode config show        # masked token + config + reports paths
canicode config path        # absolute path to ~/.canicode/config.json
MCP Server — 安装详情
claude mcp add canicode -- npx --yes --package=canicode canicode-mcp

重启 Claude Code 或重新加载 MCP(Cursor),以便在新会话中显示 canicode MCP 工具。

然后询问:“分析这个 Figma 设计:https://www.figma.com/design/...”

canicode 的规则引擎会分析设计数据,AI 助手只负责协调调用。MCP 服务会从 ~/.canicode/config.json(通过 canicode init --token … 设置)或宿主环境中读取 FIGMA_TOKEN,因此无需在 claude mcp add 中传入 -e FIGMA_TOKEN=…,而且当前解析器也会拒绝该参数。

如果确实需要为单个服务设置令牌,而不使用 canicode init,请在调用命令的 shell 中导出令牌:export FIGMA_TOKEN=figd_xxxxxxxxxxxxx。

Cursor / Claude Desktop 配置请参阅 docs/CUSTOMIZATION.md——尤其是 Cursor MCP (canicode) 和用于端到端验证 gotcha-survey 的 手动测试清单。

CLI — 安装详情
npx canicode analyze "https://www.figma.com/design/ABC123/MyDesign?node-id=1-234"

传入 --ready-min-grade <S|A+|A|B+|B|C+|C|D|F>,可覆盖代码生成就绪度阈值(默认值:A)。

设置:运行 npx canicode init(交互式提示;TTY)或 npx canicode init --token figd_xxxxxxxxxxxxx(CI / 非 TTY),即可保存令牌并将 Claude Code 技能安装到 ./.claude/skills/。之后可通过 npx canicode config set-token 轮换令牌。

Figma API 速率限制——速率限制取决于文件所在位置,而不仅仅是你的套餐。

席位Starter 套餐中的文件Pro/Org/Enterprise 中的文件
View、Collab6 次请求/月6 次请求/月
Dev、Full6 次请求/月10–20 次请求/分钟

遇到 429 错误?请确认文件位于付费工作区中。也可以先保存一次 fixture,然后在本地分析。完整详情

GitHub Action
- uses: let-sunny/[email protected]
  with:
    figma_url: 'https://www.figma.com/design/ABC123/MyDesign?node-id=1-234'
    figma_token: ${{ secrets.FIGMA_TOKEN }}
    min_score: 70

将分析结果作为 PR 评论发布。如果评分低于阈值,则操作失败。请在 Marketplace 查看 canicode-action。


自定义

内容方法
预设--preset relaxed | dev-friendly | ai-ready | strict
配置覆盖项--config ./config.json——调整评分、严重程度、排除节点
分析范围--scope page | component——当以 COMPONENT 为根的设计应按页面分析(或反之)时,覆盖自动检测

完整指南、示例和所有可用选项请参阅 docs/CUSTOMIZATION.md。


开发

git clone https://github.com/let-sunny/canicode.git && cd canicode
pnpm install && pnpm build
pnpm dev        # watch mode
pnpm test       # run tests
pnpm lint       # type check

架构详情请参阅 CLAUDE.md。校准流程请参阅 Calibration wiki。

贡献

分享你的 Figma 设计,帮助根据真实设计校准评分。

支持

  • Bug 和问题:GitHub Issues
  • **隐私:**有关数据收集和如何选择退出的详情,请参阅 PRIVACY.md

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。