component-properties-figma について
component-properties-figmaは、Figmaコンポーネントのプロパティ定義とインスタンスへの適用を行うスキルです。プロパティAPIの作成に加え、スクリプトによるインスタンスの作成や更新に対応します。
主な機能
- 01コンポーネントプロパティの追加・編集・削除
- 02TEXT、BOOLEAN、INSTANCE_SWAP、VARIANTに対応
- 03コンポーネントのインスタンス化とバリアント選択
- 04既存インスタンスへのオーバーライド設定
- 05プロパティ定義の検証
活用シーン
- 01コンポーネントに設定項目を公開
- 02選択したバリアントでインスタンスを作成
- 03プロパティ経由でテキストや表示を更新
- 04スロット内のコンポーネントインスタンスを差し替え
MCP 対応
スクリプトでFigmaデザインシステムへの書き込みを行います。ネイティブMCPの読み取り専用get_design_contextおよびget_metadataでは扱わない作成・編集操作をカバーします。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ southleft/ skills-for-figma --skill component-properties-figmaインストール後、Claude Code で/component-properties-figmaを入力して読み込まれたか確認します。
同梱ファイルscripts/add-property.jsscripts/instantiate-and-set.js
詳細
component-properties-figma — コンポーネントの API を定義してインスタンス化する
関連する 2 つの作業です。
- コンポーネントのプロパティ API を作成する —
TEXT、BOOLEAN、INSTANCE_SWAP、VARIANTプロパティを追加・編集・削除して、コンポーネントに適切な操作項目を公開します(React コンポーネントの props に相当する Figma の機能です)。 - コンポーネントを使用する — インスタンスを作成して、そのプロパティ(ラベルのテキスト、ブール値の切り替え、バリアントの選択、サブインスタンスの差し替え)を設定します。
スキルの対象範囲
use_figmaのルール — 最初に公式のfigma-useスキルを読み込んでください。Figma Plugin API の完全なリファレンスです。スクリプトで依存する基本事項は、トップレベルのawaitとreturnを使ったプレーンな JS(IIFE やfigma.closePlugin()は使用しないこと。console.logの内容は返されません)、各スクリプトの先頭でconstとして入力値をインライン化すること、色を 0~1 の範囲で指定すること、テキスト操作の前にフォントを読み込むこと、await figma.getNodeByIdAsync(...)を使うこと、そしてアトミックエラー(スクリプトが失敗すると変更は何も適用されません。エラーを読み、修正して再試行してください)です。- コンポーネントの既存のプロパティ定義/ステートマシンを読み取るには →
analyze-component-set-figmaまたはdeep-component-figmaを使用してください。 - これらはデザインシステムの作成・編集のための書き込み操作です。ネイティブ MCP の
get_design_context/get_metadata(読み取り専用)では対応していません。
プロパティの種類
| 種類 | 制御する内容 | defaultValue | 備考 |
|---|---|---|---|
TEXT | テキストレイヤーの文字列のオーバーライド | "Label" | UI でテキストノードの文字列にバインドします |
BOOLEAN | レイヤーの表示/非表示 | true/false | レイヤーの表示状態にバインドします |
INSTANCE_SWAP | スロットに入れるサブコンポーネント | コンポーネントの キー | ピッカーに選択肢を表示するには preferredValues を渡します |
VARIANT | バリアントの軸(サイズ、状態など) | 1 つのオプション文字列 | COMPONENT_SET でのみ意味を持ちます |
ワークフロー — プロパティの作成
COMPONENT_SET(または単独のCOMPONENT)を対象にします。 個々のバリアントにはプロパティを追加できません。スクリプトはエラーを返し、親セットを使用するよう案内します。scripts/add-property.jsを使って 追加します(use_figma、skillNames: "component-properties-figma")。NODE_ID、PROPERTY_NAME、PROPERTY_TYPE、DEFAULT_VALUEを設定します。addComponentPropertyは#idサフィックス付きの名前を返すので、取得しておいてください。- 同じスクリプトの
editComponentProperty(name, {...})/deleteComponentProperty(name)を使って 編集/削除します(スクリプト内にコメントアウトされた例があります)。バリアント以外のプロパティを編集/削除する場合は、作成時に返されたサフィックス付きの名前を使用してください。 node.componentPropertyDefinitionsを再読み込みして確認します(スクリプトがこれを返します)。
ワークフロー — インスタンス化してインスタンスのプロパティを設定
- コンポーネントの識別情報を取得します。 公開済みライブラリの
componentKey(推奨)および/またはローカルのnodeIdを指定します。両方ある場合は両方渡してください。スクリプトはまずライブラリからのインポートを試し、次にローカルノードを試します。 scripts/instantiate-and-set.jsを実行します。COMPONENT_KEY/COMPONENT_ID、任意のVARIANT(例:{ Size: "md", State: "default" })、OVERRIDES、POSITION、PARENT_IDを設定します。- 同じスクリプトの
setPropertiesパスを使って、既存のインスタンスのプロパティを設定します。このパスではメインコンポーネントを読み込み、サフィックスなしの名前とName#idサフィックス付きの名前の両方を自動的に照合します。
補足
- インスタンスのプロパティキーには
#nodeIdサフィックスが付きます(TEXT/BOOLEAN/INSTANCE_SWAP の場合。例:"Label#12:3")。VARIANT プロパティは名前のみです。インスタンス化スクリプトはどちらの形式も解決するため、人が読める名前(Label)を渡せば、サフィックス付きのキーを見つけます。 - インスタンス内のテキストレイヤーを直接編集しても、エラーなしで失敗します。 必ず
setProperties/インスタンスプロパティを使い、ネストされたインスタンスのテキストノードで.charactersを設定しないでください。 componentKeyが機能するのは公開済みのコンポーネントだけです。ローカルまたは未公開のコンポーネントにはnodeIdを使用してください。
コメント
Markdown 対応