mcpField
D
design-system-lead

design-system-lead

github.com/borghei设计与 UI1.0k257 次安装5 天前更新
代码仓库

关于 design-system-lead

design-system-lead 面向构建设计系统的团队,涵盖令牌架构、组件文档、采用情况衡量与治理,并提供生成令牌和分析系统健康度的工具。

主要功能

  1. 01设计系统成熟度评估
  2. 02三层令牌架构
  3. 03组件文档脚手架
  4. 04治理与版本管理流程
  5. 05采用情况及无障碍分析

适用场景

  1. 01根据品牌色建立令牌
  2. 02记录组件变体与状态
  3. 03制定设计系统贡献规则
  4. 04检查各产品的采用情况

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/borghei/claude-skills --skill design-system-lead

安装后在 Claude Code 中输入/design-system-lead确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
adoption_analyzer.py
component_scaffold.py
token_gen.py

详细介绍

设计系统负责人

该 Agent 作为资深设计系统负责人,为跨职能产品团队交付可扩展的组件库、令牌架构、治理流程和采用策略。

先澄清

生成设计系统之前,请确认以下输入。如果任何信息未知或含糊不清,请提问,不要自行假设:

  • 品牌颜色和现有令牌 — 用于构建的原始值(决定三级令牌架构)
  • 当前成熟度级别 — 初步、已定义、已管理或已优化(决定是建立基础,还是优化治理)
  • 目标平台 — Web(CSS/SCSS)、iOS、Android(决定令牌导出格式和 Style Dictionary 配置)

停止规则:只询问对输出影响最大的 2-3 个问题。如果用户说“先起草一份”,就继续,并在文档开头列出假设。

工作流

  1. 评估成熟度 - 评估当前设计系统的成熟度(初步、已定义、已管理或已优化)。审查现有模式、不一致之处和自定义组件。检查点:记录成熟度级别及其依据。
  2. 定义令牌架构 - 构建三级令牌结构:原始令牌(原始值)、语义令牌(基于用途的别名)和组件令牌(限定于特定 UI 元素)。检查点:每个语义令牌都引用一个原始令牌;不再保留硬编码值。
  3. 构建组件库 - 从基础组件(Button、Input、Icon)开始设计和实现组件,然后是复合组件(Card、Modal、Dropdown),最后是模式(Forms、Navigation、Tables)。检查点:每个组件都包含变体、尺寸、状态、属性表和无障碍要求。
  4. 编写完整文档 - 为每个组件编写使用指南、代码示例、应做与不应做的事项,以及无障碍说明。检查点:文档涵盖安装、基本用法、所有变体,以及至少一条无障碍说明。
  5. 建立治理机制 - 定义从 RFC 到发布的贡献流程。制定版本策略(SemVer)。检查点:贡献流程已发布,并由设计和工程负责人共同审阅。
  6. 衡量采用情况 - 跟踪覆盖率(使用 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, -cstring#0066CC十六进制格式的品牌颜色
--format, -fchoicesummary输出格式:json、css、scss、summary
--tiers, -tchoiceall令牌层级:all、primitive、semantic、component
--output, -ostring(stdout)生成文件的输出目录
--jsonflagFalse--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, -nstring(required)PascalCase 格式的组件名称
--category, -cchoice(required)类别:primitive、composite、pattern
--variants, -vstring(category default)以逗号分隔的变体名称
--sizes, -sstringsm,md,lg以逗号分隔的尺寸名称
--jsonflagFalse以 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

通过评估组件覆盖率、令牌合规性、自定义覆盖项和无障碍评分,分析各产品对设计系统的采用情况。生成健康度仪表板,提供按产品和整个产品组合划分的分析结果。

标志类型默认值说明
inputpositional(required)包含采用数据的 CSV 文件或 "sample"
--threshold, -tint75用于标记问题的健康度评分阈值
--jsonflagFalse以 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-JStoken_gen CSS/JSON 导出根据设计令牌配置主题

评论

支持 Markdown