gpt-taste
gpt taste
converting-figma-to-html
Provides expertise in converting Figma designs to HTML/CSS using Figma MCP tools, with data attributes for content tracking and comprehensive analysis. Use when converting Figma designs to web code.
Full skill instructions
Figma MCPツールを使用してFigmaデザインからHTML/CSSを生成し、コンテンツ分析を行うための専門知識を提供するスキルです。
このスキルは以下のタスクをサポートします:
以下は絶対に行わないこと:
コンテンツ分析では「このUIに動的データが必要」という事実の識別のみを行います。
以下のFigma URLからHTML/CSSを生成してください:
https://figma.com/design/XXXXX/Project?node-id=1234-5678
エージェントは自動的に:
単一画面の場合:
.outputs/{screen-name}/
├── index.html # メインHTML(data属性付き)
├── index-{state}.html # 状態バリエーション(該当する場合)
├── spec.md # 画面仕様書
├── mapping-overlay.js # マッピング可視化
└── preview.html # プレビュー(オプション)
複数画面の場合(画面ごとにディレクトリ分離):
.outputs/
├── {screen-a}/
│ ├── index.html
│ ├── index-empty.html # 同一画面の状態バリエーション
│ ├── spec.md
│ └── mapping-overlay.js
├── {screen-b}/
│ ├── index.html
│ ├── spec.md
│ └── mapping-overlay.js
└── ...
{screen-name} はFigmaの画面名から生成した短い識別名(例: homework-modal)
注意:
- spec.md 内の static/dynamic 分類は仮決定です。実装時にレビューしてください。
- 複数フレームは「同一画面の状態バリエーション」か「別画面」かを判定し、適切な構造で出力します。
詳細な情報は以下のファイルを参照してください:
workflow.md: Figma MCPツールの実行順序と各ステップの詳細
conversion-guidelines.md: 変換時の判断基準と処理ルール
quick-reference.md: よく使うパターンと命名規則
assets/: 各種テンプレートファイル
ルート要素(<body>または主要コンテナ)には画面識別用の属性を付与:
| 属性 | 用途 | 例 |
|---|---|---|
data-figma-node | FigmaルートノードID | "2350:6396" |
data-figma-filekey | FigmaファイルキーID | "fLUFVpvmfpCJBrgzYHi5PB" |
data-figma-name | Figmaでの画面名 | "チュートリアル" |
data-figma-url | Figmaへのリンク | "https://www.figma.com/design/..." |
data-screen-id | 画面識別ID(ハイフン区切り) | "tutorial" |
data-screen-name | 画面表示名 | "チュートリアル" |
全ての主要要素に以下の属性を付与:
| 属性 | 用途 | 例 |
|---|---|---|
data-figma-node | FigmaノードID | "5070:65342" |
data-figma-name | Figmaでのレイヤー名 | "Button/Primary" |
data-figma-tokens | デザイントークン(まとめて) | "background: darkblue" |
data-figma-token-* | デザイントークン(個別、推奨) | 下記参照 |
data-figma-icon-svg | アイコンノードID(getImages用) | "3428:18627" |
data-figma-interaction | インタラクション定義 | "tap:navigate:/course/1" |
data-figma-states | サポートするUI状態 | "default,hover,active,disabled" |
data-figma-navigate | 画面遷移先 | "/course/detail" |
data-state | 現在のUI状態 | "default", "disabled", "loading", "selected" |
Figmaのデザイントークンをプロパティ別に個別の属性で保持する推奨形式:
| 属性 | 用途 | 値の例 |
|---|---|---|
data-figma-token-bg | 背景色トークン | "Background/Main/Default" |
data-figma-token-color | テキスト色/アイコン色トークン | "Text/Default/Default", "Icon/Main/Default" |
data-figma-token-font | フォントトークン | "JP/16 - Bold" |
data-figma-token-radius | 角丸トークン | "Radius/200" |
data-figma-token-padding | パディングトークン | "Space/200" |
data-figma-token-gap | ギャップトークン | "Space/150" |
data-figma-token-height | 高さトークン | "56px" |
data-figma-token-border | ボーダートークン | "Border/Main/Default" |
data-figma-token-size | サイズトークン(アイコン等) | "24px", "32px" |
例(画面ルート):
<body data-figma-node="2350:6396"
data-figma-filekey="fLUFVpvmfpCJBrgzYHi5PB"
data-figma-name="チュートリアル"
data-figma-url="https://www.figma.com/design/fLUFVpvmfpCJBrgzYHi5PB?node-id=2350:6396"
data-screen-id="tutorial"
data-screen-name="チュートリアル"
class="...">
例(ボタン要素):
<button data-figma-node="2350:6410"
data-figma-token-bg="Background/Main/Default"
data-figma-token-color="Text/Default/On"
data-figma-token-font="JP/18 - Bold"
data-figma-token-radius="Radius/Full"
data-figma-token-height="56px"
data-figma-states="default,hover,active,disabled"
data-figma-interaction="tap:navigate:next-step"
data-state="default"
class="w-full h-14 bg-bg-main-default text-text-default-on font-bold rounded-full">
次へ
</button>
例(アイコン要素):
<span data-figma-node="2350:6420"
data-figma-token-color="Icon/Main/Default"
data-figma-token-size="24px"
data-figma-icon-svg="3428:18627"
class="w-6 h-6 text-icon-main-default">
<svg viewBox="0 0 24 24"><!-- placeholder --></svg>
</span>
HTMLの各コンテンツを以下のカテゴリで整理:
| 分類 | 説明 | 例 |
|---|---|---|
static | 固定ラベル・UI文言 | ボタン名、ナビゲーション |
dynamic | ユーザー/時間で変化 | 数値、日付、ユーザー名 |
dynamic_list | 件数可変リスト | 講座一覧、通知一覧 |
config | 画面設定で変わる要素 | ページネーション状態 |
asset | 静的アセット | SVGアイコン、ロゴ |
user_asset | ユーザーアップロード画像 | プロフィール画像 |
分類結果をHTML要素に data 属性として埋め込み、後続のAPI連携フェーズで活用:
| 属性 | 用途 | 例 |
|---|---|---|
data-figma-content-id | 一意識別子(snake_case) | "badge_text" |
data-figma-content-type | コンテンツ種別 | "text", "icon", "ui_state" |
data-figma-content-classification | 分類 | "static", "dynamic", "asset" |
data-figma-content-data-type | データ型 | "string", "number", "svg" |
data-figma-content-value | Figmaでの表示値 | "テスト運用版" |
data-figma-content-notes | 補足説明 | "最終ステップでは「はじめる」" |
埋め込み例:
<span data-figma-node="2350:6414"
data-figma-content-id="badge_text"
data-figma-content-type="text"
data-figma-content-value="テスト運用版"
data-figma-content-classification="static"
data-figma-content-data-type="string">テスト運用版</span>
standalone HTML 生成時は、Figma トークンを Tailwind config に埋め込む:
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
// Figma Semantic Tokens
'text-default': {
'default': '#24243f',
'secondary': '#67717a',
'on': '#ffffff',
},
'bg-main': {
'default': '#0070e0',
'secondary': '#cfe5fc',
},
},
spacing: {
'space-050': '4px',
'space-100': '8px',
'space-200': '16px',
},
borderRadius: {
'radius-100': '8px',
'radius-200': '16px',
'radius-full': '9999px',
},
fontFamily: {
'hiragino': ['"Hiragino Sans"', '"Hiragino Kaku Gothic ProN"', '"Meiryo"', 'sans-serif'],
},
}
}
}
</script>
トークン取得: mcp__figma__get_variable_defs を使用してFigmaから取得
複雑なSVGパスは再現せず、シンプルなプレースホルダーに置換:
<div class="w-6 h-6"
data-figma-icon-svg="3428:18627"
data-figma-content-settings-icon>
<svg class="w-6 h-6" viewBox="0 0 24 24" fill="none">
<rect x="4" y="4" width="16" height="16" rx="2"
stroke="currentColor" stroke-width="2"/>
</svg>
</div>
以下の要素は自動的に除外:
インタラクティブな要素には動作を定義する属性を付与:
<article class="course-card"
data-figma-states="default,hover,active"
data-figma-interaction="tap:navigate:/course/1"
data-figma-navigate="/course/1"
tabindex="0" role="button">
<h3>講座タイトル</h3>
</article>
インタラクション形式: {trigger}:{action}:{target}
tap, hover, focus, longpressnavigate, show-modal, close-modal, submit, open-dropdown, select, toggle状態値 (data-state): default, hover, active, disabled, loading, selected, expanded
spec.md の「インタラクション」「画面フロー」セクションを参照して、HTMLに画面遷移属性を付与:
| 属性 | 用途 | 例 |
|---|---|---|
data-figma-interaction | インタラクション定義 | "tap:navigate:tutorial" |
data-figma-navigate | 遷移先パス | "/{locale}/ask_ai/tutorial" |
data-figma-states | サポートするUI状態 | "default,hover,active,disabled" |
遷移パターン例:
<!-- 単純な画面遷移 -->
<button data-figma-interaction="tap:navigate:tutorial"
data-figma-navigate="/{locale}/ask_ai/tutorial">
ヘルプ
</button>
<!-- 条件付き遷移(同意状態等) -->
<button data-figma-interaction="tap:conditional-navigate"
data-figma-navigate="consented:/{locale}/ask_ai|unconsented:consent-modal"
data-figma-states="default,hover,active">
スキップ
</button>
<!-- 内部ステップ遷移 -->
<button data-figma-interaction="tap:navigate:next-step"
data-figma-navigate="tutorial-step-{n+1}"
data-figma-states="default,hover,active">
次へ
</button>
<!-- 複合アクション -->
<button data-figma-interaction="tap:open-file-dialog|navigate:trim"
data-figma-navigate="/{locale}/ask_ai/trim"
data-figma-states="default,hover,active,loading">
写真を共有
</button>
遷移先の記述形式:
/{locale}/path/to/screencondition1:path1|condition2:path2screen-step-{n+1}, previous-screenコンテンツマッピングとインタラクション可視化のためのオーバーレイスクリプト:
<!-- HTMLの末尾に自動追加 -->
<script src="mapping-overlay.js"></script>
</body>
</html>
機能:
1. figma:get_screenshot
└─> デザインのビジュアル参照を取得
2. figma:get_design_context (clientLanguages: "html,css")
└─> ★最重要:構造・スタイル情報を取得
3. figma:get_metadata(必要に応じて)
└─> 階層構造の詳細確認
4. HTML生成
├─> Tailwind CSSでマークアップ
├─> data属性を全要素に付与
└─> プレースホルダーアイコンを配置
5. コンテンツ分析
└─> static/dynamic分類を整理
6. コンテンツ分類属性の埋め込み ★新規
├─> data-figma-content-id(snake_case識別子)
├─> data-figma-content-type(text/icon/ui_state等)
├─> data-figma-content-classification(static/dynamic/asset等)
└─> data-figma-content-data-type(string/number/svg等)
7. 画面遷移属性の埋め込み ★新規
├─> spec.md のインタラクション/画面フローを参照
├─> data-figma-interaction(トリガー:アクション:ターゲット)
├─> data-figma-navigate(遷移先パス)
└─> data-figma-states(対応UI状態)
8. spec.md 更新
├─> 「構造・スタイル」セクション
├─> 「コンテンツ分析」セクション
└─> 完了チェックリストを更新
9. プレビュー生成(オプション)
└─> デバイスフレーム付きプレビュー
詳細は workflow.md を参照してください。
生成後、以下を確認:
- [ ] Figmaスクリーンショットと見た目が一致
- [ ] 全ての主要要素にdata-figma-node属性がある
- [ ] コンテンツ要素にdata-figma-content-XXX属性がある
- [ ] アイコンにdata-figma-icon-svg属性がある
- [ ] インタラクティブ要素にdata-figma-interaction属性がある
- [ ] 状態変化する要素にdata-figma-states属性がある
- [ ] ステータスバー等のOSネイティブUIが除外されている
- [ ] 画面遷移属性が埋め込まれている(Step 7)
- data-figma-interaction(トリガー:アクション:ターゲット)
- data-figma-navigate(遷移先パス)
- data-figma-states(対応UI状態)
- [ ] コンテンツ分類属性が埋め込まれている(Step 6)
- data-figma-content-id(snake_case)
- data-figma-content-type
- data-figma-content-classification
- data-figma-content-data-type
- [ ] spec.md の「構造・スタイル」セクションが更新されている
- [ ] spec.md の「コンテンツ分析」セクションが更新されている
- [ ] spec.md の「インタラクション」セクションが更新されている
- [ ] プレビューHTMLが正しく表示される(オプション)
このスキルは、Figmaデザインを変換するエージェントから参照されます。
エージェントは以下のステップでこのスキルを活用します:
このエージェントは Figma MCP を使用します。以下を確認してください:
生成されたHTMLは以下で確認してください:
# プレビューHTMLを開く
open {component_name}_preview.html
# またはメインHTMLを直接開く
open {component_name}.html
gpt taste
Premium brand-kit image generation for high-end identity systems, logo concepts, and visual-world presentations.
Premium website design-to-code skill that generates visual references first, then builds faithful frontend implementations.
Premium frontend image direction for landing pages and marketing sites, generating one distinct horizontal image per section.
Premium mobile app screen concepts and flows with clean hierarchy, strong imagery, and distinctive art direction.
Emil Kowalski's philosophy on UI polish, component design, and the invisible details that make software feel good.
Frontend design and iteration for production-grade interfaces, from concept to ship.
Reverse-engineer design tokens from public websites into starter token files for your project.
Builds an animation from scratch by making the decisions in the order that determines whether it feels right.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
Chat-to-edit AI studio for product photos, portraits, branding, and video.
Generate your dream room in seconds.
Redesign your interior in seconds using AI
Transform rooms with AI-generated designs.
Transform Your Space with AI-Powered Japanese Interior Designs by Jife
AI-powered wireframes for non-designers.
Revolutionize Property Viewing with AI-Generated Floor Plans and Virtual Tours
Transform sketches into stunning architectural renders with AI.