Communitygithub.com

从前端代码提取设计系统 (beavon2010/claude-skills)

直接从 React、Vue、Svelte、Angular 或纯 HTML/CSS 等前端源代码中提取全面的设计系统文档 (DESIGN.md),无需运行或构建应用程序。

claude-skills) 是什么?

该技能能够从任何前端代码库中逆向工程出一份完整的设计系统文档 (DESIGN.md)。它通过分析源代码文件本身——包括样式表、组件文件、Tailwind 配置、主题定义和设计令牌——来捕获项目的视觉语言(颜色、排版、间距、组件模式、布局原则)。与需要渲染 HTML 的工具不同,此技能在无法构建或运行应用时(例如依赖缺失、构建错误或仅需快速审计)仍然有效。支持所有主流框架(React、Vue、Svelte、Angular)和纯 CSS/SCSS,并且可以与其他 Stitch 生态工具(例如 manage-design-system)集成,用于管理或迁移设计系统。用户只需提供源代码目录访问权限,即可自动执行项目发现、深度提取和文档生成工作流,最终生成一个文件结构标准化的 DESIGN.md,包含 YAML 前导元数据和完整的 Markdown 章节。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/beavon2010/claude-skills/tree/HEAD/.claude/skills/extract-design-md

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

从前端代码提取设计系统

分析前端源代码,提取一份全面的设计系统文档(DESIGN.md),捕获项目的视觉语言——颜色、排版、间距、组件模式和布局原则——直接来自源文件,无需构建或运行应用程序。

为什么需要这个技能

design-md 技能基于渲染后的 HTML 工作。但通常,你拥有一个代码库,并希望先了解其设计系统后才能运行应用程序——也许依赖缺失、构建出错,或者你只想快速审计。此技能直接读取源文件本身:样式表、组件文件、主题配置和 Tailwind 设置。它更快,并且适用于任何场景。

何时使用

  • 用户拥有前端代码库并希望提取或记录其设计系统
  • 用户希望将项目的视觉标识迁移到 Stitch
  • 用户要求“审计样式”或“理解设计语言”
  • 用户希望从现有源代码创建 DESIGN.md
  • 应用程序无法构建/渲染,但源代码可用
  • 用户希望统一或调和代码库中不一致的样式

前提条件

  • 访问前端项目的源目录
  • 无需构建或运行时依赖——此技能仅读取源文件

工作流

第一阶段:项目发现

首先了解你所处理的项目。这决定了使用哪些提取模式。

1. 检测框架和技术栈

扫描项目根目录,寻找特征文件:

信号文件框架/工具
package.json 中包含 reactReact / Next.js
package.json 中包含 vueVue / Nuxt
package.json 中包含 svelteSvelte / SvelteKit
package.json 中包含 @angular/coreAngular
tailwind.config.js/tsTailwind CSS
postcss.config.jsPostCSS 管道
styled-components 或 @emotion 在依赖中CSS-in-JS
仅包含 .css / .scss / .less 文件纯 CSS / SASS
theme.js / theme.ts / tokens.js设计令牌文件

首先读取 package.json ——它会揭示框架、CSS 工具以及任何设计令牌库(例如 style-dictionary、@chakra-ui/react、@mui/material、ant-design)。此上下文告诉你应该在哪里查找样式信息。

2. 映射源代码树

确定要分析的关键目录和文件:

src/
├── components/     ← 组件级样式
├── styles/         ← 全局样式表
├── theme/          ← 主题定义、令牌
├── assets/         ← 字体、图片
├── app.css         ← 根样式
└── index.css       ← 入口 CSS

同时检查以下内容:

  • tailwind.config.js / tailwind.config.ts —— 自定义颜色、字体、间距
  • globals.css / global.css —— CSS 自定义属性(变量)
  • 任何 theme.* 或 tokens.* 文件
  • 组件库配置(例如 chakra-theme.ts、vuetify.config.ts)

3. 读取框架特定的指南

查阅相应参考文档以了解提取模式:

这些参考文档包含特定于框架的模式,用于定位颜色、排版、间距和组件样式。在继续前,请阅读匹配的参考文档。


第二阶段:深度提取

系统地处理每个设计维度。对于每一个维度,从源文件中收集原始数据,然后将其综合为描述性语言。

目标不是转储每个 CSS 属性——而是理解样式选择背后的意图,并用人类、编辑化的语言描述它们,以便其他设计师(或 Stitch)可以重现相同的视觉感受。

1. 视觉主题与氛围

首先阅读最宽泛的样式,以了解整体基调:

  • 根背景:body 或根元素的背景是什么?浅奶油色(#f 范围)表示通风/干净;深色(#0-#2 范围)表示情绪化/戏剧化。
  • 空白哲学:间距值是否宽裕(32px+)还是紧凑?检查根容器、部分包裹器和卡片组件上的 padding/margin 值。
  • 密度:统计每个页面/部分的组件数量。数量少且空间大 = 极简;数量多且紧密排列 = 信息密集。
  • 色温:中性色是暖色(奶油色、黄褐色)还是冷色(蓝灰色、石板色)?
  • 整体感受:综合成 1-2 句丰富的句子,捕捉整体氛围。

在源代码中查找这些信号:

源位置告诉你的信息
根 background-color 或布局上的 Tailwind bg-*整体明亮/黑暗程度
Tailwind 配置或 CSS 变量中的间距比例空白哲学
组件数量与包裹器 padding密度
自定义属性命名(--warm-* vs --cool-*)色温意图
主题文件中的注释开发者自己话语中的设计意图

2. 调色板与角色

提取代码库中每个独特的颜色,并分配功能角色。跨所有层搜索:

在哪里找到颜色:

层搜索什么
CSS 自定义属性--color-*、--primary、--bg-*
Tailwind 配置theme.extend.colors
主题/令牌文件颜色对象、调色板
组件样式background-color、color、border-color
内联/作用域样式模板中的 bg-*、text-* 类
CSS-in-JS 主题对象colors、palette 键

如何组织: 按功能分组颜色,而不是按色相:

  1. 主要基础 — 背景和表面颜色
  2. 强调与交互 — CTA 按钮、活跃状态、链接
  3. 排版与文本层次 — 一级、二级、三级文本
  4. 功能状态 — 成功、错误、警告、信息

对于每种颜色,创建一个唤起颜色特征的描述性名称,而不是其原始十六进制值:

  • ❌ #294056 → "蓝色"
  • ✅ #294056 → "深哑光蓝绿色" — 主要 CTA、活跃导航

去重很重要。 代码库通常具有接近重复的颜色(例如 #333 和 #2C2C2C)。将它们合并到一个最能代表预期颜色的名称下。

3. 排版规则

提取完整的排版系统:

字体系列:

  • 检查 CSS font-family、Tailwind fontFamily、Google Fonts 链接或本地 @font-face 声明。
  • 注意每种字体的特征:几何 vs 人文主义、衬线 vs 无衬线、它所唤起的感受。

字号层次(层级):

  • 找到每个标题级别(H1-H6)和正文,注意:
    • font-size(以 rem 或 px 为单位)
    • font-weight(数值 + 描述性名称)
    • letter-spacing(以及原因——优雅?紧凑?)
    • line-height(为可读性而宽松?为展示而紧密?)
  • 映射组件用途:产品卡片使用哪个标题级别?英雄区域呢?

间距原则:

  • 文本间距如何与整体间距比例相关联?
  • 标题与正文上的字间距模式
  • 行高哲学(正文宽松/放松,展示文本更紧密)

4. 组件样式

分析 4-5 个最重要的 UI 原语:

按钮:

  • 圆角半径(以及它传达的信息——俏皮?专业?极简?)
  • 主要、次要和幽灵变体的配色方案
  • 悬停/焦点/活跃状态和过渡时间
  • 内边距比例(水平 vs 垂直)

卡片 / 容器:

  • 圆角半径(通常与按钮不同——略微更圆)
  • 阴影策略:平面、微妙的悬停阴影或始终升高?
  • 边框处理:细线边框、彩色强调边框或无边框?
  • 内部内边距(宽裕或紧凑?)
  • 卡片内的图像处理(全出血、带内边距、圆角?)

导航:

  • 布局模式(水平栏、垂直侧边栏、抽屉)
  • 排版处理(大写、字间距、字重)
  • 活跃/悬停状态指示器(下划线、颜色、背景)
  • 移动端行为(汉堡菜单、底部导航、抽屉)

输入与表单:

  • 边框样式和焦点状态行为
  • 圆角样式与按钮的一致性
  • 内边距和触摸目标尺寸

领域特定组件:

  • 识别 1-2 个此项目独有的组件(例如产品卡片、仪表板小部件、聊天气泡),并描述其样式模式。

5. 布局原则

提取结构系统:

网格与结构:

  • 最大内容宽度(来自容器上的 max-width)
  • 列系统(CSS Grid、Flexbox 模式、定义的断点)
  • 响应式断点(来自媒体查询或 Tailwind 配置)

空白策略:

  • 基本间距单位(8px 网格?4px?自定义?)
  • 部分边距(主要部分之间的间距大小)
  • 边缘内边距(不同断点处的页面边距)

对齐与视觉平衡:

  • 文本对齐模式(居中英雄区、左对齐正文)
  • 图像与文本的比例
  • 视觉重量分布

响应式行为:

  • 移动优先还是桌面优先?
  • 网格如何折叠?内边距比例?
  • 触摸目标尺寸

6. Stitch 生成笔记

将提取结果综合为可操作的 Stitch 提示:

  • 氛围语言:将基调转换为自然描述符
  • 颜色参考:按描述性名称 + 十六进制值列出颜色
  • 组件提示:编写 2-3 个示例提示,用于在 Stitch 中重建关键组件
  • 迭代指导:在此设计系统中优化屏幕的提示

第三阶段:编写 DESIGN.md

将所有内容整合到标准的 DESIGN.md 格式中。将其放在项目目录下的 .stitch/DESIGN.md(如果 .stitch/ 目录不存在,则创建它)。

[!IMPORTANT] 你必须在文件顶部包含带有 name 和 colors 映射的 YAML 前导元数据,完全按照 examples/DESIGN.md 中的示例所示。此结构化数据是其他技能解析设计系统所必需的。

未能包含此至少包含核心颜色令牌的 YAML 块意味着未能正确使用此技能。

使用 examples/DESIGN.md 中的示例作为模板。文件必须以 YAML 块开头,后跟 Markdown 部分:

# 设计系统:[项目名称]
**项目 ID:** [如果已知,否则省略]

## 1. 视觉主题与氛围
[关于基调、哲学和关键特征的 2 段丰富描述]

## 2. 调色板与角色
### 主要基础
### 强调与交互
### 排版与文本层次
### 功能状态

## 3. 排版规则
### 层次与字重
### 间距原则

## 4. 组件样式
### 按钮
### 卡片与[领域特定容器]
### 导航
### 输入与表单
### [领域特定组件]

## 5. 布局原则
### 网格与结构
### 空白策略
### 对齐与视觉平衡
### 响应式行为与触摸

## 6. 用于 Stitch 生成的设计系统笔记
### 要使用的语言
### 颜色参考
### 组件提示
### 增量迭代

第四阶段:集成(可选)

如果用户希望将设计系统推送到 Stitch:

  1. 将任务移交给 manage-design-system 技能,用于 MCP 创建/更新调用
  2. 你编写的 DESIGN.md 是输入——manage-design-system 技能处理 Stitch API 集成

如果用户只需要文档,则在第三阶段后完成。


质量检查清单

在交付 DESIGN.md 之前,验证:

  • 每种颜色都有描述性名称、十六进制代码和功能角色
  • 排版包括字体系列、特征描述和完整层次
  • 组件样式描述了形状、颜色、状态和过渡
  • 布局包括最大宽度、网格、断点和间距策略
  • Stitch 生成笔记使用自然语言,而不是 CSS 语法
  • 氛围部分读起来像编辑文案,而不是技术文档
  • 接近重复的颜色已合并
  • 文档捕获了样式背后的意图,而不仅仅是原始值

更好的提取技巧

  • 阅读注释和提交信息。 开发人员经常在代码注释(/* 英雄区域 — 透气 */)和提交信息中记录设计意图。这些是理解为什么的宝贵资料。
  • 检查设计令牌库。 如果项目使用 style-dictionary、@tokens-studio 或类似工具,这些文件是设计值最权威的来源。
  • 主题文件比组件样式信号更强。 定义了调色板的 theme.ts 告诉你预期的设计系统;组件中分散的内联样式告诉你实际发布的内容。两者都很重要,但要从主题开始。
  • Tailwind 配置是一个设计系统。 如果项目有自定义的 tailwind.config.js,那就是设计系统——首先从中提取,然后抽查组件是否存在覆盖。
  • CSS 自定义属性是有意为之的。 如果开发者定义了 --brand-primary,他们是在告诉你这是一个设计令牌。请尊重这一点。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能