Communitygithub.com

design-md · DESIGN.md 設計契約工作流程

DESIGN.md 設計契約工作流程——為任意專案生成/提煉/驗收前端設計系統。基於 Google Stitch 規範的 DESIGN.md(YAML 令牌 + 11 節正文)沉澱設計決策,產出機器可讀 tokens、tokens.css(雙形式令牌)、Tailwind 映射與可視化預覽頁,並用 WCAG 2.1 對比度門禁做回歸驗收(可在 CI 中阻斷構建)。

design-md · DESIGN.md 設計契約工作流程 とは?

這是一個專為 AI 代理設計的「設計契約工作流程」技能,旨在將前端專案中的設計決策從零散的樣式程式碼中提取出來,並沉澱為一份標準化的 DESIGN.md 文件。該文件遵循 Google Stitch 規範,包含 YAML 前文 + 11 節正文,讓 AI 代理與人都能讀懂。此技能支援從任意 URL 提煉設計令牌草稿、自動生成 tokens.css(雙形式令牌,支援 Tailwind)、Tailwind 配置檔、可視化預覽頁及對比度報告。內建 WCAG 2.1 對比度引擎 `wcag.py` 可作為 CI 門禁,確保所有顏色變更符合可近用性標準。它還整合了 awesome-design-md(84 個真實品牌 DESIGN.md 參考庫)與 DeepSeek Search/Fetch 即時網頁研究(付費直連,**預設關閉**,需使用者明確同意並使用 `--yes-billing`;無金鑰或未同意時優雅降級為內建抓取)。此技能主要適用於需要設計規範統一、從參考網站提取配色/字體、審計 UI 對比度或進行競品設計研究的場景。

対応✓Claude Code~Codex CLI✓Cursor✓OpenCode
npx skills add Levango7/design-md-skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

design-md · DESIGN.md 設計契約工作流程 は何をしますか?

把「設計決策」從散落的樣式程式碼裡抽出來,沉澱成 DESIGN.md——一份 AI agent 與人都能讀的 設計契約。本 skill 覆蓋完整閉環:

研究(可選聯網) → 提煉(extract) → 生成(scaffold) → 應用到程式碼 → 驗收(verify) → CI 門禁

DESIGN.md 是 Google Stitch 提出的概念:純文字設計系統文件,放在專案根目錄, 任何 AI coding agent 讀了之後產出的 UI 都能保持視覺一致。 AGENTS.md 管「怎麼構建」,DESIGN.md 管「長什麼樣」。

目錄結構

位置用途
scripts/wcag.pyWCAG 2.1 對比度引擎:解析 tokens.css / design-tokens.json,自動按約定配對核算(文字 4.5:1、UI 3:1),exit code 可直接當 CI 門禁
scripts/extract.py從任意 URL 提煉設計令牌草稿(配色排名 / 字體棧 / 圓角),產出 tokens-draft.json + DESIGN.draft.md 骨架
scripts/scaffold.py從令牌 JSON 一鍵生成:tokens.css(雙形式令牌)+ tailwind.extend.js + preview.html 可視化目錄 + 對比度報告
scripts/fetch_ref.py從 awesome-design-md 拉取參考 DESIGN.md(84 個品牌,raw → gh api 雙通道回退)
scripts/research.pyDeepSeek Search/Fetch 聯網研究(計費直連、預設關閉:需使用者明確同意後帶 --yes-billing;key 從本機檔案 / 環境變數讀取,永不回顯)
references/spec.mdDESIGN.md 檔案規範:frontmatter + YAML 令牌 + 11 節正文 + 寫法規則
references/lessons.md血淚教訓集:雙形式令牌、alpha 稀釋陷阱、accent 拆分、資料契約等(來自真實生產審計)
references/research.mdDeepSeek Search/Fetch API 用法 + awesome-design-md 參考庫目錄(84 slug 全量)
references/verify.md驗收清單 + CI 接線範本(npm script / GitHub Actions)
templates/design-tokens.example.json可直接跑通的輸入範例(雙主題、全部通過 AA),照它改即可

快速開始

# 0) 環境:python3 ≥ 3.9,僅用標準庫
python3 scripts/wcag.py --help

# 1) 研究(可選):從參考站點提煉令牌草稿
python3 scripts/extract.py --url https://example.com --out-dir ./design-draft
#    → design-draft/tokens-draft.json + design-draft/DESIGN.draft.md

# 2) 拉一個知名品牌 DESIGN.md 當參考(當靈感,不當抄襲)
python3 scripts/fetch_ref.py --list                 # 看 84 個 slug
python3 scripts/fetch_ref.py --slug linear.app      # → ./DESIGN.reference-linear.app.md

# 2b) (可選)DeepSeek 聯網研究——付費直連(5 元/1000 次成功請求),預設關閉:
#     僅當使用者明確同意後,才帶 --yes-billing 執行;key 由本機檔案提供,永不進對話/日誌
python3 scripts/research.py --yes-billing check     # 驗證 key(預設讀 %USERPROFILE%\.deepseek\api_key)
python3 scripts/research.py --yes-billing search --query "fintech dashboard design site:dribbble.com" --count 8

# 3) 生成完整令牌工程(以你對齊後的 tokens JSON 為輸入)
python3 scripts/scaffold.py --tokens my-tokens.json --out ./design-out
#    → tokens.css / design-tokens.json / tailwind.extend.js / preview.html / contrast-report.txt

# 4) 驗收(獨立跑,也可接 CI)
python3 scripts/wcag.py --tokens ./design-out/tokens.css     # CSS 輸入
python3 scripts/wcag.py --tokens ./design-out/design-tokens.json   # JSON 輸入
python3 scripts/wcag.py --pair "#E6E9EF:#0A0C10:4.5"         # 單對 hex 速查

標準工作流程(給 agent 的執行順序)

  1. 定需求:讀專案現狀(有沒有 DESIGN.md / tokens / 元件庫),明確主題方向(暗色優先?品牌色?行業調性——金融/開發者工具/醫療…)。
  2. 研究(可選):用 references/research.md 裡的方法做設計研究——DeepSeek Search 找參考站點(付費直連且預設關閉:先向使用者展示費用口徑並取得明確同意,才能帶 --yes-billing;未同意則一律走內建抓取),DeepSeek Fetch / 內建抓取把頁面轉 Markdown 細讀;從 awesome-design-md 拉 1-3 個同行業 DESIGN.md 參考。
  3. 提煉/起草:extract.py 出草稿 → 按 references/spec.md 的 11 節結構人工/agent 歸併角色(把「出現 200 次的 #5e6ad2」變成「品牌主色,用於 CTA 與焦點環」)。
  4. 生成:整理成規範 tokens JSON → scaffold.py 產出全套工程檔案(含預覽頁給使用者看效果)。
  5. 應用:把 tokens.css / tailwind 映射接進專案;元件按 DESIGN.md §4 的元件規則實作。
  6. 驗收:wcag.py 全綠 + references/verify.md 清單逐項過;把門禁接進 CI(見 verify.md 範本)。
  7. 迭代:改任何色值 → 必須重跑 wcag.py,不憑觀感;設計決策變更寫回 DESIGN.md(版本註記)。

硬規則(務必遵守)

  1. 對比度不靠觀感:任何顏色改動都要跑 wcag.py。文字 ≥4.5:1,UI 控件/邊框 ≥3:1。
  2. 雙形式令牌:每個顏色同時輸出 --x(hex)與 --x-rgb(通道),否則 Tailwind 透明度修飾符靜默失效(詳見 lessons.md #1)。
  3. 不要用 bg-{warn}/10 之類的 alpha 稀釋做淺底——淺底必須是獨立令牌(--warn-soft)。實測稀釋法在淺色主題下對比度反而惡化。
  4. 品牌色拆兩檔:--accent(文字/連結)與 --accent-solid(實底按鈕)。同一個值不可能同時滿足「暗背景上的亮文字」和「白字下的暗底」兩個 ≥4.5:1。
  5. 可互動邊界用 --border-strong(3:1),--border 只做裝飾性分隔。
  6. 誠實標註 Known Gaps:沒提取到的(表單錯誤態、亮色版、私有字體替代)如實寫進 DESIGN.md,不裝完整。
  7. 參考 ≠ 照抄:awesome-design-md 的分析對象是各品牌的公開 CSS 特徵;引用時讀它們的「方法」(層級、節奏、取捨),不要冒充品牌身份;商業專案注意商標與字體授權。

安全

  • 絕不回顯任何 API Key。key 解析順序:--key-file → 環境變數 DEEPSEEK_API_KEY → 環境變數 DEEPSEEK_API_KEY_FILE → 預設檔案 %USERPROFILE%\.deepseek\api_key(推薦讓使用者 自行在終端建立,key 不經過對話/日誌)。research.py 全鏈路輸出做 sk-*** 遮罩。
  • 計費保護(預設關閉,2026-10):DeepSeek Search/Fetch 為直連計費 API(各 5 元/1000 次 成功請求;帳號級 Search 100 QPS / Fetch 25 QPS)。research.py 未帶 --yes-billing (且環境變數 DEEPSEEK_BILLING_CONSENT 非 1)時直接拒絕執行(exit 3)——agent 必須先 向使用者說明費用並取得明確同意,才可加旗標;opencode 等按量計費環境預設視為未同意。
  • 未配置 key 時不做 docstring 所謂的「必須聯網」假設——extract.py 走本地 urllib 抓取,DeepSeek 只是增強項。
  • 抓取遵守 robots 與訪問頻率;extract.py 預設最多抓 5 張樣式表、單張 512KB 上限。

與其他能力的關係

  • awesome-design-md(VoltAgent,MIT):84 個真實站點的 DESIGN.md 分析集合。本 skill 提供 fetch_ref.py 一鍵取用;它是「參考素材庫」,本 skill 是「工作流程引擎」。
  • DeepSeek Search/Fetch:https://api.deepseek.com/v1/tools/search|fetch。設計研究階段的即時網頁檢索與正文抓取(含 site:/lang:/after: 語法)。按次計費(5 元/1000 次成功請求——僅「返回 200 且結果非空」計費,失敗/超時/空結果不計費)。帳號級限速 Search 100 QPS / Fetch 25 QPS(超出返回 429,research.py 自動退避重試)。本 skill 提供 scripts/research.py 封裝呼叫(key 永不回顯;預設關閉——需使用者明確同意並帶 --yes-billing,見 §安全)。
  • Google Stitch 官方 lint(可選):npx @google/design.md lint DESIGN.md。

関連スキル