canicode について
canicodeは、デザイナーやコーディングエージェント向けにFigmaデザインを分析し、実装情報の不足を見つけて回答を仕様化し、デザインに書き戻します。
主な機能
- 0117項目の決定論的なデザイン検査
- 02不足する意図を確認する質問
- 03構造化アノテーションのFigmaへの書き込み
- 04スコア付きHTMLレポート
- 05CLIとMCPサーバー
活用シーン
- 01コード生成前にレスポンシブ動作の不足を確認
- 02Figmaファイルにインタラクションの詳細を記録
- 03CIでデザインの準備状況を確認
MCP 対応
オプションのcanicode MCPサーバーは、MCPクライアントにデザイン分析ツールを提供します。往復ワークフローでデザインを読み書きするには、Figma MCPサーバーも必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| input | string | いいえ | Figma URL。designData が指定されていない場合に使用します。FIGMA_TOKEN が必要です。 |
| token | string | いいえ | Figma API トークン(未指定の場合は FIGMA_TOKEN 環境変数を使用) |
| preset | enum | いいえ | 分析プリセットrelaxed | dev-friendly | ai-ready | strict |
| fileKey | string | いいえ | Figma ファイルキー(designData と併用してディープリンクを生成) |
| fileName | string | いいえ | Figma ファイル名(designData と併用して表示) |
| configPath | string | いいえ | ルールのオーバーライドに使用する設定 JSON ファイルのパス |
| designData | string | いいえ | Figma MCP get_metadata の Figma ノードデータ(XML または JSON)。Figma MCP を使用する場合は、input の代わりにこのデータを渡してください。 |
| targetNodeId | string | いいえ | 分析対象を特定のノード ID に限定します |
| customRulesPath | string | いいえ | カスタムルール JSON ファイルへのパス |
詳細
CanICode
CSSを学ばなくても、Figmaのデザインを意図したとおりに公開できます。
ブラウザーで試す — インストールは不要です。
canicodeでできること
Figmaでデザインを作成しました。どのように見え、動作すべきかは正確に把握しています。しかし、AIコード生成は推測するため、半分くらいは間違った推測をします。モバイルではカードが縦に並ばない。ホバー状態が消える。パディングが標準化される。私がデザインしたのはこういうものではありません。
canicodeは、FigmaファイルとAIコード生成の間にある実装前のヒアリングです。実装前に開発者が確認するような質問を、答えやすい言葉で尋ねます。
「デスクトップ幅では3枚のカードが横並びですが、画面が狭いときはどうしますか?」
「좁아지면 한 줄에 하나씩」(狭くなったら1行に1つずつ)/「縦に並べる」のように、普段の言葉で答えます。canicodeはその回答をコード生成に必要な正確な技術仕様に変換し、構造化された注釈としてFigmaファイルに書き戻します。これにより、次回の実行では推測する必要がなくなります。
Figmaを使ったまま作業できます。CSSセレクターを入力する必要はありません。意図がそのまま実装に反映されます。
→ 詳細な説明:docs/POSITIONING.md
3つのレイヤー
- リンター — 17個のルールで、デザインの感覚では気づいていても言葉にできない抜けを見つけます。「この余白、何か違う」という感覚から、ほかのカードが16pxなのに1枚だけ14pxのカードを特定します。
- Q&Aの仕組み — 抜けを見つけるたびに、開発者の言葉ではなく、あなたが使う言葉で質問します。回答すると、仕様に変換されます。
- 往復による永続化 — 回答はDev Modeの注釈としてFigmaファイルに保存されます。次回の実行でも、次の担当者でも、次のコード生成でも、意図を確認できます。
リンターは決定論的に動作するため、分析自体でLLMのトークンを消費しません。また、アブレーションテストで検証済みで、生のJSONと比べてトークンを5分の1に抑えながらピクセル精度94%を達成し、実際のFigmaデザインに基づいて調整済みです。
Claude Designとの違い
Claude Designは2026年4月に公開され、プロンプトからアプリへという流れを見事に実現しています。AIがプロンプトからデザインを作成し、その結果をClaude Codeに渡します。一方、canicodeは別のワークフローを対象としています。
| Claude Design | canicode | |
|---|---|---|
| 誰がデザインするか | AI(プロンプトから) | デザイナー(Figmaで) |
AIにデザインを任せたい場合は、Claude Designをお使いください。すでにデザインがあり、意図したとおりに実装したい場合は、canicodeが適しています。想定するデザインの担い手が異なるため、両者は競合しません。
詳しい説明(対象ユーザー、想定するワークフロー、canicodeが対象としないもの)は、docs/POSITIONING.mdをご覧ください。
ラウンドトリップのワークフロー
スキル: canicode-gotchas は、調査の回答を SKILL.md のみにローカルで保存します(メモ)。canicode-roundtrip は同じ分析プロセスに加えて、Figma に書き込みます(注釈/プロパティ)。記録のみの場合は gotchas を、デザインファイルを変更する場合は roundtrip を選んでください。
- 分析する — Figma デザインに対して17のルールを実行します(レポートには評価が含まれます)。
- gotchas を明らかにする — アナライザーは、推測できないデザイン情報について質問します(状態の不足、バリアントが不明確、レスポンシブ対応の意図)。
- Figma に修正を適用する —
/canicode-roundtripスキルはuse_figmaを介して回答を書き戻します。各書き込みは、3種類の結果マーカーのいずれかとともにサマリーに表示されます。- ✅ シーンへの書き込みに成功 — プロパティがシーンノードまたはインスタンスのオーバーライドに直接書き込まれました。
- 📝 シーンノードに注釈を追加 — プロパティを書き込む代わりに、スキルが構造化された注釈を残しました。インスタンスの子要素へのレイアウト書き込みでは、プロパティをコンポーネント定義(したがって、そのすべてのインスタンス)に反映するのはユーザーの意図に合わないことがほとんどなので、これがデフォルトです。📝 マーカーばかりのサマリーも正しい動作であり、失敗ではありません。
- 🌐 定義への書き込みが反映されました — プロパティがコンポーネント定義に書き込まれ、すべてのインスタンスに継承されました。ユーザーが事前に
allowDefinitionWriteでオプトインした場合にのみ発生します。
- 再分析する — gotchas が記録されている(注釈/確認応答)ことを検証します。新たな gotchas が見つかった場合は、手順2を繰り返します。
- 引き継ぐ —
figma-implement-designに引き継ぎます。canicode の範囲はデザインの拡張までです。Figma 公式のコード生成スキルが、整理されたデザインからコードを生成します。 - Code Connect のマッピングで締めくくる —
figma-implement-designの実行後、roundtrip は生成されたコードに問題がないかを尋ねます。yの場合、canicode は Code Connect のマッピングを登録し、Figma コンポーネントを生成したばかりのコードに関連付けます。これにより、このコンポーネントを含む画面で今後 roundtrip を行う際、マークアップを再生成せずに既存の実装が再利用されます。リポジトリで Code Connect が設定されていない場合はスキップされます — roundtrip は gotcha の調査を始める前にこれを事前に通知するため、先に前提条件をインストールするか、マッピングなしで続行するかを選べます。
30秒で試す
- ウェブアプリを開く — 任意の Figma URL を貼り付けると、レポートが表示されます。インストール不要、トークン不要、AI の利用料金もかかりません。これはリンター画面(Layer 1)で、単体でも役立ちます。
- その後、完全な Q&A ラウンドトリップを行いたい場合は、以下の 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/code-connectをインストールし、Figma のセットアップガイドに従ってリポジトリのルートにfigma.config.jsonを作成してから、canicode doctorを実行します。スキップしてもラウンドトリップは機能しますが、マッピングは登録されません。選択できるよう、事前に通知されます。
チェック内容
| カテゴリ | ルール数 | 測定内容 |
|---|---|---|
| ピクセル精度の重要項目 | 3 | AI がレイアウトを読み取れるか(Auto Layout、絶対配置、グループ) |
| レスポンシブ対応の重要項目 | 2 | さまざまなビューポートで動作するか(固定サイズ、サイズ制約) |
| コード品質 | 5 | AI のコンテキストにとってデザインが効率的か(コンポーネント、バリアント、ネスト、Code Connect のカバレッジ) |
| トークン管理 | 2 | AI が正確な値を再現できるか(生の値、スペーシンググリッド) |
| インタラクション | 2 | AI が動作を把握できるか(状態バリアント、プロトタイプ) |
| セマンティクス | 3 | AI が意味を推測できるか(セマンティックな名前、規約) |
各問題は、ブロッカー > リスク > 情報不足 > 提案に分類されます。
インストール — いずれか1つを選択
トークンの安全性: Figma トークンを Claude / Cursor /エージェントのチャットに貼り付けないでください。セッションログに残る可能性があります。CLI のプロンプト(
npx canicode init)、--token、またはFIGMA_TOKEN=…環境変数を使用してください。
以下の各行は、完全なインストール方法です。重複する用途をカバーするため、複数の方法を実行しないでください。
| 使用するもの… | インストール方法 |
|---|---|
| Claude Code(ラウンドトリップワークフローにおすすめ) | npx canicode init(TTY でトークンを対話形式で入力)または npx canicode init --token figd_xxxxxxxxxxxxx(CI /非 TTY)を実行すると、トークンを保存し、./.claude/skills/ に /canicode、/canicode-gotchas、/canicode-roundtrip スキルを配置します。スキルはすでに npx canicode … 経由で canicode を呼び出す方法を把握しているため、canicode MCP のインストールは不要です。ただし、/canicode-roundtrip の適用ステップには Figma MCP が引き続き必要です。下記の前提条件を参照してください。スキルを再インストールせずに後でトークンを更新するには、npx canicode config set-token を実行してください。 |
| Cursor / Claude Desktop /その他の MCP ホスト | ホストの MCP 設定に canicode を追加してください。詳しくは docs/CUSTOMIZATION.md を参照してください。例(Cursor のプロジェクトファイル):--package=canicode 経由で npx と canicode-mcp を使用します。 |
| OpenClaw /その他の AgentSkills 対応ホスト | スキルを手動でコピーしてください。詳しくはその他のエージェント(手動インストール)を参照してください。ドキュメントはベストエフォートで提供しており、サポートを約束するものではありません。 |
| 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を一度実行してインストールし、新しい MCP ツールを読み込むために Claude Code を再起動してください。
Claude Code Skills — インストールの詳細
# 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/ に3つのスキルを配置します。
- canicode — 軽量な CLI ラッパー(
/canicode <figma-url>を使用) - canicode-gotchas — 単独で使える注意点の調査(
/canicode-gotchas <figma-url>を使用) - canicode-roundtrip — 分析 → 注意点の調査 → 適用を行う完全なラウンドトリップ(
/canicode-roundtrip <figma-url>を使用)
インストールでは、合計7ファイルがコピーされます。上記の3つの SKILL.md ファイルに加え、ラウンドトリップの Step 4 の適用処理で使用する canicode-roundtrip のヘルパーファイル4つ(
helpers.js、helpers-bootstrap.js、helpers-installer.js、canicode-roundtrip-helpers.d.ts)です。CLI の概要に表示されるfiles installed: 7は、このファイル数を表しています。 明示的な呼び出し: SKILL.md のdescriptionフィールドは TRIGGER 条件を提示し、モデルが Figma URL を含むプロンプトを適切なスキルに自動でルーティングできるようにしていますが、ルーティングは非決定的です。確実に呼び出すには、/canicode <figma-url>、/canicode-gotchas <figma-url>、または/canicode-roundtrip <figma-url>を直接入力してください。スラッシュコマンドを使うと、モデルベースのルーティングを回避できます。
これらのスキルは analyze / gotcha-survey のために npx canicode … を実行するため、canicode MCP サーバーのインストールは任意です(どちらの方法でも同じ形状の JSON が生成されます)。ただし、apply ステップ(/canicode-roundtrip のステップ 4)には Figma MCP サーバーが必要です。上記の前提条件に関する注記をご覧ください。
フラグ:--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
canicode MCP ツールを新しいセッションに表示するには、Claude Code を再起動するか、MCP を再読み込みしてください(Cursor)。
次のように尋ねてください:「この 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 を使わず、サーバーごとに個別のトークンが必要な場合は、呼び出し元のシェルで代わりにエクスポートしてください:export FIGMA_TOKEN=figd_xxxxxxxxxxxxx。
Cursor / Claude Desktop の設定については、docs/CUSTOMIZATION.md をご覧ください。特に、docs/CUSTOMIZATION.md#cursor-mcp-canicode の 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, Collab | 6 件/月 | 6 件/月 |
| Dev, Full | 6 件/月 | 10–20 件/分 |
429 エラーが発生しますか?ファイルが有料ワークスペースにあることを確認してください。または、フィクスチャを一度保存し、ローカルで分析してください。詳細はこちら
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 のデザインを共有**してください。
サポート
- バグや質問: GitHub Issues
- プライバシー: データの収集とオプトアウトの方法については、PRIVACY.mdをご覧ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。