Communitygithub.com

beavon2010/claude-skills

從前端原始碼(React、Vue、Svelte、Angular、純 HTML/CSS 或任何網頁框架)中提取完整的設計系統文件 (DESIGN.md),無需建置或執行應用程式。

claude-skills 是什麼?

此技能專為開發者與 AI 代理設計,能直接從前端程式碼庫中逆向工程出結構化的設計系統文件。它透過解析組件檔案、樣式表、Tailwind 設定、主題定義與設計代碼,產生一份詳盡、與 Stitch 相容的 DESIGN.md。支援平台廣泛,包括 React、Vue、Svelte、Angular 及純 CSS。工作流程分為專案探索、深度萃取與文件撰寫三階段。在第一階段,它會檢測框架並掃描目錄結構;第二階段則有系統地分析視覺主題、色彩、排版、元件樣式與佈局原則,並將原始值轉譯成富含意圖的描述性語言;最後在第三階段生成包含 YAML 前置元資料的標準化 DESIGN.md 文件。此技能特別適用於無法建置應用程式、需快速審計視覺語言、或希望將設計系統遷移至 Stitch 等場景。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/beavon2010/claude-skills/tree/HEAD/.claude/skills/extract-design-md

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

從前端程式碼提取設計系統

分析前端原始碼,提取一份全面的設計系統文件 (DESIGN.md),捕捉專案的視覺語言 —— 顏色、排版、間距、組件模式和佈局原則 —— 直接從原始檔案中讀取,無需建置或執行應用程式。

為何存在

design-md 技能需從渲染的 HTML 入手。但通常你有一個程式碼庫,想在執行應用程式前就先了解其設計系統 —— 可能相依套件缺失、建置中斷、或只是想快速審計。此技能直接讀取原始檔案:樣式表、組件檔案、主題配置和 Tailwind 設定。它更快,且適用於任何情況。

使用時機

  • 使用者有一個前端程式碼庫,想要提取或記錄其設計系統
  • 使用者想將專案的視覺識別遷移到 Stitch
  • 使用者要求「審計樣式」或「了解程式碼庫的設計語言」
  • 使用者想從現有原始碼建立 DESIGN.md
  • 應用程式無法建置/渲染,但原始碼可用
  • 使用者想統一或協調程式碼庫中不一致的樣式

前提條件

  • 能存取前端專案的原始目錄
  • 不需要建置或執行時的相依套件 —— 此技能僅讀取原始檔案

工作流程

第一階段:專案探索

首先了解你處理的專案。這決定了要使用哪些提取模式。

1. 偵測框架與技術棧

掃描專案根目錄,尋找標誌性檔案:

信號檔案框架 / 工具
package.json 包含 reactReact / Next.js
package.json 包含 vueVue / Nuxt
package.json 包含 svelteSvelte / SvelteKit
package.json 包含 @angular/coreAngular
tailwind.config.js/tsTailwind CSS
postcss.config.jsPostCSS 管道
styled-components 或 @emotion 在相依中CSS-in-JS
僅 .css / .scss / .less 檔案純 CSS / SASS
theme.js / theme.ts / tokens.js設計代碼檔案

先讀取 package.json —— 它會揭示框架、CSS 工具和任何設計代碼函式庫(例如 style-dictionary、@chakra-ui/react、@mui/material、ant-design)。這個背景資訊告訴你應該到哪裡尋找樣式資訊。

2. 映射原始碼樹

標示出你要分析的關鍵目錄和檔案:

src/
├── components/     ← 組件層級樣式
├── styles/         ← 全域樣式表
├── theme/          ← 主題定義、代碼
├── assets/         ← 字型、圖片
├── app.css         ← 根層級樣式
└── index.css       ← 進入點 CSS

同時檢查:

  • tailwind.config.js / tailwind.config.ts —— 自訂顏色、字型、間距
  • globals.css / global.css —— CSS 自訂屬性(變數)
  • 任何 theme.* 或 tokens.* 檔案
  • 組件庫配置(例如 chakra-theme.ts、vuetify.config.ts)

3. 閱讀框架專用指南

查閱適當的參考文件以了解提取模式:

這些參考文件包含框架專用的模式,用於尋找顏色、排版、間距和組件樣式。在繼續之前,請閱讀與你專案相符的那一份。


第二階段:深度萃取

系統性地處理每個設計維度。針對每個維度,從原始檔案中收集原始數據,然後將其綜合為描述性語言。

目標不是轉儲每個 CSS 屬性 —— 而是了解樣式選擇背後的意圖,並用人性化、編輯風格的語言描述它們,讓另一位設計師(或 Stitch)可以用來重現相同的視覺感覺。

1. 視覺主題與氛圍

首先讀取最廣泛的樣式,以了解整體氛圍:

  • 根層級背景:body 或根元素的背景是什麼?淺奶油色(#f 範圍)表示輕盈/乾淨;深色(#0-#2 範圍)表示陰鬱/戲劇化。
  • 留白哲學:間距值是否寬敞(32px 以上)或緊湊?檢查根容器、區段包裝器和卡片組件上的 padding/margin 值。
  • 密度:計算每頁/每區段的組件數量。少且有空間 = 極簡;多且緊密排列 = 資訊密集。
  • 色溫:中性色是暖色調(奶油色、黃褐色)還是冷色調(藍灰色、石板色)?
  • 整體感覺:綜合為 1-2 句豐富的句子,捕捉其氛圍。

在原始碼中尋找這些信號:

來源位置告訴你什麼
根層級 background-color 或佈局上的 Tailwind bg-*整體明暗度
Tailwind 配置或 CSS 變數中的間距比例留白哲學
組件數量與包裝器 padding密度
自訂屬性命名(--warm-* vs --cool-*)色溫意圖
主題檔案中的註解開發者自己文字中的設計意圖

2. 色彩調色盤與角色

從程式碼庫中提取每個獨特的顏色,並分配功能角色。搜尋所有層級:

在哪裡找到顏色:

層級搜尋什麼
CSS 自訂屬性--color-*、--primary、--bg-*
Tailwind 配置theme.extend.colors
主題/代碼檔案顏色物件、調色盤
組件樣式background-color、color、border-color
內聯/作用域樣式模板中的 bg-*、text-* 類別
CSS-in-JS 主題物件colors、palette 鍵

如何組織: 按功能(而非色調)對顏色進行分組:

  1. 主要基礎 —— 背景和表面顏色
  2. 強調與互動 —— CTA 按鈕、活躍狀態、連結
  3. 排版與文字層級 —— 主要、次要、第三級文字
  4. 功能狀態 —— 成功、錯誤、警告、資訊

對於每種顏色,建立一個描述性名稱,喚起顏色的特質,而非原始十六進位值:

  • ❌ #294056 → 「藍色」
  • ✅ #294056 → 「深沉的柔和藍綠海軍藍」 —— 主要 CTA、活躍導航

去重很重要。 程式碼庫經常有近乎重複的顏色(例如 #333 和 #2C2C2C)。將它們統一在一個最能代表預期顏色的名稱下。

3. 排版規則

提取完整的排版系統:

字型家族:

  • 檢查 CSS font-family、Tailwind fontFamily、Google Fonts 連結或本機 @font-face 宣告。
  • 注意每種字型的特質:幾何 vs 人文主義、襯線 vs 無襯線、它所喚起的感覺。

字級(層級):

  • 找到每個標題層級(H1-H6)和正文,記錄:
    • font-size(rem 或 px)
    • font-weight(數值 + 描述性名稱)
    • letter-spacing(以及原因 —— 優雅?緊湊?)
    • line-height(寬敞以提高可讀性?緊湊以用於顯示?)
  • 映射組件使用情況:產品卡片使用哪個標題層級?英雄區段呢?

間距原則:

  • 文字間距如何與整體間距比例相關?
  • 標題 vs 正文的字母間距模式
  • 行高哲學(正文寬敞/放鬆,顯示緊湊)

4. 組件樣式

分析 4-5 個最重要的 UI 基本元素:

按鈕:

  • 邊角半徑(以及它傳達了什麼 —— 俏皮?專業?極簡?)
  • 主要、次要和幽靈變體的配色方案
  • 懸停/焦點/活躍狀態和轉場時機
  • 內邊距比例(水平 vs 垂直)

卡片 / 容器:

  • 邊角半徑(通常與按鈕不同 —— 略圓)
  • 陰影策略:平坦、微妙的懸停陰影、或總是升高?
  • 邊框處理:髮絲線邊框、彩色強調邊框或無?
  • 內部內邊距(寬敞或緊湊?)
  • 卡片內的圖片處理(滿版出血、內邊距、圓角?)

導航:

  • 佈局模式(水平欄、垂直側邊欄、抽屜)
  • 排版處理(大寫、字母間距、粗細)
  • 活躍/懸停狀態指示器(底線、顏色、背景)
  • 行動裝置行為(漢堡選單、底部導航、抽屜)

輸入框與表單:

  • 邊框樣式和焦點狀態行為
  • 與按鈕一致的邊角樣式
  • 內邊距和觸控目標大小

領域特定組件:

  • 標示出該專案獨有的 1-2 個組件(例如產品卡片、儀表板小工具、聊天氣泡)並描述其樣式模式。

5. 佈局原則

提取結構系統:

網格與結構:

  • 最大內容寬度(來自容器上的 max-width)
  • 欄位系統(CSS Grid、Flexbox 模式、定義的中斷點)
  • 響應式中斷點(來自 media query 或 Tailwind 配置)

留白策略:

  • 基本間距單位(8px 網格?4px?自訂?)
  • 區段邊距(主要區段之間的間距)
  • 邊緣內邊距(不同中斷點下的頁面邊距)

對齊與視覺平衡:

  • 文字對齊模式(置中英雄、左對齊正文)
  • 圖片與文字的比例
  • 視覺重量分佈

響應式行為:

  • 行動優先還是桌面優先?
  • 網格如何折疊?內邊距比例?
  • 觸控目標大小

6. Stitch 生成備註

將萃取結果綜合為可操作的 Stitch 提示:

  • 氛圍語言:將氛圍轉譯為自然描述符
  • 顏色參考:按描述性名稱 + 十六進位值列出顏色
  • 組件提示:撰寫 2-3 個範例提示,可在 Stitch 中重建關鍵組件
  • 迭代指引:在此設計系統中優化畫面的技巧

第三階段:撰寫 DESIGN.md

將所有內容組裝成標準的 DESIGN.md 格式。將其放置在專案目錄的 .stitch/DESIGN.md 中(如果 .stitch/ 目錄不存在,請建立它)。

[!IMPORTANT] 你必須在檔案頂部包含 YAML 前置元資料,並包含 name 和 colors 對應,與 examples/DESIGN.md 中的範例完全相同。此結構化數據是其他技能解析設計系統所必需的。

未包含此 YAML 區塊(至少包含核心顏色代碼)即表示未能正確使用此技能。

使用 examples/DESIGN.md 中的範例作為模板。檔案必須以 YAML 區塊開頭,後接 markdown 章節:

# 設計系統:[專案名稱]
**專案 ID:** [如果已知,否則省略]

## 1. 視覺主題與氛圍
[關於氛圍、哲學和關鍵特性的 2 段豐富描述]

## 2. 色彩調色盤與角色
### 主要基礎
### 強調與互動
### 排版與文字層級
### 功能狀態

## 3. 排版規則
### 層級與字重
### 間距原則

## 4. 組件樣式
### 按鈕
### 卡片與 [領域特定容器]
### 導航
### 輸入框與表單
### [領域特定組件]

## 5. 佈局原則
### 網格與結構
### 留白策略
### 對齊與視覺平衡
### 響應式行為與觸控

## 6. 供 Stitch 生成的設計系統備註
### 使用的語言
### 顏色參考
### 組件提示
### 增量迭代

第四階段:整合(選用)

如果使用者想將設計系統推送至 Stitch:

  1. 移交給 manage-design-system 技能,以進行 MCP 建立/更新呼叫
  2. 你撰寫的 DESIGN.md 即為輸入 —— manage-design-system 技能會處理 Stitch API 整合

如果使用者只需要文件,則在第三階段完成後即可結束。


品質檢查清單

在交付 DESIGN.md 之前,請確認:

  • 每種顏色都有描述性名稱、十六進位碼和功能角色
  • 排版包括字型家族、字型特質描述和完整層級
  • 組件樣式描述了形狀、顏色、狀態和轉場
  • 佈局包括最大寬度、網格、中斷點和間距策略
  • Stitch 生成備註使用自然語言,而非 CSS 語法
  • 氛圍章節讀起來像編輯文案,而非技術文件
  • 近乎重複的顏色已合併
  • 文件捕捉了樣式背後的意圖,而不僅僅是原始值

更好的提取技巧

  • 閱讀註解和提交訊息。 開發者經常在程式碼註解(/* hero section — breathable */)和提交訊息中記錄設計意圖。這些對於理解原因非常有價值。
  • 檢查設計代碼函式庫。 如果專案使用 style-dictionary、@tokens-studio 或類似套件,這些檔案是設計值最權威的來源。
  • 主題檔案的信號強度高於組件樣式。 定義調色盤的 theme.ts 告訴你預期的設計系統;散落在組件中的內聯樣式則告訴你實際交付的內容。兩者都很重要,但從主題開始。
  • Tailwind 配置就是一個設計系統。 如果一個專案有自訂的 tailwind.config.js,那就是設計系統 —— 先從中提取,然後抽查組件是否有覆蓋。
  • CSS 自訂屬性是刻意的。 如果開發者定義了 --brand-primary,他們是在告訴你這是一個設計代碼。請尊重它。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能