WF2Des — 使い方
Summary
WF2Des は、ワイヤーフレームのフレームを Figma のネイティブなデザインに変換します。生成に使うのは、
そのプロジェクトに登録済みのコンポーネントとデザイントークンだけです。
新しい UI を描き起こすツールではありません。ワイヤーフレームの各部分をどの登録済みコンポーネントに
するかを判断し、レイアウトと文言を保ったまま、開いているファイル上に組み立てます。
事前準備
操作はすべて Figma プラグイン内で完結します。生成の前に以下を用意してください。
1. サインイン
Plabs アカウントでサインインします。プロジェクトの選択が必要です — デザインは常に、そのプロジェクトの レジストリとルールに基づいて生成されます。
2. デザインシステムを含むファイルを開く
生成に使うコンポーネントは、ワイヤーフレームと同じ Figma ファイル内に存在する必要があります。 開いているファイルで見つからないコンポーネントは配置できません。
3. ボードを準備する
セットアップでは 2 種類のボードを読み取ります。
| ボード | 内容 |
|---|---|
| コンポーネントボード | デザインシステムのコンポーネントセット(ボタン、フォーム項目、ヘッダー、カードなど) |
| ガイドラインボード | 記述されたルール(カラー、タイポグラフィ、スペーシング、コンポーネント別の用法) |
初回セットアップ
Setup タブを開きます。どちらの手順もキャンバスの選択を読み取るため、先にボードのフレームを 選択してください。
1. コンポーネントライブラリ
コンポーネントボードを選択し、Review sync → Confirm sync を実行します。
進行は Resolve → Sweep → Register → Save の 4 ステップで表示されます。選択したボード上の コンポーネントセットをすべて読み取り、バリアント、テキストスロット、サイズ、publish key を記録します。
Note
同期が Completed になった後、Figma から直接バリアント詳細を取得する 2 回目のパスが走ります。 選択したボードの全ノードを走査するため、大きなライブラリでは数分かかるのが正常です(処理中は 走査済みノード数が表示されます)。同期結果はすでに保存済みで、この処理は情報を追加するだけです。
確認方法: What's in the registry を開くと、ボード単位で登録内容が一覧表示されます。
2. デザインルールボード
ガイドラインボードを選択し、Review upload → Confirm upload を実行します。
進行は Render → Extract → Merge → Save で表示され、ルールセットの新しいリビジョンが作成されます。 過去のリビジョンは保持されます。Current rules & history でカラー・タイポグラフィ・スペーシングを確認でき、 Revert で任意のリビジョンに戻せます。
デザインを生成する
Generate タブを開きます。
- 変換したいワイヤーフレームのフレームを 1 つだけ選択します。複数選択やフレーム以外のノードは 受け付けられず、理由が表示されます。
- 必要に応じて Screen id を指定します。空欄の場合はフレーム名から導出されます。
- Generate design を押します。
進行は Trigger → Parse → Assemble → Build の 4 ステップです。parse と assemble はサーバー側、 build は開いているファイル内で実行されます。監視を停止(処理は継続) はいつでも押せます — 実行はサーバー側で 継続し、後から再接続できます。
完了すると Total / Placed / Unmatched が表示されます。
結果の読み方
| 表示 | 意味 |
|---|---|
| Placed | 登録済みコンポーネントから生成され、ワイヤーフレームの文言がスロットに配置された |
| Unmatched | レジストリに合致するものがなかった。破線のオレンジ枠で描画され、欠落が見えるようになる(黙って省略されることはない) |
| ワイヤーフレームに画像があった箇所の破線枠 | 本来は起きません。実画像はワイヤーフレームから自動的に複製されます。表示された場合、元ノードに画像塗りがありません |
| ワイヤーフレームより行数が増えたテキスト | 正常です。デザインシステムのフォントはワイヤーフレームのものと異なるため、縦に伸びます |
出力は 1 つのフレームで、単一の undo ステップとして構築されます(undo 1 回で丸ごと取り消せます)。 同じワイヤーフレームを再生成すると、横に増えるのではなく前回の出力を置き換えます。
うまくいかないとき
「Attached to a run already in progress…」と表示される
同じフレームに対する実行がまだ開いています。1 つのワイヤーフレームにつき同時に実行できるのは 1 件です。
完了しないまま残った実行は、キャンセルされるまで新規実行をブロックします。
「select exactly one frame」/「selected node is not a frame」
ワイヤーフレームは単一の FRAME である必要があります。グループや複数選択は受け付けられません。
すべてが破線枠になる
このプロジェクトのレジストリが空か、別のファイルを開いています。先にコンポーネント同期を実行し、
What's in the registry を確認してください。
コンポーネントは配置されるがバリアントが違う
レジストリはコンポーネントを把握していますが、どのバリアントを使うかの情報が不足しています。
コンポーネント同期を再実行し、各バリアントの内容を取得させてください。
更新後もプラグインの表示が古いまま
プラグインを一度閉じて開き直してください。UI はバンドルされているため、再読み込みで最新ビルドが反映されます。
このツールがしないこと
出力を正しく読むために、明示しておきます。
- コンポーネントを創作しません。デザインシステムに該当コンポーネントがないものは unmatched のままです。
- ワイヤーフレームの構造を作り直しません。レイアウト・順序・文言は意図的に保持されます — ワイヤーフレームが誤っていれば、デザインもそのとおり誤って再現されます。
- デザインレビューの代わりにはなりません。confidence とフラグは「確認すべき箇所」を示すものであり、 「正しさ」を保証するものではありません。
ローカル運用と評価
WF2Des は、プロジェクトのコンポーネントライブラリとデザインルールを使って、登録済み
Figma ワイヤーフレームをネイティブ Figma ノードへ変換します。このセクションはローカル運用、
診断、モデル評価を説明します。コマンドは guinness-ai-v2 ルートで実行してください。
前提条件
apps/wf2des/.env.exampleをapps/wf2des/.env.devにコピーし、Figma OAuth(推奨) またはFIGMA_PATと、必要なモデルプロバイダー認証情報を設定する。- ローカル backend/harness、port
4566の LocalStack、port27019のデータ投入済み Mongo を起動する。 - 一度
uv syncを実行する。
キュー済みジョブの処理
# Terminal 1: generation queue
uv run python -u apps/wf2des/scripts/consume_local.py
# Terminal 2: onboarding / component / actual-render review events
LOCAL_SQS_QUEUE_URL=http://localhost:4566/000000000000/wf2des-events \
LOCAL_SQS_VISIBILITY_TIMEOUT=1800 uv run python -u apps/wf2des/scripts/consume_local.py
ローカル plugin flow 全体には両方の bridge が必要です。1 つ目は generation、2 つ目は
registration、sweep、capture、および placement 後の visual review を処理します。どちらの
コマンドにも --once を追加すると現在取得できるメッセージを処理して終了します。これは
状態を変更する本番経路の実行で、SQS 消費、Figma 読み取り、モデル呼び出し、Mongo/S3
書き込み、ローカル status webhook 送信を行います。bridge は各メッセージ前に source mtime を
確認し、読み込み済みコードが古い場合は停止します。コード変更後は再起動してください。
安全な確認とリプレイ
| コマンド | 用途 | 変更とコスト |
|---|---|---|
uv run python apps/wf2des/scripts/inspect_local.py 1 7 |
collection 件数と tenant-scope record を確認 | 読み取り専用 |
uv run python apps/wf2des/scripts/replay_generation.py RUN_ID --output-dir /tmp/wf2des-replay |
元 run の pin 済み source/component/rule/model/prompt version で再 assembly | ローカルファイルのみ。DB/S3/webhook/ledger は非変更。model cost が発生し得る |
uv run python apps/wf2des/scripts/replay_generation.py RUN_ID --stored --output-dir /tmp/wf2des-replay |
再 assembly せず保存済み result を export | ローカルファイルのみ。model call なし |
uv run python apps/wf2des/scripts/review_render.py --help |
明示的な source/output PNG を本番 render reviewer で評価 | ローカルファイルのみ。DB/S3/queue/Figma は非変更。review model cost が発生し得る |
リプレイは元の pin を保持します。新しい source manifest を指定する場合は元 generation の リプレイではなく実験なので、output をそのように区別してください。
Registry メンテナンス
| コマンド | 用途 | 変更とコスト |
|---|---|---|
uv run python apps/wf2des/scripts/sweep_components.py "FIGMA_URL" 7 |
deterministic REST sweep を local design_component に実行 |
local Mongo と snapshot file を変更。LLM なし |
uv run python apps/wf2des/scripts/classify_slot_roles.py --org 1 --project 7 --dry-run |
content/placeholder 分類を preview | 書き込みなし。未分類文字列の model cost が発生 |
uv run python apps/wf2des/scripts/classify_slot_roles.py --org 1 --project 7 |
分類を保存 | project_figma_file.slot_roles を更新。model cost が発生 |
uv run python apps/wf2des/scripts/tag_component_semantics.py --org 1 --project 7 |
未設定 semantic tag を preview | registry 書き込みなし。model cost が発生し得る |
uv run python apps/wf2des/scripts/tag_component_semantics.py --org 1 --project 7 --apply |
component/variant の visual semantics を保存 | component registry を変更。vision-model cost が発生 |
モデル設定
本番 default は matching と whole-screen review に openai:gpt-5.4、vision ingestion に
openai:gpt-5.4-mini を使用します。model ID は provider prefix 付きで parse 時に pin されます。
Anthropic 直結は anthropic:... と ANTHROPIC_API_KEY を使います。OpenRouter は
OPENAI_BASE_URL=https://openrouter.ai/api/v1、OPENAI_API_KEY に OpenRouter token、
openai:anthropic/claude-sonnet-4.6 のような model を使います。非 GPT review model では
SCREEN_REVIEW_REASONING_EFFORT=none を設定してください。
ab_model_test.py は workspace/ab/ に local output を書く有料の評価ツールで、本番処理の
一部ではありません。
失敗時の動作
credit 枯渇、無効な認証/アクセス権、利用不能な設定 model は再配信では直りません。worker は failed artifact/manifest を記録し、安全な error を client に表示します。通常の rate limit と provider 5xx は retryable のまま SQS 再配信へ返します。
plugin の materialization diagnostics は別に記録されます。event 値は name_fallback、
ordinal_fallback、build_error、font_fallback、prop_rejected、unmatched、preserved です。