open-pencil
Figma の .fig デザインファイルや起動中の OpenPencil エディターを操作するスキルで、ノード構造の調査、デザイントークンの分析、画像・SVG・JSX のエクスポート、プログラムによるデザイン編集が可能です。.fig ファイルを開く・検査・エクスポート・編集したい場合や、OpenPencil アプリを制御したい場合に使用してください。
description の原文を見る
Work with Figma .fig design files and the running OpenPencil editor — inspect structure, query nodes, analyze design tokens, export images/SVG/JSX, and modify designs programmatically. Use when asked to open, inspect, export, analyze, or edit .fig files, or to control the running OpenPencil app.
SKILL.md 本文
OpenPencil
.fig デザインファイル用の CLI および MCP サーバー。2つの動作モード:
- アプリモード — 実行中の OpenPencil エディタに接続 (ファイル引数を省略)
- ヘッドレスモード — .fig ファイルで直接作業 (ファイルパスを指定)
# アプリモード — エディタで開いているドキュメントで動作
bun open-pencil tree
# ヘッドレスモード — .fig ファイルで動作
bun open-pencil tree design.fig
アプリは実行時に http://127.0.0.1:7600 でオートメーションブリッジを公開します。ファイルパスが指定されない場合、CLI は自動的に接続します。
CLI コマンド
検査
# ドキュメント概要 — ページ、ノード数、フォント
bun open-pencil info design.fig
# ノードツリー — 階層構造、タイプ、サイズを表示
bun open-pencil tree design.fig
bun open-pencil tree --page "Components" --depth 3 # アプリモード、特定ページ
# ページリスト
bun open-pencil pages design.fig
# 詳細なノードプロパティ — フィル、ストローク、エフェクト、レイアウト、テキスト
bun open-pencil node design.fig --id 1:23
bun open-pencil node --id 1:23 # アプリモード
# デザイン変数とコレクションリスト
bun open-pencil variables design.fig
bun open-pencil variables --collection "Colors" --type COLOR
検索
# 名前で検索 (部分一致、大文字小文字区別なし)
bun open-pencil find design.fig --name "Button"
# タイプで検索
bun open-pencil find --type FRAME # アプリモード
bun open-pencil find design.fig --type TEXT --page "Home"
# フィルタを組み合わせ
bun open-pencil find design.fig --name "Card" --type COMPONENT --limit 50
XPath クエリ
XPath セレクタを使用してノードを検索 — タイプ、属性、ツリー構造でフィルタリング:
# すべてのフレーム
bun open-pencil query design.fig "//FRAME"
# 幅が300px未満のフレーム
bun open-pencil query design.fig "//FRAME[@width < 300]"
# 名前に「Button」を含むテキスト
bun open-pencil query design.fig "//TEXT[contains(@name, 'Button')]"
# オートレイアウト付きコンポーネント
bun open-pencil query design.fig "//COMPONENT[@stackMode]"
# 深くネストされたもの — コンポーネント内のフレーム内のテキスト
bun open-pencil query design.fig "//COMPONENT//FRAME//TEXT"
# アプリモード
bun open-pencil query "//FRAME[@width > 1000]"
ノードタイプ: FRAME, TEXT, RECTANGLE, ELLIPSE, VECTOR, GROUP, COMPONENT, COMPONENT_SET, INSTANCE, SECTION, LINE, STAR, POLYGON, SLICE, BOOLEAN_OPERATION
エクスポート
# PNG (デフォルト)
bun open-pencil export design.fig -o hero.png
bun open-pencil export -o hero.png # アプリモード — 実行中のエディタからエクスポート
# 特定ノード 2倍サイズ
bun open-pencil export design.fig --node 1:23 -s 2 -o button@2x.png
# JPG 品質指定
bun open-pencil export design.fig -f jpg -q 85 -o preview.jpg
# SVG
bun open-pencil export design.fig -f svg --node 1:23 -o icon.svg
# JSX (OpenPencil 形式 — .fig に戻してレンダリング可能)
bun open-pencil export design.fig -f jsx -o component.jsx
# JSX (Tailwind — Tailwind クラス付き React コンポーネント)
bun open-pencil export design.fig -f jsx --style tailwind -o component.tsx
# ページサムネイル
bun open-pencil export design.fig --thumbnail --width 1920 --height 1080
# 特定ページ
bun open-pencil export --page "Components" -o components.png
分析
# カラーパレット — 使用頻度、類似色
bun open-pencil analyze colors design.fig
bun open-pencil analyze colors --similar --threshold 10 # アプリモード
# タイポグラフィ — フォントファミリー、サイズ、ウェイト
bun open-pencil analyze typography design.fig --group-by size
# スペーシング — ギャップとパディング値、グリッド準拠
bun open-pencil analyze spacing design.fig --grid 8
# クラスター — コンポーネント化できる繰り返しパターン
bun open-pencil analyze clusters design.fig --min-count 3
Eval (Figma Plugin API)
Figma Plugin API 全体を使用してドキュメントに対して JavaScript を実行:
# 読み取り専用 — ドキュメントをクエリ
bun open-pencil eval design.fig -c 'figma.currentPage.findAll(n => n.type === "TEXT").length'
# アプリモード — エディタのライブドキュメントを修正
bun open-pencil eval -c '
const buttons = figma.currentPage.findAll(n => n.name === "Button");
buttons.forEach(b => { b.cornerRadius = 8 });
buttons.length + " buttons updated"
'
# 修正してファイルに保存
bun open-pencil eval design.fig -w -c '
const texts = figma.currentPage.findAll(n => n.type === "TEXT");
texts.forEach(t => { t.fontSize = 16 });
'
# 別のファイルに保存
bun open-pencil eval design.fig -o modified.fig -c '...'
# stdin からコードを読み込み
echo 'figma.currentPage.children.map(n => n.name)' | bun open-pencil eval design.fig --stdin
eval 環境は Figma Plugin API で figma を提供: figma.currentPage, figma.createFrame(), figma.createText(), figma.getNodeById() など
JSON 出力
すべてのコマンドが --json でマシン読み取り可能な出力をサポート:
bun open-pencil info design.fig --json
bun open-pencil find --name "Button" --json # アプリモード
bun open-pencil analyze colors design.fig --json
MCP サーバー
Stdio (Claude Desktop, Cursor)
MCP 設定に追加:
{
"mcpServers": {
"open-pencil": {
"command": "npx",
"args": ["openpencil-mcp"]
}
}
}
HTTP (マルチセッション、リモート)
export PORT=3100
export OPENPENCIL_MCP_AUTH_TOKEN=secret # オプション認証
export OPENPENCIL_MCP_CORS_ORIGIN="*" # オプション CORS
export OPENPENCIL_MCP_ROOT=/path/to/files # ファイルアクセスを制限
npx openpencil-mcp-http
MCP ワークフロー
- ファイルを開く —
open_file { path: "/path/to/design.fig" }またはnew_document {} - クエリ —
get_page_tree,find_nodes,query_nodes,get_node,list_pagesなど - 検査 —
get_jsx(JSX ビュー),diff_jsx(構造的比較),describe(セマンティック分析),export_image(ビジュアルスクリーンショット) - 修正 —
render(JSX),set_fill,set_layout,create_shapeなど - 保存 —
save_file { path: "/path/to/output.fig" }
MCP ツール (全94個)
読み取り (14): get_selection, get_page_tree, get_node, find_nodes, query_nodes, get_components, list_pages, switch_page, get_current_page, page_bounds, select_nodes, list_fonts, get_jsx, diff_jsx
作成 (7): create_shape, render, create_component, create_instance, create_page, create_vector, create_slice
修正 (20): set_fill, set_stroke, set_effects, update_node, set_layout, set_constraints, set_rotation, set_opacity, set_radius, set_min_max, set_text, set_font, set_font_range, set_text_resize, set_visible, set_blend, set_locked, set_stroke_align, set_text_properties, set_layout_child
構造 (17): delete_node, clone_node, rename_node, reparent_node, group_nodes, ungroup_node, flatten_nodes, node_to_component, node_bounds, node_move, node_resize, node_ancestors, node_children, node_tree, node_bindings, node_replace_with, arrange_nodes
変数 (11): list_variables, list_collections, get_variable, find_variables, create_variable, set_variable, delete_variable, bind_variable, get_collection, create_collection, delete_collection
ベクトルとエクスポート (14): boolean_union, boolean_subtract, boolean_intersect, boolean_exclude, path_get, path_set, path_scale, path_flip, path_move, viewport_get, viewport_set, viewport_zoom_to_fit, export_svg, export_image
分析と検査 (8): analyze_colors, analyze_typography, analyze_spacing, analyze_clusters, diff_create, diff_show, describe, eval
ファイル (3): open_file, save_file, new_document
AI エージェント向けキーツール
query_nodes— XPath セレクタでノードを特定。全ツリー取得を避けられます。大規模ファイルに必須。get_jsx— 任意のノードを JSX として表示 (renderツールが受け付ける形式と同じ)。修正前の構造を理解するのに便利。diff_jsx— 2つのノード間の統合 diff。修正前後の比較や、類似コンポーネント間の差異発見に。describe— セマンティック分析: ノードの役割、ビジュアルスタイル、レイアウトプロパティ、潜在的デザイン問題。export_image— ノードを PNG にレンダリングして返却。修正後の視覚的検証に。
JSX レンダリング (render ツールまたは eval を経由)
1 回の呼び出しで完全なコンポーネントツリーを作成:
<Frame name="Card" w={320} h="hug" flex="col" gap={16} p={24} bg="#FFF" rounded={16}>
<Text size={18} weight="bold">Title</Text>
<Text size={14} color="#666">Description text</Text>
<Frame flex="row" gap={8}>
<Frame w={80} h={36} bg="#3B82F6" rounded={8} justify="center" items="center">
<Text size={14} color="#FFF" weight="600">Action</Text>
</Frame>
</Frame>
</Frame>
要素: Frame, Text, Rectangle, Ellipse, Line, Star, Polygon, Group, Section, Component
レイアウト省略記号:
| プロパティ | 意味 |
|---|---|
w, h | 幅、高さ (数値または "hug" / "fill") |
flex | "row" または "col" |
grid, columns, rows | CSS Grid — 例: columns="1fr 200px 1fr" |
gap, rowGap, columnGap | アイテム間隔 |
p, px, py, pt, pr, pb, pl | パディング |
justify | "start", "center", "end", "between" |
items | "start", "center", "end", "stretch" |
grow | Flex grow 係数 |
bg | フィル色 (16進) |
rounded, roundedTL/TR/BL/BR | コーナー半径 |
stroke, strokeWidth | ストローク色と太さ |
opacity | 0–1 |
rotate | 度数 |
overflow | "hidden" で子をクリップ |
shadow | "offsetX offsetY blur #color" |
blur | レイヤーぼかし |
size, weight, font, color, textAlign | テキストプロパティ |
colStart, rowStart, colSpan, rowSpan | グリッド子要素の位置 |
ノード ID
形式: session:local (例: 1:23)。ID は find, tree, query, node コマンドから取得。
ヒント
- ファイルパスを省略すると、実行中の OpenPencil エディタで開いているドキュメントで作業できます
infoで始めてドキュメント構造を把握tree --depth 2で出力に圧倒されない概要確認query "//COMPONENT"で XPath を使い再利用可能コンポーネントを発見query_nodes(MCP) で大規模ファイル内の必要なノードのみを検索 — 全ツリー取得を回避get_jsxで修正前のノード構造を確認- デザイン修正後は
export_imageで視覚的検証 analyze colors --similarで近似色を見つけてマージ--nodeで特定ノードをエクスポートするとページ全体より高速evalコマンドで CLI にない機能は Figma Plugin API 全体を活用可能- 出力を他ツールにパイプするときは
--jsonを使用 - アプリモードでの
eval修正はエディタのリアルタイム反映
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- open-pencil
- リポジトリ
- open-pencil/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/open-pencil/skills / ライセンス: MIT
関連スキル
nano-banana-2
inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」
octocode-slides
洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。
gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
nano-banana
Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。
oiloil-ui-ux-guide
モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。
axiom-hig-ref
Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。