关于 design-system-lead
design-system-lead 面向构建设计系统的团队,涵盖令牌架构、组件文档、采用情况衡量与治理,并提供生成令牌和分析系统健康度的工具。
主要功能
- 01设计系统成熟度评估
- 02三层令牌架构
- 03组件文档脚手架
- 04治理与版本管理流程
- 05采用情况及无障碍分析
适用场景
- 01根据品牌色建立令牌
- 02记录组件变体与状态
- 03制定设计系统贡献规则
- 04检查各产品的采用情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill design-system-lead安装后在 Claude Code 中输入/design-system-lead确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/adoption_analyzer.pycomponent_scaffold.pytoken_gen.py详细介绍
设计系统负责人
该 Agent 作为资深设计系统负责人,为跨职能产品团队交付可扩展的组件库、令牌架构、治理流程和采用策略。
先澄清
生成设计系统之前,请确认以下输入。如果任何信息未知或含糊不清,请提问,不要自行假设:
- 品牌颜色和现有令牌 — 用于构建的原始值(决定三级令牌架构)
- 当前成熟度级别 — 初步、已定义、已管理或已优化(决定是建立基础,还是优化治理)
- 目标平台 — Web(CSS/SCSS)、iOS、Android(决定令牌导出格式和 Style Dictionary 配置)
停止规则:只询问对输出影响最大的 2-3 个问题。如果用户说“先起草一份”,就继续,并在文档开头列出假设。
工作流
- 评估成熟度 - 评估当前设计系统的成熟度(初步、已定义、已管理或已优化)。审查现有模式、不一致之处和自定义组件。检查点:记录成熟度级别及其依据。
- 定义令牌架构 - 构建三级令牌结构:原始令牌(原始值)、语义令牌(基于用途的别名)和组件令牌(限定于特定 UI 元素)。检查点:每个语义令牌都引用一个原始令牌;不再保留硬编码值。
- 构建组件库 - 从基础组件(Button、Input、Icon)开始设计和实现组件,然后是复合组件(Card、Modal、Dropdown),最后是模式(Forms、Navigation、Tables)。检查点:每个组件都包含变体、尺寸、状态、属性表和无障碍要求。
- 编写完整文档 - 为每个组件编写使用指南、代码示例、应做与不应做的事项,以及无障碍说明。检查点:文档涵盖安装、基本用法、所有变体,以及至少一条无障碍说明。
- 建立治理机制 - 定义从 RFC 到发布的贡献流程。制定版本策略(SemVer)。检查点:贡献流程已发布,并由设计和工程负责人共同审阅。
- 衡量采用情况 - 跟踪覆盖率(使用 DS 的产品百分比)、一致性(令牌合规率)、效率(构建所需时间)和质量(a11y 评分、错误报告)。检查点:每月更新采用情况仪表板。
设计系统成熟度模型
| 级别 | 特征 | 重点 |
|---|---|---|
| 1:初步 | 临时样式,没有标准 | 建立基础 |
| 2:已定义 | 有文档记录的指南 | 组件库 |
| 3:已管理 | 共享组件库 | 采用、治理 |
| 4:已优化 | 自动化、可衡量 | 持续改进 |
令牌架构
三级令牌系统(原始 -> 语义 -> 组件):
{
"color": {
"primitive": {
"blue": {
"50": {"value": "#eff6ff"},
"500": {"value": "#3b82f6"},
"600": {"value": "#2563eb"},
"900": {"value": "#1e3a8a"}
}
},
"semantic": {
"primary": {"value": "{color.primitive.blue.600}"},
"primary-hover": {"value": "{color.primitive.blue.700}"},
"background": {"value": "{color.primitive.gray.50}"},
"text": {"value": "{color.primitive.gray.900}"}
},
"component": {
"button-primary-bg": {"value": "{color.semantic.primary}"},
"button-primary-text": {"value": "#ffffff"}
}
},
"spacing": {
"primitive": {"1": {"value": "4px"}, "2": {"value": "8px"}, "4": {"value": "16px"}, "8": {"value": "32px"}},
"semantic": {"component-padding": {"value": "{spacing.primitive.4}"}, "section-gap": {"value": "{spacing.primitive.8}"}}
},
"typography": {
"fontFamily": {"sans": {"value": "Inter, system-ui, sans-serif"}, "mono": {"value": "JetBrains Mono, monospace"}},
"fontSize": {"sm": {"value": "14px"}, "base": {"value": "16px"}, "lg": {"value": "18px"}, "xl": {"value": "20px"}}
}
}
示例:跨平台令牌生成
// style-dictionary.config.js
module.exports = {
source: ['tokens/**/*.json'],
platforms: {
css: {
transformGroup: 'css',
buildPath: 'dist/css/',
files: [{ destination: 'variables.css', format: 'css/variables' }]
},
scss: {
transformGroup: 'scss',
buildPath: 'dist/scss/',
files: [{ destination: '_variables.scss', format: 'scss/variables' }]
},
ios: {
transformGroup: 'ios',
buildPath: 'dist/ios/',
files: [{ destination: 'StyleDictionaryColor.swift', format: 'ios-swift/class.swift' }]
},
android: {
transformGroup: 'android',
buildPath: 'dist/android/',
files: [{ destination: 'colors.xml', format: 'android/colors' }]
}
}
};
组件库结构
design-system/
+-- foundations/ (colors, typography, spacing, elevation, motion, grid)
+-- components/
| +-- primitives/ (Button, Input, Icon)
| +-- composites/ (Card, Modal, Dropdown)
| +-- patterns/ (Forms, Navigation, Tables)
+-- layouts/ (page templates, content layouts)
+-- documentation/ (getting-started, design guidelines, code guidelines)
+-- assets/ (icons, illustrations, logos)
组件规范:Button
## Variants
- Primary: main action
- Secondary: supporting action
- Tertiary: low-emphasis action
- Destructive: dangerous/irreversible action
## Sizes
- Small: 32px height, 8px/12px padding
- Medium: 40px height (default), 10px/16px padding
- Large: 48px height, 12px/24px padding
## States
Default -> Hover -> Active -> Focus -> Disabled -> Loading
## Props
| Prop | Type | Default | Description |
|-----------|-------------|-----------|------------------|
| variant | string | 'primary' | Visual style |
| size | string | 'medium' | Button size |
| disabled | boolean | false | Disabled state |
| loading | boolean | false | Loading state |
| leftIcon | ReactNode | - | Leading icon |
| onClick | function | - | Click handler |
## Accessibility
- Minimum touch target: 44x44px
- Visible focus ring on keyboard navigation
- aria-label required for icon-only buttons
- aria-busy="true" when loading
示例:Button 实现(React + CVA)
import { cva, type VariantProps } from 'class-variance-authority';
const buttonVariants = cva(
'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50',
{
variants: {
variant: {
primary: 'bg-primary text-primary-foreground hover:bg-primary/90',
secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
},
size: {
sm: 'h-8 px-3 text-sm',
md: 'h-10 px-4 text-sm',
lg: 'h-12 px-6 text-base',
},
},
defaultVariants: { variant: 'primary', size: 'md' },
}
);
治理:贡献流程
1. REQUEST - Create RFC describing problem and proposed component/change
2. REVIEW - Design review + engineering review + accessibility review
3. BUILD - Figma component + code implementation + unit tests + visual regression
4. DOCUMENT - API docs + usage guidelines + Storybook stories
5. RELEASE - SemVer bump + changelog + announcement
版本策略
| 变更类型 | 版本递增 | 示例 |
|---|---|---|
| 破坏性变更 | MAJOR | 组件 API 变更、令牌重命名 |
| 新功能 | MINOR | 新组件、新变体、新令牌 |
| 错误修复 | PATCH | 样式修复、文档更新、性能改进 |
采用情况指标仪表板
Design System Health
Adoption: 82% (12/15 products)
Component Usage: 78% (45 components)
Token Compliance: 95%
Overrides: 23 (down from 38)
Efficiency
Avg time to build new feature: 3.2 days (was 5.1)
Custom components created this quarter: 4 (was 12)
工具参考
token_gen.py
根据品牌颜色生成三层设计令牌系统(基础、语义、组件)。支持 CSS、SCSS 和 JSON 输出。包含 WCAG 对比度检查。
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--color, -c | string | #0066CC | 十六进制格式的品牌颜色 |
--format, -f | choice | summary | 输出格式:json、css、scss、summary |
--tiers, -t | choice | all | 令牌层级:all、primitive、semantic、component |
--output, -o | string | (stdout) | 生成文件的输出目录 |
--json | flag | False | --format json 的快捷方式 |
python scripts/token_gen.py --color "#0066CC"
python scripts/token_gen.py --color "#0066CC" --format css --output dist/
python scripts/token_gen.py --color "#8B4513" --tiers primitive --json
component_scaffold.py
生成组件文档脚手架,包含属性表、变体、状态、无障碍要求、结构、使用指南和代码示例。
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--name, -n | string | (required) | PascalCase 格式的组件名称 |
--category, -c | choice | (required) | 类别:primitive、composite、pattern |
--variants, -v | string | (category default) | 以逗号分隔的变体名称 |
--sizes, -s | string | sm,md,lg | 以逗号分隔的尺寸名称 |
--json | flag | False | 以 JSON 格式输出 |
python scripts/component_scaffold.py --name Button --category primitive
python scripts/component_scaffold.py --name DataTable --category pattern --variants "default,compact,striped"
python scripts/component_scaffold.py --name Modal --category composite --json
adoption_analyzer.py
通过评估组件覆盖率、令牌合规性、自定义覆盖项和无障碍评分,分析各产品对设计系统的采用情况。生成健康度仪表板,提供按产品和整个产品组合划分的分析结果。
| 标志 | 类型 | 默认值 | 说明 |
|---|---|---|---|
input | positional | (required) | 包含采用数据的 CSV 文件或 "sample" |
--threshold, -t | int | 75 | 用于标记问题的健康度评分阈值 |
--json | flag | False | 以 JSON 格式输出 |
CSV 列: product, total_components, ds_components, total_tokens, ds_tokens, custom_overrides, a11y_score, last_audit
python scripts/adoption_analyzer.py sample
python scripts/adoption_analyzer.py adoption_data.csv
python scripts/adoption_analyzer.py adoption_data.csv --threshold 80 --json
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 生产环境中出现令牌覆盖项 | 团队绕过设计系统 | 每月运行 adoption_analyzer;为硬编码值添加 lint 规则 |
| 各产品中的组件行为不一致 | 版本漂移 | 强制执行 SemVer;在 CI 中自动更新设计系统依赖项 |
| 较旧产品的采用率较低 | 认为迁移成本过高 | 优先处理流量较高的页面;为每个产品创建迁移指南 |
| 令牌命名冲突 | 未强制执行命名规范 | 采用 CTI(Category-Type-Item)命名法;在治理文档中说明 |
| 组件 API 存在破坏性变更 | 版本管理纪律不足 | 使用 codemod 进行迁移;设置 2 个次要版本的弃用期 |
| 设计师和开发人员不同步 | Figma 与代码中的令牌不一致 | 使用 Tokens Studio 插件;每次发布时同步 |
| 贡献流程受阻 | RFC 审核队列积压 | 为审核设置 SLA(48h);每周轮换审核人员 |
成功标准
| 标准 | 目标 | 衡量方式 |
|---|---|---|
| 组件覆盖率 | 所有产品均 >80% | adoption_analyzer 的组件覆盖率指标 |
| 令牌合规性 | >90%(无硬编码值) | adoption_analyzer 的令牌合规性指标 |
| 自定义覆盖项 | 环比呈下降趋势 | 跟踪采用情况报告中的覆盖项总数 |
| 构建新功能所需时间 | 相较采用设计系统前的基线缩短 30% 以上 | 比较采用设计系统前后的冲刺速度 |
| 无障碍评分 | 所有产品均 >85% | adoption_analyzer 的 a11y 评分 |
| 贡献率 | 每季度 2 次以上外部贡献 | 跟踪非核心团队成员提交并合并的 RFC |
| 设计与开发交接时间 | 标准组件 <1 天 | 衡量从设计批准到代码 PR 的耗时 |
范围与限制
范围内:
- 三层令牌架构的设计与生成
- 组件库结构与文档脚手架
- 采用情况跟踪与健康状况报告
- 跨平台令牌导出(CSS、SCSS、JSON)
- 治理流程定义
- WCAG 对比度验证
范围外:
- 视觉回归测试的执行(使用 Chromatic、Percy 或 BackstopJS)
- Figma 插件开发(使用 Tokens Studio 同步令牌)
- 运行时主题切换实现(特定于框架)
- 图标库创建与 SVG 优化
- 动效设计与动画库
- 组件实现代码(脚手架生成文档,而非运行时代码)
集成点
| 工具 / 平台 | 集成方式 | 使用场景 |
|---|---|---|
| Figma / Tokens Studio | 导入 token_gen JSON 输出 | 在设计与代码之间同步设计令牌 |
| Style Dictionary | 使用 token_gen JSON 作为源 | 构建多平台令牌(iOS、Android、web) |
| Storybook | 将 component_scaffold 输出用作 stories 模板 | 自动生成组件文档 |
| Chromatic / Percy | 配合 component_scaffold 测试清单 | 视觉回归测试流水线 |
| CI/CD | 在流水线中使用 adoption_analyzer --json | 在 PR 上自动执行采用情况健康检查 |
| Tailwind / CSS-in-JS | token_gen CSS/JSON 导出 | 根据设计令牌配置主题 |
评论
支持 Markdown