一键导入
resolve-figma-node
Figma nodeId の発見・検証スキル。画面名/ID から Figma 内の正しい nodeId と URL を特定・検証する。画面設計書の nodeId を信頼せず、PAT(REST API)で Figma 側を実際に確認する。MCP は使用しない。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Figma nodeId の発見・検証スキル。画面名/ID から Figma 内の正しい nodeId と URL を特定・検証する。画面設計書の nodeId を信頼せず、PAT(REST API)で Figma 側を実際に確認する。MCP は使用しない。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | resolve-figma-node |
| description | Figma nodeId の発見・検証スキル。画面名/ID から Figma 内の正しい nodeId と URL を特定・検証する。画面設計書の nodeId を信頼せず、PAT(REST API)で Figma 側を実際に確認する。MCP は使用しない。 |
| user-invocable | false |
| allowed-tools | Bash(curl -s -H *api.figma.com*), Bash(echo *), Bash(python3 *), Read, Glob, Grep, AskUserQuestion |
Figma REST API(PAT)で対象フレームを特定し、nodeId と Figma URL を検証・返却する。
画面設計書に記載された nodeId は古い・間違っている可能性があるため、必ず Figma 側で確認する。 MCP は使用しない(精度が低い出力を誤って使うリスクを避けるため)。
| ファイル名 | fileKey | 用途 |
|---|---|---|
| DaytonaPark_APP_Design_共有 | Yg2pMkry4klPFTMHxcM63F | デザイン(メイン)— UI 実装はこちらを参照 |
| アプリワイヤー | AgUnNptCnqo85esjicl2ne | 仕様・WF 参照 |
デフォルト fileKey: Yg2pMkry4klPFTMHxcM63F(デザインファイル)
FIGMA_PAT 環境変数が設定されていることfile_content:read スコープが付与されていること以下のいずれかを受け取る:
ei-gum_ホームタブ画面_LIMITED ITEMSタブ)6467:232879)— 検証対象https://www.figma.com/design/{fileKey}/...?node-id=6467-232879)以下の情報を返却する:
6467:232879)curl -s -H "X-Figma-Token: $FIGMA_PAT" "https://api.figma.com/v1/me"
https://www.figma.com/design/{fileKey}/{fileName}?node-id={int1}-{int2}node-id パラメータのハイフンをコロンに変換(6467-232879 → 6467:232879)Yg2pMkry4klPFTMHxcM63F を使用AgUnNptCnqo85esjicl2ne を使用curl -s -H "X-Figma-Token: $FIGMA_PAT" \
"https://api.figma.com/v1/files/{fileKey}/nodes?ids={nodeId}" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
if data.get('status'):
print(f'ERROR: {data[\"status\"]} - {data.get(\"err\", \"unknown\")}')
sys.exit(1)
nodes = data.get('nodes', {})
for nid, node_data in nodes.items():
doc = node_data.get('document') or {}
bbox = doc.get('absoluteBoundingBox', {})
print(json.dumps({
'nodeId': nid,
'name': doc.get('name', ''),
'type': doc.get('type', ''),
'width': bbox.get('width', 0),
'height': bbox.get('height', 0),
}, ensure_ascii=False))
"
検証結果:
curl -s -H "X-Figma-Token: $FIGMA_PAT" \
"https://api.figma.com/v1/files/{fileKey}?depth=2" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
if data.get('status'):
print(f'ERROR: {data[\"status\"]} - {data.get(\"err\", \"unknown\")}')
sys.exit(1)
search_name = sys.argv[1]
def find_frames(node, results):
if node.get('type') in ('FRAME', 'COMPONENT', 'COMPONENT_SET'):
name = node.get('name', '')
if search_name.lower() in name.lower():
bbox = node.get('absoluteBoundingBox', {})
results.append({
'nodeId': node['id'],
'name': name,
'type': node['type'],
'width': bbox.get('width', 0),
'height': bbox.get('height', 0),
})
for child in node.get('children', []):
find_frames(child, results)
results = []
find_frames(data.get('document', {}), results)
for r in results:
print(json.dumps(r, ensure_ascii=False))
" "{画面名}"
候補の選択:
AskUserQuestion で選択を求めるnodeId のハイフン形式: コロンをハイフンに変換(6467:232879 → 6467-232879)
Figma URL: https://www.figma.com/design/{fileKey}/{fileName}?node-id={ハイフン形式}
結果を返却:
nodeId: "6467:232879"
figmaUrl: "https://www.figma.com/design/Yg2pMkry4klPFTMHxcM63F/DaytonaPark_APP_Design_共有?node-id=6467-232879"
frameName: "ei-gum_ホームタブ画面_LIMITED ITEMSタブ"
frameSize: "390x812"
fileKey: "Yg2pMkry4klPFTMHxcM63F"
全てのエラーは即座に中断。フォールバックなし。
prepare-figma: デザイン仕様書作成時に nodeId を確定(impl-issue Phase 6)impl-issue Phase 11: UI 実装時に nodeId を再検証impl-issue Phase 12: 実装レビュー時に nodeId を再検証msg-sys 通信基盤(常駐 Codex セッションとの Stop フック経由の非同期往復)の上で、 Codex とのレビュー依頼・所見受領・修正・完了判定を駆動する。3モード(依頼/受信/再開)を持つ。 依頼モードのトリガー句: "msg-reviewでレビュー依頼", "Codexとレビュー往復したい", "常駐Codexにレビューを依頼", "msg-reviewを実行して", "Codexセッションにコードレビューを頼みたい"。 受信モードの起動契機(トリガー句ではなくメッセージ本文の形式で成立): Stop フックが差し戻した メッセージ本文の先頭が `[msg-review] <種別> review_id=<review_id> round=<n>` である。 再開モードのトリガー句: "msg-reviewを再開したい", "レビューの往復上限到達通知が来た、状況を確認して", "review_idの未解決所見を要約して", "msg-reviewの続きを確認したい"。
設計書から実装戦略を策定し、タスクを抽出して YAML 計画書を作成・更新する。レビュー+自動修正→commit まで一貫実行。 トリガー: "計画書作成", "計画開始", "start plan", "start planning"
計画書からタスクを選び、実装・レビュー・計画更新まで一貫して実行する。 トリガー: "実装開始", "タスク実行", "start implement"
コード・文書をレビューし、品質問題の発見から修正まで自動化できる。重大度 🔴🟡🟢 で分類。 --auto で修正まで一貫実行。code/requirement/design/plan/uxui/generic の6種別に対応。 トリガー: "レビュー", "review", "レビューして", "確認して"
GitHub Issue を軽量実装で進めるか forge の SDD フロー(start-requirements/start-design/start-plan)に委ねるかを判定するスキル。feature namespace の要否も判定する。トリガー:「このIssueをトリアージして」「Issueの進め方を判定して」「#N はどう進めるべきか判定して」
GitHub Issue の実装を準備から完了まで一貫して行う。triage の判定調査結果(仕様書・ルール・類似PR・既存コードの特定)を引き継ぎ、実装計画の策定・Issue への解決内容記載・実装・レビューまで進める。UI Issue の場合は Figma デザイン仕様書・実装設計書の作成、UI 実装、実装レビューまでカバーする。 `/anvil:triage-issue` が軽量実装と判定した Issue に対して Skill ツール経由でのみ起動される(ユーザーからの直接起動は不可)。