Communitygithub.com

tmj-90/設計系統

當一個任務需要為前端建立「系統化」的代號(token)與元件基礎時使用,包含三層代號架構(原始層→語意層→元件層)、W3C DTCG設計代號檔案、主題與深色模式、涵蓋所有狀態的元件規格,或為產品推薦合適的設計系統。適合用於「建立設計代號」、「定義元件系統」、「我們一直硬編顏色,請修正」、「這個產品該用哪種設計系統」,或作為結構性骨幹。

設計系統 是什麼?

這個技能專注於建立可擴展的系統化設計系統,採用三層代號架構:原始代號(原始數值,不帶語意)、語意代號(表達用途,如 --color-primary)、以及元件代號(每個元件的獨立參數)。它強制元件只能引用語意或元件代號,絕不能直接使用原始代號或字面值。主題切換(深色模式、高對比度等)只需在語意層重新指派,無需修改其他層級。 技能支援多種平台與工作流程,包括使用 W3C DTCG JSON 格式作為單一事實來源(透過 Style Dictionary 或類似工具生成 CSS 變數、Tailwind 主題)、從元件樣式中檢測原始值洩漏的檢查命令、以及完整的元件規格撰寫流程(包含變體、尺寸、狀態矩陣、ARIA 屬性、焦點可見性與 WCAG 對比度驗證)。對於全新產品,它會引導從產品模式、品牌方向、調色板姿態與可及性目標來推薦設計系統,而非直接套用現成套件。 技能的最終驗證步驟包括:重新生成代號輸出、執行 lint 與型別檢查、執行程式碼洩漏檢查、在每個主題下渲染修改過的元件、並記錄每項驗收條件的證據(如洩漏數前後對比、對比度表格)。完成條件是:元件中無新的字面值或原始代號引用、每個主題僅覆蓋語意代號、對比度表格在所有主題中合格、且每個觸及元件的狀態矩陣已實作並具有可見焦點。此外,它還包含一個「知識擷取」協議,將可重複使用的約定、訣竅、決策與邊界條件記錄為知識,供後續代理使用。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tmj-90/gaffer/tree/HEAD/runner/skills/design-system

在你喜歡的 AI 中提問

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

說明文件

建立系統化設計系統

brand 技能決定品牌識別;frontend-design 技能決定介面的外觀。 這個套件決定如何將外觀「結構化以實現可擴展性」:一個三層代號架構, 搭配單一事實來源、涵蓋所有狀態的元件規格、以及防止原始值回滲的檢查。 當你需要深入細節時,請載入參考文件:

主題參考文件
層級、命名、深色模式、DTCG JSON、從扁平代號遷移references/token-architecture.md
按鈕/輸入/卡片/標籤/提示/對話框/表格的變體、尺寸與狀態矩陣references/component-specs.md
狀態優先順序、焦點環、錯誤/載入模式、每個狀態的 ARIAreferences/states-and-variants.md

一句話說明架構

/* 原始層 — 原始數值,不含語意。極少變動。 */
--blue-600: oklch(55% 0.2 264);
/* 語意層 — 表達用途。主題切換點:淺色/深色/品牌覆蓋僅在此層。 */
--color-primary: var(--blue-600);
/* 元件層 — 每個元件的獨立參數,引用語意代號。 */
--button-bg: var(--color-primary);

元件應使用元件代號或語意代號 —— 絕不能使用原始代號或字面值。 主題(深色、高對比度、第二品牌)只需重新指派語意代號,無需更動其他層級。

單一事實來源。 如果倉庫使用 W3C Design Tokens Community Group (DTCG) JSON 格式儲存代號 —— 該格式已於 2025 年 10 月達到第一個穩定版本 2025.10 —— 那麼這些檔案就是來源:代號包含 $value 和 $type,別名寫為 {color.blue.600},並由建置工具(Style Dictionary 或倉庫中同等工具) 產生 CSS 變數、Tailwind 主題與原生值。請編輯 JSON 後重新產生; 切勿手動編輯產生的輸出。如果倉庫只有 CSS 自訂屬性,則以它們為來源。 請勿引入第二個來源。

步驟

  1. 閱讀現有內容。 使用 search_lore 搜尋設計系統的 ADR;尋找代號檔案 (*.tokens.json、tokens/、theme.ts、:root 區塊、Tailwind 設定)、用於產出結果的建置命令, 以及兩個同層級元件。請依其慣例擴展現有系統, 切勿加入另一個競爭系統。
  2. 先審計,再新增。 計算元件樣式中的字面值(使用下方命令)。你碰到的每個洩漏處 不是被現有代號取代,就是需要建立新代號。
  3. 將每個新代號放在正確的層級。 只有真正全新的原始數值才放原始層; 新的用途(--color-surface-raised、--space-section)放語意層; 唯有當某個元件必須與眾不同時才放入元件層。 命名應描述用途,而非外觀 (--color-danger,而非 --color-red)。顏色的原始代號使用 oklch(團隊慣例), 字體大小使用 clamp() 流暢縮放,間距以一個基礎單位(4px 或 8px)為基準。
  4. 在語意層進行主題切換。 深色模式及其他主題在一個區塊中覆蓋語意代號 ([data-theme="dark"]、.dark 或 @media (prefers-color-scheme: dark),依倉庫而定) 並設定 color-scheme 屬性,使原生控制項與捲軸能跟隨主題。 若某主題覆蓋了原始代號或元件代號,表示切換點位置有誤。
  5. 驗證每個主題的對比度。 對於每個實際使用的前景/背景語意配對 (文字在表面、文字在主色、邊框在表面、焦點環在表面), 計算每個主題中的 WCAG 對比度:一般文字 4.5:1,大型文字、 UI 邊界與焦點指示器為 3:1。oklch 的亮度不等於 WCAG 對比值——請 實際計算(透過腳本、倉庫的檢查工具或測試)。記錄對比度表格。
  6. 完整指定元件。 變體、尺寸(明確的高度、內邊距、字體代號)、 以及狀態矩陣——預設、懸停、焦點可見、啟用、停用、載入、錯誤、 以及相關的選中/勾選狀態——並附上每個狀態所暴露的 ARIA。 多重狀態同時生效時的優先順序:停用 > 載入 > 錯誤 > 啟用 > 焦點 > 懸停 > 預設。 焦點永遠可見(使用 --color-ring 的 :focus-visible 外框,絕不能單用 outline: none)。 詳細內容請見參考文件。
  7. 為新產品推薦設計系統: 從產品本身出發,而非套件—— (a) 模式與密度(行銷、數據密集儀表板、交易流程), (b) 方向(遵循 brand 的決定),(c) 調色板姿態(語意角色應包含 success/ warning/danger/info;僅在使用者需要時才提供深色模式),(d) 事先聲明可及性與 效能目標。輸出簡短的決策理由,加上代號與元件架構;視覺執行部分交給 frontend-design。
  8. 驗證並提供證據。 如果倉庫會建置代號,請重新產生代號輸出並確認差異只包含你預期的內容; 執行 lint、型別檢查與測試;執行洩漏檢查; 透過倉庫的元件測試或螢幕截圖測試(若存在)在每個主題下渲染修改過的元件。 使用 record-evidence 技能記錄每個驗收條件的證據(前後洩漏數量對比、對比度表格), 然後結束。

洩漏檢查

在修改過的元件與樣式檔案上執行(排除代號檔案本身):

  • 原始顏色:grep -rEn '#[0-9a-fA-F]{3,8}\b|rgba?\(|hsla?\(|oklch\(' src/components
  • 原始字體大小:grep -rEn 'font-size:\s*[0-9.]+px' src/components
  • 元件中引用的原始代號:grep -rEn 'var\(--(gray|blue|red|green)-[0-9]+' src/components
  • 已存在代號卻使用 Tailwind 任意值:grep -rEn '\[(#|[0-9]+px)' src/components

請根據倉庫實際情況調整路徑與原始代號名稱。在你的差異中出現的新匹配屬於缺陷, 應由建置者修正,除非該行本身是代號定義;審查者可將其標記為 (可選),除非它違反某項驗收條件或某個主題的對比度。

完成條件

元件中沒有新的字面值或原始代號引用;每個主題只覆蓋語意代號; 對比度表格在每個主題中皆通過;每個被觸及的元件的狀態矩陣已實作並具有可見焦點; 產生的輸出與來源一致。

知識擷取

倉庫的代號架構——層級劃分、命名慣例、深色模式切換點,或「元件中絕不能引用原始代號」的規則—— 正是下一個代理在開始工作前需要知道的事實。 這類事實屬於「知識」。 請透過你的簡報(CLAUDE.factory.md,步驟 11「記憶貢獻」)中的知識擷取 協議來記錄:在工作結束時呼叫一次 Memory MCP 的 suggest_lore——\n僅記錄可重複使用的慣例、訣竅、決策與邊界條件,而非每個任務的瑣碎細節。

Individual skills in this repo

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

相關技能