figma-blame-node について
figma-blame-node は、二分探索で Figma のバージョン履歴を調べ、コンポーネントプロパティや子孫ノードが初めて現れたバージョンを特定するシェルベースのスキルです。バージョンと作者の情報に加え、帰属の確実性も返します。
主な機能
- 01二分探索によるバージョン履歴の検索
- 02コンポーネントプロパティまたは子ノードの追跡
- 03バージョンラベル・作者・日時の取得
- 04帰属の確実性とプローブ数の表示
- 05自動保存の包含・除外
活用シーン
- 01コンポーネントプロパティの追加時期の特定
- 02子ノードを導入したバージョンの特定
- 03帰属の確実性や検索範囲の確認
- 04自動保存を含めるか選んで履歴を検索
MCP 対応
MCP サーバーではなくスキルです。README では、個人アクセストークンを使ってシェルから Figma REST API を呼び出す方法を説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ southleft/ figma-console-mcp-skills --skill figma-blame-nodeインストール後、Claude Code で/figma-blame-nodeを入力して読み込まれたか確認します。
同梱ファイルscripts/blame-node.mjs
詳細
figma-blame-node — 変更を導入したバージョンを二分探索する
git blame の Figma 版です。ノードと対象(componentPropertyDefinitions のキー、または子孫ノード ID)を指定すると、対象を最初に導入したバージョンを特定し、そのバージョンのラベル、作成者のハンドル、タイムスタンプを返します。
セットアップ — ターミナルとトークンが必要です。 このスキルはシェルコマンドを実行するため、Claude Code(Claude Desktop 内の「Code」タブを含む)、Cursor、Codex、Gemini CLI で動作します。通常の Claude Desktop や claude.ai のチャットでは動作しません(シェルがありません)。Figma コネクターの OAuth ログインではこれらの REST API 呼び出しを認証できないため、ご自身の Figma パーソナルアクセストークンを用意する必要があります。Figma で Settings → Security → Personal access tokens を開き、File content: read(および File versions: read)のスコープを付与してトークンを生成し、シェルで設定してください:
export FIGMA_TOKEN="figd_…"。スクリプトは実行時に環境変数から読み取ります。トークンをスキルファイルに記載しないでください。
二分探索を使う理由
単純な探索では、各バージョンのノードを取得するため、バージョン数が N なら API 呼び出しが N 回必要です。対象の存在は単調です(一度追加されると、HEAD までの新しいすべてのバージョンに存在します)。そのため、二分探索を行います。中間点を調べ、対象が存在するかを確認してから、古い側か新しい側に絞り込みます。呼び出しは約 log2(N) 回で済みます。たとえば、200 バージョンなら 200 回ではなく約 8 回のプローブで済みます。Figma REST API はトークンごとにレート制限があり、古いスナップショットは不変なので、プローブ回数が少ないほど確実に有利です。
セットアップとスキルの境界
- すべてのリクエストは
https://api.figma.comに対してX-Figma-Token: $FIGMA_TOKENを使用します。
ファイルキーを特定する
FILE_KEY=$(echo "$FILE_URL" | sed -E 's#.*/(design|file)/([A-Za-z0-9]+).*#\2#')
ワークフロー
-
ノードと対象を特定します。
node_idは通常 COMPONENT_SET です。対象は次のいずれか一つだけです。--property '<key>'—Disabled#1:2のようなcomponentPropertyDefinitionsのキー、または--child '<node_id>'—node_idの配下に存在するはずの子孫ノード ID。
検索範囲を絞り込む場合や ID を確認する場合は、先にバージョン一覧を取得してください。
../figma-version-history/scripts/list-versions.sh ABC123def456 --autosaves -
scripts/blame-node.mjsで blame 検索を実行します。# When was a component property first added? node scripts/blame-node.mjs --file ABC123def456 --node 695:313 --property 'Disabled#1:2' # When was a child node first added under a component set? node scripts/blame-node.mjs --file ABC123def456 --node 695:313 --child 695:340 # Bound the lookback and start from a specific version instead of HEAD node scripts/blame-node.mjs --file ABC123def456 --node 695:313 --property 'Size#9:0' \ --start 4096800000 --max 100 --no-autosavesJSON が出力されます。対象を導入したバージョン(
version_id、label、user_handle、created_at)、attribution_certainty、および呼び出し回数の少なさを確認できるprobes_madeが含まれます。
結果の読み方
attribution_certainty は、結果をどの程度信頼できるかを示します。
exact— 実在するバージョンが対象を導入し、作成者を特定できます。system_attributed— 対象を導入したバージョンは、システムによる自動保存でした(user = "Figma")。変更を含む最も近いラベル付きバージョンに合わせるには、--no-autosavesを指定して再実行してください。exists_at_lookback_horizon— スキャンした最古のバージョンにも対象が存在するため、実際に導入されたのは検索範囲より前です。--maxを増やしてください。metadata_unavailable— 対象は--start自体で導入されていますが、バージョン一覧をさかのぼっても作成者のメタデータが見つかりませんでした。対象の導入は確かですが、REST API からユーザーを特定することはできません。
注意事項と制限
- 単調性の前提: 二分探索では、対象は一度追加されたら削除されないと仮定します。追加後に削除され、再度追加された場合、報告される導入ポイントは後の再追加時になる可能性があります。
--startには対象が存在している必要があります。 「これがいつ導入されたか」を調べるため、検索開始時のバージョン(デフォルトは HEAD/current)に対象が存在している必要があります。削除されたものを追跡するには、まだ存在していた時点の--startを選んでください。- より細かく特定できるよう、自動保存はデフォルトで含まれます(多くの自動保存には実際のユーザーが記録されています)。人がラベルを付けたバージョンだけを対象にするには、
--no-autosavesを指定してください。 - 検索中の
404は通常、プローブしたversion_idが保存期間の制限により削除されたことを意味します。再実行してください。検索ではノードが見つからないバージョンを許容し、スキップします。