Communitygithub.com

design-md · DESIGN.md 设计契约工作流

为任意项目生成 / 提炼 / 验收前端设计系统,基于 Google Stitch 规范的 DESIGN.md 文件,产出机器可读令牌、Tailwind 映射与可视化预览页。

Qu'est-ce que design-md · DESIGN.md 设计契约工作流 ?

这个技能将前端设计的视觉决策从散落的样式代码中提取出来,沉淀为一份标准化的 DESIGN.md 文件,让 AI 代理和人类开发者都能理解并保持一致。它支持完整的闭环流程:从研究(可选联网,如 DeepSeek Search/Fetch,需用户显式同意计费)到提炼(从任意 URL 抓取样式表生成令牌草案)、生成(自动创建 tokens.css、Tailwind 配置、预览页)、应用到代码、验收(WCAG 2.1 对比度引擎,可直接用作 CI 门禁),再到迭代。集成 awesome-design-md 参考库(84 个真实品牌 DESIGN.md),并且严格遵守硬性规则,如双形式令牌(hex 和 RGB 通道)、品牌色拆分两档、诚实标注已知缺口。该技能适用于需要建立设计规范、统一样式、审计对比度或进行设计研究的项目,不适用于纯后端/数据管道任务或仅生成图片的需求。

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait 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。

Skills associés