figma について
figmaは、Figmaのデザインデータ抽出とコード生成を支援するスキルです。Figma APIとfigma-export CLIでファイル、コンポーネント、スタイル、デザイントークンを取得し、ノードデータからReactコンポーネントを生成する手順も示します。
主な機能
- 01ファイルとノードデータの取得
- 02コメントとファイル版の取得
- 03色とタイポグラフィの抽出
- 04コンポーネントのSVGエクスポート
- 05スタイルのCSSエクスポート
- 06デザインノードからのコード生成
活用シーン
- 01Figmaファイル内のコンポーネント詳細の確認
- 02アイコンとスタイル素材のエクスポート
- 03プロジェクトへのデザイントークン同期
- 04デザインノードからのReactコンポーネント生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ johnlindquist/ claude --skill figmaインストール後、Claude Code で/figmaを入力して読み込まれたか確認します。
詳細
Figma 連携
Figma からデザインデータを抽出し、コードを生成します。
前提条件
Figma API トークン:
export FIGMA_ACCESS_TOKEN=figd_xxxxx
トークンの取得先:Figma > Settings > Account > Personal Access Tokens
任意:コンポーネント/スタイルのエクスポート用に figma-export CLI をインストールします:
bun add -g @figma-export/cli
CLI リファレンス(figma-export)
コンポーネントとスタイルをエクスポートするには、CLI を使用します。
コンポーネントのエクスポート
# Export components to SVG
figma-export components FILE_KEY -o ./output
# With config file
figma-export use-config .figmaexportrc.js
スタイルのエクスポート
# Export styles as CSS
figma-export styles FILE_KEY -o ./styles
設定ファイルの例
.figmaexportrc.js を作成します:
module.exports = {
commands: [
['components', {
fileId: 'YOUR_FILE_KEY',
onlyFromPages: ['Icons'],
outputters: [
require('@figma-export/output-components-as-svg')({
output: './icons'
})
]
}]
]
};
その後、次を実行します:
figma-export use-config
API リファレンス(curl)
ファイルの取得
FILE_KEY="your-file-key" # From Figma URL
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY" | jq
特定ノードの取得
NODE_ID="1:2" # Node ID from Figma
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$NODE_ID" | jq
画像の取得
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/images/$FILE_KEY?ids=$NODE_ID&format=png&scale=2" | jq
コメントの取得
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/comments" | jq
ファイルのバージョンの取得
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/versions" | jq
デザイントークンの抽出
スタイルの取得
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/styles" | jq
色の抽出
#!/bin/bash
FILE_KEY=$1
# Get file with styles
STYLES=$(curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY" | jq '.styles')
# Get style nodes
STYLE_IDS=$(echo $STYLES | jq -r 'keys | join(",")')
curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$STYLE_IDS" | \
jq '.nodes | to_entries | map(select(.value.document.type == "RECTANGLE")) |
map({
name: .value.document.name,
color: .value.document.fills[0].color
})'
タイポグラフィの抽出
curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY" | \
jq '[.. | objects | select(.type == "TEXT") |
{
name: .name,
fontFamily: .style.fontFamily,
fontSize: .style.fontSize,
fontWeight: .style.fontWeight,
lineHeight: .style.lineHeightPx
}] | unique'
コンポーネントの調査
コンポーネントの一覧表示
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/components" | jq
コンポーネントの詳細の取得
COMPONENT_ID="1:234"
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$COMPONENT_ID" | jq
コンポーネントを SVG としてエクスポート
curl -H "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/images/$FILE_KEY?ids=$COMPONENT_ID&format=svg" | jq -r '.images | to_entries[0].value'
コードの生成
AI によるデザインからコードへの変換
# Get component node
NODE=$(curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$NODE_ID" | jq '.nodes | to_entries[0].value')
# Generate code
gemini -m pro -o text -e "" "Generate React component code from this Figma data:
$NODE
Requirements:
- Use Tailwind CSS
- TypeScript with proper types
- Match dimensions and spacing
- Include all text content
- Handle responsive behavior"
余白の値の抽出
curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$NODE_ID" | \
jq '[.. | objects | select(.type == "FRAME") |
{
name: .name,
padding: {
top: .paddingTop,
right: .paddingRight,
bottom: .paddingBottom,
left: .paddingLeft
},
itemSpacing: .itemSpacing
}]'
ワークフローパターン
デザイントークンの同期
#!/bin/bash
# figma-sync-tokens.sh
FILE_KEY=$1
OUTPUT=${2:-"tokens.json"}
# Fetch and extract
curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY" | \
jq '{
colors: [.. | objects | select(.type == "RECTANGLE" and .name | startswith("color/")) |
{name: .name, value: .fills[0].color}],
typography: [.. | objects | select(.type == "TEXT" and .name | startswith("text/")) |
{name: .name, font: .style}]
}' > $OUTPUT
echo "Tokens saved to $OUTPUT"
アイコンのエクスポート
#!/bin/bash
# export-icons.sh
FILE_KEY=$1
OUTPUT_DIR=${2:-"./icons"}
mkdir -p $OUTPUT_DIR
# Get all icon components
ICONS=$(curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/files/$FILE_KEY/components" | \
jq -r '.meta.components[] | select(.name | startswith("icon/")) | .node_id')
for icon_id in $ICONS; do
# Get SVG URL
SVG_URL=$(curl -sH "X-Figma-Token: $FIGMA_ACCESS_TOKEN" \
"https://api.figma.com/v1/images/$FILE_KEY?ids=$icon_id&format=svg" | \
jq -r '.images | to_entries[0].value')
# Download
NAME=$(echo $icon_id | tr ':' '-')
curl -s "$SVG_URL" > "$OUTPUT_DIR/$NAME.svg"
echo "Exported: $NAME.svg"
done
ベストプラクティス
- URL のファイルキーを使用する -
figma.com/file/FILEKEY/... - レスポンスをキャッシュする - API にはレート制限があります
- ノード ID を使用する - ファイル全体より効率的です
- ビルド時に抽出する - 実行時ではなく
- トークンをバージョン管理する - デザインの変更を追跡します
- 抽出結果を検証する - Figma の構造はさまざまです
コメント
Markdown 対応