mcpField
U
ui-design-system

ui-design-system

github.com/borghei设计与 UI1.0k205 次安装1 周前更新
代码仓库

关于 ui-design-system

ui-design-system 是面向设计师和开发者的设计系统技能,可从品牌色生成令牌,并指导组件、响应式设计与交接文档。支持 CSS、SCSS 和 JSON 导出,并包含 WCAG 对比度检查流程。

主要功能

  1. 01从品牌色生成设计令牌
  2. 02导出 CSS、SCSS 和 JSON
  3. 03规划组件层级与变体
  4. 04计算响应式断点和排版
  5. 05准备开发交接文档
  6. 06检查 WCAG 色彩对比度

适用场景

  1. 01为新产品建立颜色与间距系统
  2. 02把令牌导出供项目集成
  3. 03规划组件库的结构和 API
  4. 04为开发团队准备设计交接

安装

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

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

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

包含的文件

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

references/
component-architecture.md
developer-handoff.md
responsive-calculations.md
token-generation.md
scripts/
design_token_generator.py

详细介绍

UI 设计系统

生成设计令牌、创建调色板、计算排版比例、构建组件系统,并准备开发者交接文档。


目录


触发词

在以下情况下使用此技能:

  • “生成设计令牌”
  • “创建调色板”
  • “构建排版比例”
  • “计算间距系统”
  • “创建设计系统”
  • “生成 CSS 变量”
  • “导出 SCSS 令牌”
  • “设置组件架构”
  • “记录组件库文档”
  • “计算响应式断点”
  • “准备开发者交接”
  • “将品牌色转换为调色板”
  • “检查 WCAG 对比度”
  • “构建 8pt 网格系统”

请先澄清

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

  • 品牌主色(hex) — 完整调色板的基础色(决定色阶并用于 WCAG 对比度检查)
  • 风格预设 — 现代、经典或活泼(决定字体、圆角和阴影样式)
  • 输出格式和框架 — 用于 Tailwind/styled-components/Figma 的 CSS、SCSS 或 JSON(决定导出方式和开发者交接内容)

停止规则:只询问对输出影响最大的 2-3 项。如果用户说“先随便起草”,则继续操作,并在交付内容开头列出你的假设。

工作流

工作流 1:生成设计令牌

情景: 已有品牌色,需要一套完整的设计令牌系统。

步骤:

  1. 确定品牌色和风格

    • 品牌主色(hex 格式)
    • 风格偏好:modern | classic | playful
  2. 使用脚本生成令牌

    python scripts/design_token_generator.py "#0066CC" modern json
    
  3. 检查生成的类别

    • 颜色:主色、辅助色、中性色、语义色、表面色
    • 排版:fontFamily、fontSize、fontWeight、lineHeight
    • 间距:基于 8pt 网格的比例(0-64)
    • 边框:圆角、宽度
    • 阴影:从 none 到 2xl
    • 动画:时长、缓动
    • 断点:从 xs 到 2xl
  4. 导出为目标格式

    # CSS custom properties
    python scripts/design_token_generator.py "#0066CC" modern css > design-tokens.css
    
    # SCSS variables
    python scripts/design_token_generator.py "#0066CC" modern scss > _design-tokens.scss
    
    # JSON for Figma/tooling
    python scripts/design_token_generator.py "#0066CC" modern json > design-tokens.json
    
  5. 验证无障碍性

    • 检查颜色对比度是否符合 WCAG AA(普通文本为 4.5:1,大号文本为 3:1)
    • 确认已为语义色定义对比色

工作流 2:创建组件系统

情景: 需要使用设计令牌构建组件库结构。

步骤:

  1. 定义组件层级

    • 原子:按钮、输入框、图标、标签、徽标
    • 分子:表单字段、搜索栏、卡片、列表项
    • 有机体:页眉、页脚、数据表格、模态框
    • 模板:DashboardLayout、AuthLayout
  2. 将令牌映射到组件

    组件使用的令牌
    按钮颜色、尺寸、边框、阴影、排版
    输入框颜色、尺寸、边框、间距
    卡片颜色、边框、阴影、间距
    模态框颜色、阴影、间距、z-index、动画
  3. 定义变体模式

    尺寸变体:

    sm: height 32px, paddingX 12px, fontSize 14px
    md: height 40px, paddingX 16px, fontSize 16px
    lg: height 48px, paddingX 20px, fontSize 18px
    

    颜色变体:

    primary: background primary-500, text white
    secondary: background neutral-100, text neutral-900
    ghost: background transparent, text neutral-700
    
  4. 记录组件 API

    • 属性接口及类型
    • 变体选项
    • 状态处理(悬停、激活、聚焦、禁用)
    • 无障碍性要求
  5. 参考: 请参阅 references/component-architecture.md


工作流 3:响应式设计

场景: 你需要设置断点、流体排版或响应式间距。

步骤:

  1. 定义断点

    名称宽度目标设备
    xs0小型手机
    sm480px大型手机
    md640px平板电脑
    lg768px小型笔记本电脑
    xl1024px台式电脑
    2xl1280px大屏幕
  2. 计算流体排版

    公式:clamp(min, preferred, max)

    /* 16px to 24px between 320px and 1200px viewport */
    font-size: clamp(1rem, 0.5rem + 2vw, 1.5rem);
    

    预先计算的比例:

    --fluid-h1: clamp(2rem, 1rem + 3.6vw, 4rem);
    --fluid-h2: clamp(1.75rem, 1rem + 2.3vw, 3rem);
    --fluid-h3: clamp(1.5rem, 1rem + 1.4vw, 2.25rem);
    --fluid-body: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);
    
  3. 设置响应式间距

    令牌移动端平板电脑桌面端
    --space-md12px16px16px
    --space-lg16px24px32px
    --space-xl24px32px48px
    --space-section48px80px120px
  4. 参考: 参见 references/responsive-calculations.md


工作流 4:开发交接

场景: 你需要将设计令牌交接给开发团队。

步骤:

  1. 以所需格式导出令牌

    # For CSS projects
    python scripts/design_token_generator.py "#0066CC" modern css
    
    # For SCSS projects
    python scripts/design_token_generator.py "#0066CC" modern scss
    
    # For JavaScript/TypeScript
    python scripts/design_token_generator.py "#0066CC" modern json
    
  2. 准备框架集成

    React + CSS Variables:

    import './design-tokens.css';
    
    <button className="btn btn-primary">Click</button>
    

    Tailwind Config:

    const tokens = require('./design-tokens.json');
    
    module.exports = {
      theme: {
        colors: tokens.colors,
        fontFamily: tokens.typography.fontFamily
      }
    };
    

    styled-components:

    import tokens from './design-tokens.json';
    
    const Button = styled.button`
      background: ${tokens.colors.primary['500']};
      padding: ${tokens.spacing['2']} ${tokens.spacing['4']};
    `;
    
  3. 与 Figma 同步

    • 安装 Tokens Studio 插件
    • 导入 design-tokens.json
    • 令牌会自动与 Figma 样式同步
  4. 交接检查清单

    • 已将令牌文件添加到项目中
    • 已配置构建流水线
    • 已导入主题/CSS 变量
    • 组件库已对齐
    • 已生成文档
  5. 参考: 参见 references/developer-handoff.md


工具参考

design_token_generator.py

根据品牌颜色生成完整的设计令牌系统。

参数可选值默认值说明
brand_colorHex 颜色#0066CC品牌主色
stylemodern, classic, playfulmodern设计风格预设
formatjson, css, scss, summaryjson输出格式

示例:

# Generate JSON tokens (default)
python scripts/design_token_generator.py "#0066CC"

# Classic style with CSS output
python scripts/design_token_generator.py "#8B4513" classic css

# Playful style summary view
python scripts/design_token_generator.py "#FF6B6B" playful summary

输出类别:

类别说明关键值
colors色板primary, secondary, neutral, semantic, surface
typography字体系统fontFamily, fontSize, fontWeight, lineHeight
spacing8pt 网格0-64 比例、语义间距(xs-3xl)
sizing组件尺寸container, button, input, icon
borders边框值radius(按样式)、width
shadows阴影样式none 至 2xl、inner
animation动效令牌duration, easing, keyframes
breakpoints响应式断点xs, sm, md, lg, xl, 2xl
z-index层级系统从 base 到 notification

快速参考表

颜色比例生成
步骤亮度饱和度使用场景
50固定为 95%30%微妙的背景
100固定为 95%38%浅色背景
200固定为 95%46%悬停状态
300固定为 95%54%边框
400固定为 95%62%禁用状态
500原始值70%基础/默认颜色
600原始值 × 0.878%深色悬停状态
700原始值 × 0.686%激活状态
800原始值 × 0.494%文本
900原始值 × 0.2100%标题
排版比例(1.25x 比率)
尺寸值计算方式
xs10px16 ÷ 1.25²
sm13px16 ÷ 1.25¹
base16px基础值
lg20px16 × 1.25¹
xl25px16 × 1.25²
2xl31px16 × 1.25³
3xl39px16 × 1.25⁴
4xl49px16 × 1.25⁵
5xl61px16 × 1.25⁶
WCAG 对比度要求
等级普通文本大号文本
AA4.5:13:1
AAA7:14.5:1

大号文本:常规字重 ≥18pt 或粗体 ≥14pt

样式预设
方面ModernClassicPlayful
无衬线字体InterHelveticaPoppins
等宽字体Fira CodeCourierSource Code Pro
默认圆角8px4px16px
阴影多层、微妙单层柔和、明显

知识库

references/ 中的详细参考指南:

文件内容
token-generation.md颜色算法、HSV 色彩空间、WCAG 对比度、字体比例
component-architecture.md原子化设计、命名约定、属性模式
responsive-calculations.md断点、流体排版、网格系统
developer-handoff.md导出格式、框架设置、Figma 同步

验证清单

令牌生成
  • 已提供十六进制格式的品牌颜色
  • 样式符合项目要求
  • 已生成所有令牌类别
  • 语义颜色包含对比度值
组件系统
  • 已实现所有尺寸(sm、md、lg)
  • 已实现所有变体(primary、secondary、ghost)
  • 所有状态均正常工作(hover、active、focus、disabled)
  • 仅使用设计令牌(无硬编码值)
无障碍访问
  • 颜色对比度符合 WCAG AA
  • 焦点指示器清晰可见
  • 触控目标 ≥ 44×44px
  • 使用语义化 HTML 元素
开发者交接
  • 已按要求的格式导出令牌
  • 已记录框架集成方式
  • 已同步设计工具
  • 已完成组件文档

故障排除

问题原因解决方案
生成的颜色未通过 WCAG 对比度检查品牌颜色过浅或饱和度过高在浅色背景上使用更深的色阶(600+)显示文本;使用对比度工具检查
令牌导出值不正确格式参数或颜色语法错误确保十六进制颜色带引号(例如 "#0066CC");确认格式为 json、css 或 scss
字体比例过大或过小默认的 1.25x 比例不适合设计修改 DesignTokenGenerator 类中的 type_scale_ratio(更紧凑时设为 1.125,更宽松时设为 1.333)
SCSS 变量与现有变量冲突令牌命名冲突为所有令牌添加项目命名空间前缀(编辑导出函数)
设计工具显示的颜色不一致生成颜色比例时十六进制值发生舍入使用 JSON 导出作为真实数据源;通过 Tokens Studio 插件同步
间距值与网格不对齐自定义间距与 8pt 网格混用仅使用生成的间距系统中的值;避免使用任意像素值
暗色模式下的阴影令牌显示异常阴影针对浅色背景设计创建单独的暗色模式阴影令牌,并使用较低的不透明度值

成功标准

标准目标衡量方式
令牌一致性代码库中不含硬编码的颜色/间距值Lint 规则违规次数
符合 WCAG AA所有文本颜色的对比度均达到 4.5:1自动对比度检查器或人工审查
导出格式覆盖CSS、SCSS 和 JSON 均可正确生成使用每种格式运行生成器;验证输出
设计与开发同步令牌更新到代码部署间隔 <24h从 Figma 变更到上线所需的时间
组件令牌覆盖率100% 的组件使用设计令牌审查组件样式中的硬编码值
字体排版一致性所有文本均使用设计系统的字体比例对所有页面进行视觉审查
响应式行为流体排版在所有断点下均正常工作在 xs、sm、md、lg、xl、2xl 宽度下测试

范围与限制

范围内:

  • 根据品牌色生成完整的设计令牌
  • 生成调色板(主色、辅助色、中性色、语义色)
  • 带有模块化比例的字体排版系统
  • 基于 8pt 网格的间距系统
  • 组件尺寸、边框、阴影和动画令牌
  • 导出为 CSS 自定义属性、SCSS 变量和 JSON
  • 响应式断点定义
  • WCAG 对比度参考表

范围外:

  • 暗色模式令牌生成(需要单独映射调色板)
  • 动画/动效设计库
  • 图标系统生成
  • 运行时主题切换实现
  • Figma 插件或 API 集成(使用 Tokens Studio)
  • 视觉回归测试
  • 设计稿转代码(使用 Figma Dev Mode 或 Locofy)

集成点

工具/平台集成方式用例
Figma / Tokens Studio将 JSON 输出导入为令牌源将设计工具与代码令牌同步
Tailwind CSS将 JSON 令牌用作 tailwind.config.js 主题根据设计系统配置 Tailwind
styled-components / Emotion在主题提供程序中导入 JSON 令牌CSS-in-JS 主题化
Style Dictionary将 JSON 输出用作源令牌多平台令牌构建(iOS、Android、Web)
Storybook将令牌与组件故事配合使用记录组件的视觉变化
CI/CD在构建流水线中生成令牌品牌变更时自动更新令牌

评论

支持 Markdown