image-to-code について
選択した画像、スクリーンショット、モックアップ、Figma フレームを、インタラクティブなウェブサイトやウェブアプリとして再現するスキルです。素材作成、実装、ブラウザー検証、デザイン QA を行い、合格後に引き渡します。
主な機能
- 01正確なビジュアル参照の特定
- 02画像素材の整理と生成
- 03インタラクティブなウェブ体験の構築
- 04ブラウザー検証とデザイン QA
- 05QA レポート合格後の引き渡し
活用シーン
- 01選択したモックアップをウェブサイトに再現
- 02スクリーンショットから操作可能なプロトタイプを作成
- 03引き渡し前の見た目と操作性の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openai/ role-specific-plugins --skill image-to-codeインストール後、Claude Code で/image-to-codeを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
画像からコードへ
視覚的なターゲット画像を、高品質でインタラクティブなウェブサイトまたはウェブアプリに変換します。
重要な上書き指示
- 作業を始める前に、プラグインルーター $index を参照してください。
- $critical-overrides に従ってください。
ユーザーコンテキスト
作業を始める前に、$user-context を読み込み、ローカルシェルを利用できる場合はそのプリフライトスクリプトを実行してください。
保存済みの製品 URL、Figma ファイル、スクリーンショット、参考画像、コードベースのパス、Storybook、トークン、デザインシステム、ブランド素材、コンポーネントの参照資料、ブラウザー設定、共有先を、関連する場合は根拠として活用してください。
保存されている参考資料をすべて確認する必要はありません。現在のタスクに必要なものだけを確認してください。
[IMPORTANT] ChatGPT Work Mode でのプロトタイプのプレビュー
sites-preview の起動は検証ではありません。検証では、クラウドブラウザーで http://terminal.local:4173/ を開き、表示されたページを確認し、主要なインタラクションをテストし、ブラウザーのコンソールエラーを確認して、デザイン QA に合格する必要があります。
HTTP ヘルスチェック、ビルドの成功、プレビューサービスのステータス、デプロイの成功を、ブラウザーでの検証の代わりにしてはいけません。クラウドブラウザーを使用できない場合は、検証がブロックされていると報告してください。
ChatGPT Work Mode でローカルプロトタイプの検証とデザイン QA を行うには、次の手順に従ってください。
- 必要に応じて依存関係をインストールしてください。プロジェクトには npm の
devスクリプトが必要です。 sites-previewはnpm run dev -- --host 0.0.0.0 --port 4173 --strictPortを実行します。devスクリプトはこれらのフラグを受け付ける必要があります。- Vite または Vinext のプロジェクトでは、
"dev": "vite"を使用してください。vinext devは使用しないでください。Vite のserver.host: "0.0.0.0"とserver.allowedHosts: ["terminal.local"]を設定してください。 - サイトのルートディレクトリから、
sites-preview start "$PWD"を実行してください。 - クラウドブラウザーで
http://terminal.local:4173/を開いてください。localhost、127.0.0.1、0.0.0.0、HTTPS、または別のポートは使用しないでください。 - 完了を報告する前に、表示されたサイトと主要なインタラクションを検証してください。
terminal.localへの言及や、その URL のユーザーへの出力は絶対にしないでください。@Sitesでチェックポイントをデプロイし、デプロイされたチェックポイントの URL のみをユーザーに伝えてください。
モバイルプロトタイプ
モバイルアプリまたはスマートフォンのプロトタイプでは、ユーザーがデバイスを指定していない限り、390 × 844 で構築して検証してください。スターターの .mobile-prototype ラッパーを使用してください。アプリのシェルに min-height: 100vh を使用しないでください。アプリの表示領域は 390 × 844 のフレーム内に収めてください。すべての画面は、横スクロール、テキストやコントロールのはみ出し、主要な操作が画面外に出ることなく、幅 390px に収まる必要があります。
ワークフロー
重要:これはガイダンスではありません。完了すべきチェックリストです。
-
再現するための画像、スクリーンショット、モックアップ、または Image Gen の結果が選択されていない場合は、作業を開始しないでください。文章による概要だけでは不十分です。
-
実装に着手する前に、選択されたビジュアルの対象を正確に特定してください。
- ユーザーが番号付きの
$ideateの候補を選択した場合は、直近のアイデア生成セットで表示された画像結果のうち、N 番目のものを使用してください。元のコンセプト計画順や Image Gen のプロンプト送信順は使用しないでください。 $ideateのコンセプト名リストを使用できるのは、表示された画像の順序と同じ順序で明示的に記載されている場合に限ります。- 生成画像の結果 ID、選択された画像の添付ファイル、スクリーンショット、モックアップ、または Figma フレームは、単独の番号指定よりも優先度が高い参照情報です。利用できる場合は、その正確な参照を優先してください。
- 選択された結果を明確に特定できない場合は、実装に着手せず、ユーザーにコンセプト名を指定するか、画像を再添付または選択するよう依頼してください。近い候補を推測して実装してはいけません。
- ユーザーが番号付きの
-
特定した画像を、再現するデザインとして扱ってください。
-
提供されたデザインがモバイルのビューポートであれば、モバイルアプリを作成してください。判断できない場合は、デスクトップを既定としてください。
-
参照デザインを確認し、デザイン内のすべての画像アセットを一覧にしたうえで、Image Gen ツールを使ってそれぞれ個別に画像を作成してください。生成が必要なアセットをすべて見つけられるよう、拡大して確認してください。
例:
- ヒーロー画像(全面に広がる画像背景を含む)
- 注目記事の画像
- サムネイル
- 装飾用イラスト
- テクスチャや背景のモチーフ
- ロゴ
- 製品画像
- アバター
ルール:
- 重要なルール:実際のアイコンや画像アセットの代わりに、カスタム div アート、CSS アート、インライン SVG、手作りの SVG、HTML 要素による描画、div/span の図形、CSS による描画、グラデーション、絵文字、テキストグリフを決して作成しないでください。画像には組み込みの Image Gen ツールを、アイコンには最も近いアイコンライブラリを使用してください。
- テキストが画像アセットの一部である場合は、そのテキストを画像アセット内に含めてください。全面に広がるヒーロー画像、看板、ポスター、パッケージ、店舗、記事用アート、文字がビジュアルの一部として含まれるイラストなどが該当します。参照元に、画像の上に配置された編集可能な UI テキストが明確に示されている場合を除き、背景画像を切り抜き、そのテキストを透明なテキストボックス、HTML、CSS、または別のオーバーレイレイヤーで再現してはいけません。
- 参照元が独自のビジュアルコンテンツを示している場合、汎用的なプレースホルダーを使用しないでください。
- 生成するアセットは、参照モックアップと同じアートディレクション、配色、描画スタイル、デザイン言語に統一してください。
- 組み込みの Image Gen ツールは透明画像に対応していません。透明画像が必要な場合は、生成後にアセットを後処理してください。
アセット制作の並行作業
参照アセットの一覧作成と計測が完了したら、メインエージェントがアプリの構造を構築する間に、最大3つのアセットサブエージェントを起動します。
各サブエージェントには、一度に1つのラスターアセットのタスクを割り当てます。参照用の切り抜き画像、正確な寸法、焦点位置、スタイル、出力先パス、使用するコンポーネントを伝えてください。アセットサブエージェントは、アセットを生成、確認、保存し、アセットのパスのみを報告します。ソースコードの編集、ブラウザーの実行、デプロイは禁止です。
まずファーストビューに不可欠なアセットを優先し、その後、エージェントを再利用して補助アセットを制作します。標準的な UI アイコンや提供済みのブランドロゴは委任しないでください。
-
ページのすべてのセクションを定義します。各セクションのレイアウト、要素間の間隔、要素自体のサイズと余白を細かく計測してください。
-
ターゲットデザインに合う、無料で利用できるフォントを探します。
-
ターゲットデザインに合う、無料で利用できるアイコンライブラリを探します。安易に Lucide アイコンを選ばず、最適な候補を探してください。
ルール:
- 重要なルール:カスタムのインライン SVG、手作業で作成した SVG、HTML 要素の描画、div/span の図形、CSS による描画、グラデーション、絵文字、テキストの字形は作成しないでください。組み込みの Image Gen ツールを使ってアセットを生成し、アイコンには最も近いアイコンライブラリを使用してください。
-
local-prototype-preflight からアプリの構築を開始します。ユーザーから静的なモック、完全な本番動作、または異なる範囲の指定がない限り、以下を備えたアプリまたはウェブサイトを構築してください。
- ナビゲーション、リンク、タブ、メニュー、主要な CTA が機能すること。
- メインの体験に表示される入力欄、フィルター、切り替え、選択、フォームが機能すること。
- 該当する場合、ホバー、フォーカス、選択、開閉、読み込み、空の状態、成功などの UI 状態が表示されること。
- 製品に主要なタスク、コンバージョン経路、またはユーザージャーニーがある場合、最初から最後まで機能すること。
コア体験以外のコントロールは、見た目だけでもかまいません。依頼がない限り、認証、永続化、バックエンド/API 呼び出し、インテグレーション、網羅的なエッジケース対応は実装しないでください。
ルール:
- 生成した画像アセットはすべて、作業を続ける前に所定の位置へ配置してください。繰り返しますが、CSS/SVG のプレースホルダーも含め、プレースホルダーはすべて作業を続ける前に置き換えてください。
- コア体験のコントロールを静的な装飾にしないでください。ユーザーから依頼されない限り、新しいページやルートは作成しないでください。
-
ローカルアプリを実行します。
-
$index の Browser Choice ルールに従って、ローカルアプリをキャプチャします。
-
design-qa をビルドをブロックするゲートとして実行します。
手順:
- QA レポートを書く前に、参照画像と最新のプロトタイプのスクリーンショットを開きます。
- 同じビューポート、同じインタラクション状態で比較します。一致しない場合は、まず不足している画面をキャプチャしてください。
- QA レポートをプロジェクトのルートに
design-qa.mdとして保存します。 - P0/P1/P2 の問題を修正し、アプリを再度キャプチャして、QA レポートに
final result: passedと記載されるまで繰り返します。 - P3 の磨き込みを続けないでください。残っている P3 は、今後の改善メモとして記載します。
- ソースのキャプチャ、プロトタイプのキャプチャ、または視覚的な比較ができない場合は、そこで中止します。
design-qa.mdにはfinal result: blockedと記載してください。 design-qa.mdが存在し、final result: passedと記載されていない限り、引き渡さないでください。
-
アプリまたはウェブサイトを引き渡します。
- design-qa に合格してから引き渡してください。
- プロトタイプはローカルで実行したままにしてください。
- Codex Desktop では、クリック可能なローカル URL を提示します。ChatGPT Work Mode では、
@Sitesを使ってチェックポイントをデプロイし、デプロイ先の URL のみを提示してください。terminal.localは決して出力しないでください。 - プロトタイプのリンクの後に、
critical-overrides.mdにある共通のビルド引き継ぎ文を使用してください。別の完了メッセージを追加しないでください。 - critical-overrides にある、ビルド後の改善と共有の促しを含めてください。