AI DESIGN LAB · PART 6
2026
06/10
類別 AI 設計協作指南
適用對象 SHP 設計師
閱讀時間 約 35 分鐘
系統版本 SHP Design System 2026 · v0.3.2
008

Vibe Coding

AI 精準輸出的設計工作流:從 Token 到設計文件

有了 Design Token,只完成了一半。這篇文章說明設計師還需要準備哪些文件,才能讓 AI 的輸出從「顏色正確」進化到「設計意圖正確」,以及如何一步一步把這套文件寫出來。

00

什麼是 Vibe Coding,對設計師意味著什麼

「Vibe coding」這個詞最近在設計師圈越來越常出現,但大多數人對它的想像是: 「用 AI 快速做設計稿,隨便一句 prompt 就能出結果。」 這只是 vibe coding 的表象,不是它的核心。

真正的 vibe coding,是你描述設計意圖,AI 輸出的結果符合你的設計系統規範、品牌調性、和視覺語言——不需要你在 prompt 裡說「這個按鈕用 #7759FF」,不需要一個一個交代顏色,不需要在 AI 輸出後一個一個修正 token 名稱。

「Vibe coding 的終點不是『快』,是『精準』。你說一句『幫我做商品列表頁』,AI 輸出的結果,設計師看得出來是 SHP 的風格。」

要做到這件事,AI 需要三層知識——而 Design Token 只提供了第一層。 這篇文章說明剩下兩層是什麼,為什麼缺了它們 AI 只能「猜」,以及設計師如何一步一步把這兩層補起來。

Vibe Coding Design Token AI 設計協作 設計文件
01

三層知識架構:AI 需要知道什麼才能精準輸出

讓 AI 精準輸出設計畫面,需要三層不同層次的知識。每一層都有特定的來源,缺少任何一層,AI 就只能靠猜。

LAYER 1
知道有哪些 token 存在
--shp-text-icon-basic-primary--shp-surface-element-brand…… 全部 136 個 CSS 變數的存在,以及 light / dark 兩套值。
由誰提供 npm token 套件 已完成
LAYER 2
知道什麼情境用什麼 token
頁面文字用 basic 系列、 按鈕文字用 element 系列; surface 四層結構;功能色限制;dark mode 例外規則…… Token 選用的通用判斷邏輯。
由誰提供 CLAUDE.md 已完成
LAYER 3
知道這個畫面的設計意圖是什麼
這個頁面的主要 CTA 在哪裡?哪個元素是視覺重心? 這個元件有哪些互動狀態?這個場景有什麼特殊限制? 通用規則覆蓋不到的、這個設計的獨特意圖
由誰提供 設計規格 MD 需要建立

Layer 1 + Layer 2 讓 AI 輸出「token 正確」的結果。 加上 Layer 3,AI 才能輸出「設計意圖正確」的結果。 兩者都正確,才是真正的 vibe coding 精準輸出。

Layer 3 是設計師的工作

Layer 1 和 Layer 2 由工程師和設計系統負責人建立,設計師不需要從頭建。 Layer 3 是設計師對 AI 說的話——只有你知道這個畫面要表達什麼,只有你能寫這一層。 而且,寫 Layer 3 的過程,本身就是一次設計思考的整理。

三層架構 npm token CLAUDE.md 設計規格 MD
02

設計流程的現實影響:已解決的問題,和還缺的一哩路

SHP 已有 npm token 套件(Layer 1)和 CLAUDE.md(Layer 2)。 對設計師的日常工作,這已經解決了幾個明確的痛點,但也還有一個清晰的缺口。

已經解決的問題

以前的痛點 現在的狀態
AI 生成時自己猜顏色,不符合設計系統 ✓ 解決 npm token 提供所有 --shp-* 變數
Dark mode 要在 prompt 裡額外說明 ✓ 解決 CLAUDE.md 規則讓 AI 自動套用正確 token
每次 prompt 都要貼一堆顏色值 ✓ 解決 AI 直接用 token 名稱,不依賴 hex 值
工程師和設計師的顏色兜不攏 ✓ 解決 同一份 npm token,兩邊同步更新

還缺的一哩路

CLAUDE.md 給的是通用規則,但 AI 仍不知道:

視覺重心在哪

設計決策層

這個頁面的主要 CTA 是什麼?哪個元素需要最高視覺強度?哪裡應該要低調讓路?AI 不知道你的設計意圖,只能套用「品牌按鈕用 brand 色」這種通用規則。

有哪些狀態需要處理

互動完整性

Loading?Empty state?Error?Disabled?AI 不知道你的元件在什麼情境下會出現哪些狀態,沒有說明就不會主動處理,輸出結果通常只有「正常狀態」。

這個場景的例外

設計系統例外處理

這個頁面的 header 要 always-light(導覽列始終深色背景)?這個元件的文字不能跟著 dark mode 反轉?通用規則處理不了針對特定場景的設計決策。

元件的視覺層次關係

頁面結構

頁面上的元件哪個是主角、哪個是配角、哪個是背景?這個資訊決定了 surface 層的選用——但 AI 不知道你的頁面設計邏輯。

加入 Layer 3 之後,差別有多大

FIG.01 · 有無設計規格 MD 的 prompt 輸出差異

沒有 Layer 3
「幫我做商品列表頁」
token 正確
+
設計意圖靠猜
有 Layer 3
「根據 product-list.md,幫我做商品列表頁」
token 正確
+
設計意圖也正確

設計規格 MD 讓 prompt 從一個描述變成一個可執行的設計說明書

設計流程 AI 精準輸出 Layer 3
03

設計師需要準備哪些文件

Layer 3 不是一份文件,而是一套文件體系。根據你要做的設計任務類型,有三種對應的文件格式。 每種文件服務不同的 AI 任務,不需要全部都建立,按需求逐步累積。

元件規格文件

Component Spec · 10–20 分鐘

說明一個可重複使用的元件:結構層次、每個元素對應的 token、所有互動狀態。 高頻元件(商品卡片、按鈕、輸入框)優先寫,投資報酬率最高。

product-card.md

頁面規格文件

Page Spec · 15–30 分鐘

說明一個頁面的視覺層次架構、每個區域的 token 配置、主要 CTA、空狀態。 適合在進入頁面開發前完成,讓 AI 一次生成就接近目標。

product-list-page.md

設計探索文件

Concept Doc · 5–10 分鐘

設計早期的輕量文件:說明這次探索要驗證什麼問題、視覺方向、範圍限制。 每次新的設計探索前 5 分鐘寫完,讓 AI 的第一個輸出就在正確的方向上。

concept-[名稱].md

另一個工具:CLAUDE.md(已存在)

CLAUDE.md 是 Layer 2 的載體,已經存在於 SHP npm 專案中。 它記錄的是整個設計系統的通用選用規則,不是針對特定畫面的規格——設計師不需要修改 CLAUDE.md,也不需要重新寫它。 你需要做的是:為你負責的每個元件、頁面、探索稿,分別建立上面三種文件之一。

進階:Claude Code Skills

如果你的團隊頻繁用 Claude Code 生成設計稿,可以建立「設計指令捷徑」(Claude Code Skills): 在 .claude/skills/ 目錄新增 design-component.md,定義一個 /design-component 指令, 讓 Claude Code 每次執行這個指令時,自動讀取對應的元件規格文件並生成。 這是進階功能,需要有 CLAUDE.md 和元件規格文件作為基礎,再考慮引入。

元件規格文件 頁面規格文件 設計探索文件 Claude Code Skills
04

文件撰寫的五個原則:讓 AI 真的看得懂你要什麼

設計規格文件和一般的設計說明最大的差別,是它的閱讀對象是 AI,不是人。 AI 需要具體的、可執行的資訊,不需要形容詞或情緒性描述。以下五個原則幫助你寫出 AI 能精準執行的文件。

1

描述「目的」,不描述「外觀」

AI 知道顏色規則,但不知道這個元素的設計角色。 告訴 AI 這個元素要達成什麼,AI 自己選對的 token。

不好:「背景是淺灰色」
好:「頁面背景 surface/background/bg-grey,建立最底層的閱讀環境」

不好:「按鈕用紫色」
好:「主要行動按鈕 surface/element/brand,是這個頁面唯一的強調色」

2

Token 名稱優先,顏色值永遠不出現在文件裡

只要 token 名稱出現,AI 自動處理 light + dark mode,你不需要說明兩遍。 顏色值(#7759FF)一出現,AI 就把它當成硬編碼的顏色,dark mode 壞掉。

不好:「品牌色 #7759FF」
好:surface/element/brand

3

說明「不要用什麼」比說明「要用什麼」更精準

AI 最容易在邊界情境選錯 token。明確排除,比正面規定更能防止錯誤。

例:「brand 按鈕上的文字不要text--icon/basic/invert (invert 是深色背景上的白色文字,不是按鈕內文字); 要用 text--icon/element/primary

「禁止事項」區塊是設計規格文件最有效的部分之一。

4

狀態要列完整,不能只描述「正常狀態」

設計意圖最容易在邊緣狀態出現分歧——因為這些狀態沒有寫明,AI 就自己猜。 每個互動元件都要說明:

Default(正常)→ Hover(滑入)→ Pressed(點擊)→ Disabled(停用)→ Loading(載入中)→ Empty(空狀態)→ Error(錯誤)

不是每個元件都有所有狀態,但你要明確決定哪些需要處理、哪些不需要。

5

每份文件只負責一個功能單元

不要在一份文件裡同時說明整個商品詳情頁的所有元件。 把「商品詳情頁」分成:頁面結構(page spec)+ 商品卡片(component spec)+ 加入購物車按鈕(component spec)。

文件越細,AI 在執行特定任務時的精準度越高。 寬泛的文件讓 AI 難以聚焦;拆細的文件讓每個 prompt 都有清楚的執行範圍。

文件撰寫原則 Token 名稱優先 禁止事項 狀態清單
05

撰寫步驟引導:從哪裡開始,怎麼起步

不需要一次把所有文件都建立起來。按照下面的順序,每完成一份就立刻有效益—— 不用等到全部完成才能感受到 vibe coding 的精準輸出。

1

從最高頻的元件開始:product-card.md

商品卡片幾乎出現在所有列表頁面,是使用頻率最高的元件。 第一份文件寫這個,立刻讓所有用到商品卡片的 AI prompt 都受益。 使用範本 A,預計 15 分鐘完成。

2

寫按鈕規格:button-spec.md

按鈕是最容易出現 token 錯誤的元件—— surface/element/brand vs surface/basic/level1text--icon/element/primary vs text--icon/basic/invert。 把所有按鈕種類(Primary、Secondary、Ghost、Danger)和狀態(default、hover、disabled)一次寫清楚。

3

再寫輸入框規格:input-spec.md

輸入框的狀態最多(default、focus、filled、error、disabled), 也是 AI 最常生成不完整的元件。 重點說明 focus state 的 border token,以及 error state 的顏色來源。

4

核心頁面逐步建立

有了元件文件之後,開始寫頁面規格。建議優先順序: 首頁(視覺層次最複雜)→ 商品列表頁(元件組合)→ 商品詳情頁(狀態最多)。 每份頁面規格文件用範本 B,重點放在視覺層次架構和主要 CTA 的說明。

5

設計探索:每次開始前 5 分鐘寫 concept doc

每次新的設計探索——不管是改版、新功能、還是概念提案—— 都在開始前用範本 C 寫一份探索文件。 5 分鐘整理你的設計問題和方向假設,讓 AI 的第一個輸出就在正確的方向上, 避免生成一堆「方向完全不對」的結果再修正。

起步最快的方式

直接複製 Block 06 的範本,把 [placeholder] 欄位填入你的設計決策。 一份文件 15 分鐘內可以完成草稿版,然後隨著設計的推進慢慢補充。 文件不需要完美才有效——有 70% 的資訊,AI 的輸出就已經大幅提升精準度。

product-card.md button-spec.md 撰寫步驟 設計探索
06

三份範本說明與下載:可直接複製使用

以下三份範本涵蓋三種文件類型。每份範本都有說明欄位的用途,以及對應的 AI Prompt 範本。 複製後存為 [元件名稱].md[頁面名稱]-page.md 放在你的設計專案目錄。

範本 A · 元件規格文件

適用:商品卡片、按鈕、輸入框、標籤、任何可重複使用的 UI 元件

component-spec-template.md

# [元件名稱] 元件規格
最後更新:YYYY-MM-DD | 撰寫者:[名字]

## 元件目的
這個元件在產品中的角色是什麼?它幫助使用者完成什麼任務?
例:商品卡片的目的是在列表頁傳遞「商品吸引力」,
讓使用者在 3 秒內判斷是否值得點進去查看詳情。

## 元件結構(由外到內)

| 層級 | 元素         | Token                              | 說明                    |
|------|-------------|-------------------------------------|------------------------|
| 容器  | 卡片背景     | surface/basic/level1               | 與頁面底色分層,輕微層次感 |
| 媒體  | 商品圖片     | —                                  | 佔卡片上方 56% 高度      |
| 內容  | 主標題       | text--icon/basic/primary           | 最多兩行,H3 層級        |
| 內容  | 副標題       | text--icon/basic/tertiary          | Caption,單行           |
| 功能  | 主要功能色   | [依用途:price-promote / liked / …]  | 填入你的元件對應         |
| 功能  | 次要 icon   | text--icon/basic/secondary         |                        |

## 互動狀態

| 狀態      | 觸發條件   | 視覺變化              | Token 說明               |
|----------|-----------|----------------------|--------------------------|
| Default  | 正常顯示   | —                    | —                        |
| Hover    | 滑鼠移入   | 陰影加深,輕微上移     | box-shadow,非 token     |
| Pressed  | 點擊       | scale(0.98)          | —                        |
| Loading  | 資料載入中 | Skeleton 佔位         | surface/basic/level2     |
| Empty    | 無資料     | 佔位說明 + icon       | text--icon/basic/tertiary |
| Disabled | 功能停用   | 降低不透明度 0.4      | opacity,非 token        |

## 禁止事項
# 列出這個元件最容易出現的 token 選用錯誤
- 不要用 surface/element/* 作為卡片背景(那是按鈕背景)
- 不要用 text--icon/element/* 作為頁面文字(那是元件內文字)
- [在這裡加入你這個元件的特定限制]

## AI Prompt 範本
```
根據 [檔案名稱].md 的規格,用 @tofuydesign/shp-react token
生成 [元件名稱],需要處理:default、loading(skeleton)、
hover 三種狀態。使用 HTML + CSS custom property 輸出。
```

範本 B · 頁面規格文件

適用:首頁、列表頁、詳情頁、任何完整的產品頁面

page-spec-template.md

# [頁面名稱] 頁面規格
最後更新:YYYY-MM-DD | 撰寫者:[名字]

## 頁面目的
這個頁面在產品流程中的定位,以及使用者核心任務。
例:商品列表頁的目的是讓使用者快速找到感興趣的商品,
核心任務是觸發點擊進入商品詳情頁。

## 使用者核心任務(優先順序)
1. [主要任務]
2. [次要任務]
3. [低頻任務,不需要視覺強調]

## 視覺層次架構
# 從最底層開始往上列,說明每層的用途
頁面底色      surface/background/bg-grey       最底層,整頁底色
  ├─ 導覽列   surface/basic/level1             固定在頂部
  ├─ [區塊]   surface/basic/level1 / level2   說明這個區塊的用途
  └─ [區塊]   surface/element/*               元件層(按鈕、標籤等)

## 頁面 Token 對應表

| 區域   | 元素       | Token                          | 備註                 |
|-------|-----------|-------------------------------|----------------------|
| 頁面   | 背景       | surface/background/bg-grey    |                      |
| 導覽列 | 背景       | surface/basic/level1          |                      |
| 導覽列 | 頁面標題   | text--icon/basic/primary      |                      |
| 導覽列 | 返回 icon  | text--icon/basic/primary      |                      |
| 導覽列 | 底部分隔線 | divider--border/basic/default |                      |
| [區域] | [元素]     | [token]                       | [補充說明]           |

## 主要 CTA
# 說明這個頁面的主要行動按鈕或互動點
例:主要 CTA 是「加入購物車」按鈕,使用 surface/element/brand。
這是全頁唯一的 brand 色使用,其他區域不再出現品牌色。

## 空狀態 / 錯誤狀態

| 情境     | 說明文字         | 顯示元素                              |
|---------|-----------------|--------------------------------------|
| 無資料   | "目前還沒有內容" | 說明文字 + 次要行動按鈕               |
| 載入失敗 | "載入失敗,請重試" | 說明文字 + 重試按鈕                  |
| 搜尋無結果 | "找不到相關結果" | 說明文字 + 清除搜尋連結              |

# 空狀態說明文字 token:text--icon/basic/tertiary
# 次要行動按鈕:surface/element/neutral-subtle

## 這個頁面的限制
# 列出這個頁面的特殊設計決策或例外
- [例:導覽列背景不跟隨 dark mode,始終使用 surface/basic/level1]
- [例:這個頁面沒有主要 CTA,主要互動是點商品卡片]

## AI Prompt 範本
```
根據 [檔案名稱].md 的頁面規格,
用 @tofuydesign/shp-react token 生成 [頁面名稱] 的 HTML prototype。
需要包含:[主要區域列表],以及搜尋無結果的空狀態。
```

範本 C · 設計探索文件

適用:設計改版、新功能概念發展、視覺方向探索,任何設計早期階段

concept-doc-template.md

# [概念名稱] 設計探索
日期:YYYY-MM-DD | 目的:[一句話說明這次探索想驗證什麼]

## 設計問題
這次探索要回答的核心設計問題是什麼?
例:在商品詳情頁,如何讓「立即購買」CTA 在不破壞品牌感的
情況下更突出——同時不讓頁面變得太「促銷感」?

## 設計假設
# 你對解法的假設,不需要已經確定
- 假設 1:減少頁面上其他品牌色的使用,讓 CTA 更突出
- 假設 2:用留白強調 CTA 的存在感,而不是增加對比

## 視覺調性方向
# 描述你想要的設計感,並說明對應的 token 選擇策略
# 以下三種方向選一個,或自己描述:

沉穩信任感 → surface/basic/* 系列為主,brand 色只用在單一 CTA
活潑品牌感 → theme/* 色作為裝飾背景,搭配 surface/element/brand CTA
極簡清晰感 → 大量 background/bg-grey,content 高度集中

## 本次探索範圍
聚焦:[說明這次只看哪個部分,例:商品詳情頁的 CTA 區域]
不在這次範圍:[明確排除的部分,例:商品圖片區、規格選擇區]

## AI Prompt 範本
```
幫我用 @tofuydesign/shp-react token 做一個 [概念名稱] 的設計探索稿。
視覺方向:[一句話,例:沉穩品牌感,brand 色集中在 CTA]
聚焦:[主要元素 3–5 個]
不需要處理:[排除的部分]
輸出為 HTML prototype,要支援 dark mode 自動切換。
```

範本的正確使用方式

範本的 [placeholder] 欄位是需要你填入的設計決策,不是可以留空的格式裝飾。 每一個欄位代表一個 AI 在生成時需要知道的決定。 如果某個欄位你還沒有答案,那通常意味著這個設計決策還沒做——寫文件的過程就是逼你把設計想清楚的過程。

範本 A · 元件規格 範本 B · 頁面規格 範本 C · 設計探索
07

啟動設計工作流程:兩種情境的實戰指南

文件都備齊之後,怎麼實際啟動?根據設計任務的性質,有兩條路徑可以走。 兩條路徑都從同一套設計規格 MD 出發,差別在於輸出的形式和交付的對象

情境一 · 設計畫面路徑

Figma Make → 設計畫面 + Design Spec

從設計規格 MD 出發,在 Figma 建置完整設計畫面。 完成設計的同時,MD 文件就是工程師的 design handoff spec。

情境二 · 原型設計路徑

Claude Code → 原型 / 設計提案 / 產品代碼

從設計規格 MD 出發,用 Claude Code 生成 HTML prototype。 可作為設計提案展示、互動原型,或直接銜接產品開發。

情境一:在 Figma 建置設計畫面,同時完成 Design Spec

這條路徑的核心洞察是:你在設計前寫的規格 MD,就是設計完成後要交給工程師的 design spec。 不需要在設計完成後再另外寫文件——MD 裡已有 token 名稱、元件結構、互動狀態, 工程師需要的都在裡面。

1

確認設計規格文件已備齊

確認你有:元件規格 MDproduct-card.mdbutton-spec.md 等) 和 頁面規格 MDproduct-list-page.md 等)。 CLAUDE.md 由工程師側維護,設計師直接使用不需修改。

2

在 Figma Make 中引用設計規格 MD 作為 prompt

打開 Figma Make,將設計規格 MD 的內容貼入作為 context,再下具體指令:

PROMPT

根據以下設計規格,在 Figma 中建置商品列表頁:
[貼入 product-list-page.md 的內容]

使用 @tofuydesign/shp-react token,需要包含:
· 導覽列(含搜尋 icon)
· 篩選列(含已選取標籤狀態)
· 商品卡片列表(3 × 2 格)
· 搜尋無結果的空狀態

3

AI 在 Figma 中建置畫面,設計師做 QA

Figma Make 根據規格建置畫面。設計師 QA 的工作: 對照 MD 的 Token 對應表確認 token 選用正確, 確認 loading、empty、hover 等所有狀態都有被處理。 修改的是設計意圖,不是顏色值。

4

將設計規格 MD 直接交付工程師作為 design spec

設計完成後,把 MD 文件連結給工程師。MD 已包含他需要的所有資訊: token 名稱(不是 hex 值)、元件層次、互動狀態、禁止事項。 工程師 npm install @tofuydesign/shp-react,token 名稱和 Figma 一致,不需要對色。

這條路徑的核心優勢

傳統流程:設計 → 交設計稿 → 工程師對色 → 不一致 → 來回確認。
這條路徑:設計規格 MD = design spec = 工程師的 token 對照表。 因為 Figma 畫面和工程師代碼都用同一份 npm token,「設計稿上的顏色」和「代碼裡的顏色」是同一個 CSS 變數——不存在對色問題。

情境二:設計提案、原型,以及銜接產品開發

這條路徑用 Claude Code 直接生成 HTML prototype, 根據你在設計流程中的位置,有三種使用方式:

2A · 設計提案 & 概念說明

用設計探索文件(範本 C)快速生成視覺提案,用在設計評審或向利害關係人說明方向, 或同時生成多個方向讓對方選擇。目的是「讓人理解設計方向」,速度比精確性重要。

1

完成設計探索文件(5 分鐘)

用範本 C 寫出:設計問題、方向假設、視覺調性、探索範圍。 不需要完整的 token 對應表,方向和限制說清楚就夠了。

PROMPT

根據 concept-newcta.md 的設計探索,
用 @tofuydesign/shp-react token 生成商品詳情頁 CTA 區域的探索稿。
視覺方向:沉穩品牌感,brand 色集中在「立即購買」按鈕。
輸出 HTML 單一檔案,支援 dark mode 自動切換。

2

用瀏覽器直接展示給利害關係人

Claude Code 輸出可以在瀏覽器打開的 HTML 檔案。 在展示現場切換 data-theme="dark" 即時呈現 dark mode, 不需要另外製作展示素材。 要同時展示多個方向?執行多次 prompt,每次改變視覺調性的描述即可。

2B · 完整互動原型

當提案通過、需要更完整的互動原型時(用戶測試或細節設計評審), 從頁面規格文件出發,生成包含所有狀態的完整原型。 此時精確性比速度重要,規格文件要完整。

1

確認頁面規格 MD 和元件規格 MD 的狀態清單完整

互動原型需要所有狀態都有明確定義。在下 prompt 前, 確認規格文件的「互動狀態」欄位沒有空格。缺少任何狀態,Claude Code 就會自己猜。

PROMPT

根據 product-list-page.md 和 product-card.md 的設計規格,
用 @tofuydesign/shp-react token 生成商品列表頁的完整互動原型。
需要包含:hover 狀態、loading skeleton 動畫、空狀態(搜尋無結果)。
輸出 HTML 單一檔案,支援 dark mode,加入頁面載入動畫。

2

在瀏覽器測試,更新規格 MD 後重新生成

直接在瀏覽器測試所有互動狀態。發現不對的地方, 先更新設計規格 MD(更新設計決策),再用相同 prompt 重新生成。 規格文件是設計決策的紀錄,修改的永遠是規格,不是 hex 值。

2C · 設計原型直接銜接產品開發

Claude Code 生成的 HTML 使用真實的 --shp-* CSS 變數, 和工程師在產品中使用的 token 完全相同。 設計師生成的原型,可以直接作為工程師的開發起點,不需要重新建 UI,只需要接資料層。

PROMPT

根據 product-list-page.md 和 product-card.md 的規格,
用 @tofuydesign/shp-react token 生成商品列表頁的 React 元件。
要求:TypeScript interface、CSS 使用 var(--shp-*) 不 hardcode hex、
所有狀態(default / loading skeleton / empty state)。

1

將生成的元件交給工程師整合

工程師收到的 React 元件已使用正確的 --shp-* token,dark mode 自動處理, 元件結構符合設計規格。他需要做的是整合進產品的路由和資料層,而不是重新建 UI。 開發成本從「建 UI + 對色 + 對設計」縮減為「接資料」。

2

設計師和工程師用同一份規格 MD 對齊

開發過程中有任何設計疑問,設計師和工程師都查看同一份 MD 文件—— 不是去翻 Figma 找某個不知道在哪個 frame 的顏色, 而是直接看 token 名稱和狀態說明。 設計規格 MD 是整個開發周期裡最穩定的設計語言。

兩條路徑的選擇指南

考量點 情境一 · Figma 路徑 情境二 · 原型路徑
主要輸出 Figma 設計稿 + MD design spec HTML / React 原型或元件
適合的設計階段 正式 UI 設計建置 提案、探索、快速驗證、直接開發
工程師接手方式 讀 MD spec,自行根據規格實作 直接使用或擴充 Claude Code 的輸出
設計迭代速度 中等(Figma 建置有時間成本) 快(改規格 MD → 重新生成)
dark mode 支援 自動(npm token 已對齊) 自動(CLAUDE.md 規則 + npm token)
需要的文件 元件規格 + 頁面規格 探索文件(2A)/ 頁面 + 元件規格(2B / 2C)

兩條路徑可以混用,也可以接力

常見的實際組合: 先用情境二 2A(設計探索)快速確認方向 → 方向確認後切換到情境一(Figma 建置正式稿) → 正式稿完成後用情境二 2C 生成工程師可用的 React 元件。 設計規格 MD 在整個過程中只寫一次,三個步驟都在使用它。

情境一 · Figma 路徑 情境二 · 原型路徑 Design Handoff React 元件 設計到開發
08

精準還原設計元件:從挑戰診斷到前置工作流程

當你按照前面的步驟完成了 tokens.css、CLAUDE.md、設計規格 MD, 第一次執行 vibe coding 生成 HTML prototype,通常會遇到一個讓人沮喪的結果: 顏色用對了,但元件的樣子不像 Figma。 卡片的圓角不對、內距太大、字體大小不一樣……你開始手動調整、重新下 prompt、再調整—— 這個往返修正的過程,抵銷了 vibe coding 帶來的速度優勢。

設計挑戰診斷:問題出在哪一層

這個問題讓人困惑,因為你明明做了所有「正確的事」——token 正確、CLAUDE.md 完整、設計規格 MD 也寫了。 問題的根源不在你的設計決策,而在工作流程本身缺少了一個資訊層

TOKEN 已涵蓋
顏色語意、dark mode 對應
--shp-surface-element-brand = 品牌紫, dark mode 自動切換。所有語意色 token,AI 完全掌握。
AI 知道
TOKEN 涵蓋不到
元件骨架:border-radius、padding、font-size、gap
卡片圓角是 12px 還是 8px?商品名稱是 14px 還是 16px? 這些視覺結構數值存在於 Figma 設計稿,但 CSS 變數無法傳遞這類資訊。 AI 不知道,就每次猜一個。
AI 在猜

這不是 AI 能力的問題,也不是你 prompt 的問題。 是工作流程要求 AI 同時做兩件事——其中一件它做不好:

Task 1 · 套用正確 token

AI 做得到 ✓

顏色、語意、dark mode——AI 從 tokens.cssCLAUDE.md 完全知道,執行得精準。

Task 2 · 重建元件骨架

AI 只能猜 ✗

border-radius、padding、font-size——這些結構資訊在 Figma,但 token 無法傳遞。AI 每次都在猜,有時猜中,更多時候猜錯。

曾探索過的三條路:能解決問題嗎

面對這個挑戰,設計師通常會先想到幾條路。以下是對這三條路的真實評估—— 包括它們的效果,以及在這套工作流程中是否真的適用。

路徑 A · 手動補視覺規格到 spec MD

可行,但有維護負擔

從 Figma Inspect 讀取 padding、border-radius 等數值,填進設計規格 MD 的視覺結構表格。 AI 讀取後能還原元件。

問題:Figma 設計稿每次更新,你都要手動重新填一遍 MD。 元件越多,維護工作量越大。

可行 · 維護成本高

路徑 B · Figma MCP 自動讀取

效率提升,但仍需每次執行

用 Figma MCP 工具,讓 Claude Code 直接從 Figma 元件讀取視覺規格, 自動填入 spec MD 的視覺結構區塊。比路徑 A 省時。

問題:每個元件都要跑一次,Figma 有更新就要重跑。 本質上仍是「先讀後填」的手動流程。

可行 · 每次需執行

路徑 C · Figma Code Connect

不適用這個工作流程

Figma 官方的設計稿→代碼橋接機制,讓 Figma 元件直接對應代碼中的元件。

問題:Code Connect 需要代碼端有對應的 React 元件(<Button><Card>)。 你的 npm 套件是 CSS token 包,沒有預建元件——沒有對應目標,Code Connect 無從連結。

不適用 · 架構不符

關鍵洞察:這三條路都在解決「症狀」,而不是根本問題

路徑 A 和 B 的本質是:AI 先猜元件骨架,你再給它正確數值讓它重猜。 根本問題是:AI 被要求「製作元件」,但它做不好這件事。 解法不是讓 AI 猜得更準,而是讓 AI 不需要猜——直接給它現成的元件定義。

設計工作原則:讓 AI 從「製作元件」變成「取用元件」

FIG.02 · AI 角色轉換

現在:AI 製作元件
讀 tokens.css
+
猜骨架結構
結果不像 Figma
目標:AI 取用元件
讀 tokens.css
+
取用 components.css
精準還原 Figma 元件

components.css 是從 Figma 提取的元件 CSS 定義,不是 AI 猜的——是設計師確認過的視覺真相

1

元件骨架只從 Figma 提取,不靠 AI 每次重建

border-radius、padding、font-size——這些是設計師做過的設計決策,存在於 Figma。 這些值應該被提取出來永久保存,讓 AI 直接使用,而不是每次從零「推算」。

2

顏色語意和元件骨架分層管理,各有來源

顏色語意由 tokens.css 管理;元件骨架由 components.css 管理。 兩套資訊各有清楚的來源,AI 不需要把兩件事混在一起「想像」, 輸出結果才能同時做到顏色正確和骨架正確。

3

元件定義做一次,之後永遠取用

一旦你為商品卡片建立了 .shp-card 的 CSS 定義, 之後每次需要商品卡片,AI 直接使用這個 class。 Figma 更新元件 → 重新提取 → 更新 components.css → 所有 prototype 自動正確。

4

Figma 是元件視覺的唯一真相來源

不是設計師的記憶,不是 AI 的推算,不是 spec MD 裡手填的數字。 只有 Figma 設計稿的數值,才是元件視覺的唯一真相。 工作流程的設計,要讓這個真相能夠直達 AI 的生成過程。

解決方案:擴充 Layer 1,加入 components.css

你的 npm 套件目前只包含 tokens.css(顏色語意)。 在同一個套件中新增 components.css(元件骨架 CSS), 就完成了 AI 生成精準 prototype 所需的全部資訊。 AI 不再需要猜元件的樣子,因為元件的 CSS 定義已經在那裡了。

LAYER 1a · 已完成
src/tokens.css — 顏色語意 Token
136 個語意色 token,light / dark 兩套,AI 完全掌握。
已完成
LAYER 1b · 新增
src/components.css — 元件骨架定義
.shp-card.shp-btn.shp-input…… 每個 Figma 元件對應一個 CSS class,包含 border-radius、padding、font-size、hover 狀態。 從 Figma 提取,不是 AI 猜的。
待建立
LAYER 2 · 補充
CLAUDE.md — 加入元件 Class 對照表
在現有 token 規則之外,新增元件 class 對照: 商品卡片 = .shp-card; 告訴 AI 生成 HTML 時直接使用這些 class,不要重新定義元件 CSS。
需補充
LAYER 3 · 精簡
specs/**/*.md — 只需寫設計意圖,不再填視覺結構表格
元件視覺結構由 components.css 負責,設計規格 MD 只需說明:用哪些元件、設計意圖是什麼、需要哪些狀態
已完成

src/components.css — 從 Figma 提取的元件骨架(示例)

/* ── 商品卡片 ─────────────────────────── */
.shp-card {
  background: var(--shp-surface-basic-level1);
  border-radius: 12px;        /* 從 Figma Inspect 讀取,不是猜的 */
  overflow: hidden;
}
.shp-card__body {
  padding: 16px 12px;          /* 從 Figma 讀取 */
  display: flex; flex-direction: column; gap: 4px;
}
.shp-card__title {
  font-size: 14px; line-height: 1.4;
  color: var(--shp-text-icon-basic-primary);
}
.shp-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.12); }
.shp-card--loading .shp-card__title {
  background: var(--shp-surface-basic-level2);
  color: transparent; border-radius: 4px;
}

/* ── 主要按鈕 ─────────────────────────── */
.shp-btn {
  padding: 12px 20px; border-radius: 8px;
  font-size: 14px; font-weight: 500; border: none; cursor: pointer;
}
.shp-btn.shp-btn--brand {
  background: var(--shp-surface-element-brand);
  color: var(--shp-text-icon-element-primary);
}

前置工作流程:五步驟,一次完成,之後不再往返修正

以下是建立 components.css 並整合進工作流程的完整步驟。 這是一次性的前置投資——完成後,每次生成 prototype 都從正確的元件定義出發, 不再需要往返修正元件骨架。

1

確認前置工具就緒

確認 @tofuydesign/shp-react 已安裝、tokens.css 可讀取、 CLAUDE.md 存在於專案根目錄。 如果你有 Figma MCP 工具,確認它已連結 Figma 帳號(推薦用 MCP,速度快很多)。

2

整理元件清單,高頻優先

列出你的 prototype 需要用到的元件。不需要一次建立所有元件—— 先完成高頻元件就立刻有效益: 商品卡片 → 主要按鈕 → 次要按鈕 → 輸入框 → 導覽列,再逐步補充。

3

從 Figma 提取元件 CSS,建立 src/components.css

對每個元件在 Claude Code 中執行以下 prompt:

PROMPT

讀取 Figma 元件 [貼入元件 URL],
提取完整視覺規格:border-radius、padding、font-size、
line-height、gap、box-shadow(含 hover 狀態)。
顏色值全部替換成對應的 --shp-* token 變數。
按照 .shp-[元件名]__[子元素] 命名規則,
輸出為 src/components.css 的 CSS class 定義,
包含 default、hover、loading、dark mode 狀態。

4

更新 CLAUDE.md:加入元件 class 對照表

CLAUDE.md 中新增以下內容,告訴 AI 哪個元件用哪個 class:

CLAUDE.md 新增

## 元件 Class 對照(src/components.css)

生成 HTML 時,使用以下預定義 class,不要自行重新定義元件 CSS:

| 元件 | Class | 狀態 modifier |
|---------|----------------------------|------------------------|
| 商品卡片 | .shp-card | .shp-card--loading |
| 主要按鈕 | .shp-btn.shp-btn--brand | :disabled |
| 次要按鈕 | .shp-btn.shp-btn--neutral | |
| 輸入框 | .shp-input | .shp-input--error |

5

執行完整流程測試:第一個 prototype

用設計規格 MD + 更新後的 CLAUDE.md,生成並驗證第一個 prototype:

PROMPT

根據 specs/components/product-card-spec.md 的設計意圖,
使用 CLAUDE.md 元件對照表中的 class(.shp-card、.shp-btn 等),
生成商品列表頁 HTML prototype。
引入 @tofuydesign/shp-react 的 tokens.css 和 components.css,
不要重新定義元件 CSS。
輸出到 prototypes/20260612-product-list/index.html

後續維護:Figma 元件視覺更新時

Figma 中某個元件的視覺有調整時:
對更新元件重新執行 Step 3 的 prompt → 更新 src/components.css 對應的 class → 執行 npm version patch + git push --follow-tags

不需要修改每個 HTML prototype,只更新 components.css 一次,所有取用該元件的 prototype 自動正確。

完整前置環境驗證清單

Layer 1a tokens.css 已就緒,npm install 成功
Layer 1b components.css 已建立,高頻元件(卡片、按鈕)有對應 class
Layer 2 CLAUDE.md 已更新,有元件 class 對照表且明確禁止 AI 重定義元件 CSS
Layer 3 設計規格 MD 已就緒(不再需要視覺結構表格,只寫設計意圖)
測試 第一個 prototype 生成完成,對照 Figma 確認元件骨架正確

元件精準還原挑戰 components.css Layer 1b 設計工作原則 前置工作流程
09

結語:設計文件不是負擔,是設計意圖的載體

很多設計師一聽到「還要寫文件」就退縮,覺得這是工程師的工作,或者是「讓開發更麻煩」的事。 但設計規格文件的存在,不是為了讓開發更嚴謹,而是讓你的設計意圖能被執行

不管是人工工程師還是 AI,在執行你的設計時,他們只能根據你給的資訊做決定。 資訊不夠,他們就猜。猜出來的結果,你看了不對勁,然後一個一個改。 這個來回修正的成本,遠遠超過提前寫一份 15 分鐘的規格文件。

「npm token 讓 AI 知道有哪些顏色。CLAUDE.md 讓 AI 知道顏色的用法規則。設計規格 MD 讓 AI 知道你的設計意圖。三層都有,一句 prompt 就能精準輸出。」

Vibe coding 的「vibe」不是「隨便說說」,而是「設計意圖高密度傳遞」。 當你有完整的三層知識體系,你對 AI 說一句「幫我做商品列表頁」, AI 輸出的結果,設計師看得出來是 SHP 的設計語言,工程師看得出來是可以直接上線的 token 結構。

這不是替代設計,是讓設計意圖真的可以被執行。

3 文件類型涵蓋所有場景
15 分鐘完成一份元件規格
5 分鐘完成一份設計探索文件
Vibe Coding 設計規格文件 SHP Design System AI 設計協作 @tofuydesign/shp-react