mcpField
R
Roast My Design System

Roast My Design System

本地服务
pencilrebel.github.io开发工具722 周前更新

关于 Roast My Design System

Roast My Design System 是本地只读扫描工具,可报告 UI 代码库中的设计系统模式、不一致之处和缺口。它面向需要约束 AI 生成界面的团队,提供 Agent 规则生成,并可检查代码变更或接入 CI。

主要功能

  1. 01生成包含确定性结果的 HTML 报告
  2. 02识别设计系统缺口和不一致
  3. 03为 Agent 指令文件生成规则
  4. 04按设计规则检查变更文件
  5. 05导出 SARIF 和 JSON 结果

适用场景

  1. 01在 UI 开发前发现缺失的设计令牌
  2. 02为编码 Agent 提供代码库专属规则
  3. 03在开发工作流中检查变更文件
  4. 04将发现上传到 GitHub 代码扫描

MCP 相关

项目包含本地 MCP 服务,可向 Agent 提供有关已扫描设计系统的信息。生成的规则也可写入 Agent 指令文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pencilrebel-roast-my-design-system": {
"command": "npx",
"args": [
"-y",
"roast-my-design-system"
]
}
}
}
启动命令npx -y roast-my-design-system

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmroast-my-design-system5.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

roast-my-design-system

roast-my-design-system

npm downloads Socket license zero dependencies no telemetry

MCP verified in Claude Code MCP verified in Cursor MCP verified in Windsurf / Devin Desktop

找出 AI Agent 会在哪里凭空编造 UI。

AI 可以编写 UI。这个工具能确保它编写的是你的 UI。

npx roast-my-design-system@latest

在 UI 仓库根目录运行。1 秒后,报告就会打开。 无需账户。无需联网。无遥测。不修改仓库中的任何内容。

版本历史记录见 CHANGELOG.md。

理念

Agent 会照搬它找到的内容。
仓库没有答案的地方,它就会凭空编造。

我们在 10 个真实的开源产品上进行了测试,共运行 355 次 Agent 会话,对比是否使用此工具的情况。

按本工具自身的规则统计每次会话新增的问题:

任务模型时间未使用 roast安装 Roast MCP 和规则使用带编辑钩子的 Roast 插件
为 4 个产品各新增一个图表和一个组件,每个运行 3 次Sonnet 52026 年 10 月,roast 10.124 次运行中有 21 个未运行24 次运行中有 7 个
为 4 个产品各新增一个图表和一个组件,每个运行 3 次Haiku 4.52026 年 10 月,roast 10.124 次运行中有 72 个未运行24 次运行中有 1 个
添加面板、构建仪表盘、优化列表(80 次会话)Sonnet 52026 年 9 月79未运行
圣诞主题,10 个产品Sonnet 52026 年 9 月282未运行
为 4 个产品各新增一个图表,每个运行 5 次Sonnet 52026 年 9 月20 次运行中有 10 个未运行20 次运行中有 0 个
为 4 个产品新增一个图表Haiku 4.52026 年 9 月253915 次运行中有 14 次为 0 个
图表、状态颜色、空状态、新组件Haiku 4.52026 年 9 月16 次运行中有 42 个16 次运行中有 49 个51 次运行中有 3 个

无论是否使用此工具,常规工作都保持了系统的一致性。但需要新增内容的工作没有做到这一点。

Agent 并不总会在应该调用工具时调用。10 月,Sonnet 在 24 次会话中有 7 次调用了 MCP 工具,Haiku 则在 24 次会话中有 2 次。编辑钩子无需请求便会运行。使用编辑钩子时,数字最低。

Agent 在哪里凭空编造?就在仓库没有可供照搬内容的地方。Dub 没有图表配色方案,自身的图表将 17 种颜色硬编码在代码中。让 Haiku 创建图表后,它又硬编码了 9 种颜色。10 月,启用插件后 Sonnet 遗留的 7 个问题中,有 5 个是 Dub 的图表颜色。Agent 保留了这些颜色,还写下注释,说明仓库没有图表配色方案。

因此,Agent 引入的混乱,正好标示出系统中的缺口。

这个工具会绘制这张地图。

Roast、Teach、Guard

Roast 仓库,找出实际的设计系统、其中的混乱以及存在的缺口。

Teach Agent,通过生成的规则和本地 MCP 服务来提供指导。

Guard 每次编辑,让 Agent 不必记得主动请求检查。

ROAST   仓库里有什么,以及缺少什么
  ↓
TEACH   Agent 文件中的规则,通过 MCP 提供答案
  ↓
GUARD   检查每次编辑,并在 PR 中设为门禁

你将获得什么

你的 Agent 需要在哪些地方猜测?

报告首先指出:仓库中尚无答案的地方,或者“未发现问题”。

  • 一句话说明问题
  • 能证明问题的文件
  • 解决问题的一项措施

目前有一个已确认的问题,因为运行结果发现了它:仓库没有图表配色方案,图表却硬编码了颜色。126 个公开仓库中有 43 个存在这种情况。只有经过测量的问题才会列入清单。

立即可执行、能提高健康分数的修复项

Agent 会照着做的混乱做法,按修复价值排序。

  • 发现的问题
  • 问题所在位置及文件路径
  • 问题为何重要
  • 应如何更改
  • 用于复制修复提示词的按钮,供你的 Agent 使用

修复、重新扫描,然后点击下一个按钮。

在会议上站得住脚的分数

0 到 100。每次运行都得到相同的分数。

依据三个基准衡量:设计系统的理想规范、119 个仓库基准中 34 个产品仓库的中位数,以及 10 个值得信赖的系统(Primer、Polaris、Carbon、shadcn/ui 等)。

单体仓库会按软件包分别评分。packages/ui 的 80 分不再掩盖 apps/web 的 40 分。

每项发现及其文件路径
  • 每个硬编码颜色及其几乎相同的副本
  • 每个不符合间距尺度的值
  • 每个重复组件

还有 8 种类型,详见测量内容。一个 HTML 文件。打开它,发到 Slack,也可以通过电子邮件发送。

颜色使用情况栏显示仓库中的颜色来源:每 100 次颜色使用中,有多少次按名称读取主题颜色,有多少次使用 Tailwind 配色,以及有多少次是手动编写的非规范颜色。它会追踪 CSS 变量、Tailwind 主题、Sass 和 Less 变量以及 JavaScript 主题对象,并据此进行统计。

页眉会说明仓库基于什么构建:shadcn/ui、Tailwind 主题、MUI、Mantine、Chakra 或 Ant Design;如果仓库使用两套工具包,也会同时列出。

给 Agent 的规则

从你的仓库生成,写入 design-system-rules.md:

规范组件
token 文件
已知重复项,需避免使用
间距步长
字体
工具包专属词汇

--apply 会将这些规则写入你使用的每个 Agent 文件:Claude、Cursor、GitHub Copilot、Windsurf。每次扫描也会检查现有规则中是否有过时引用。

由脚本负责统计

每个数字都来自对文件的确定性读取。Claude 会撰写说明,并标注为 AI 撰写,且与数字分开呈现。

运行过程

使用 Claude Code 无头模式,对 10 个公开产品进行测试,每个产品固定在一个提交:cal.com、Dub、Metabase、Plausible、SigNoz、trigger.dev,以及另外四个。2026 年 9 月共运行 259 个会话,2026 年 10 月在 roast 10.1 上运行 96 个会话,使用 Sonnet 5 和 Haiku 4.5。10 月的会话在相同提交上,对 Plausible、SigNoz、trigger.dev 和 Dub 重复执行图表和新增组件任务。每个会话结束时以及固定提交处,都会依据本工具的规则评估所有变更文件。只有会话中新引入的问题才会计入。

没有渲染任何内容。零项发现意味着代码符合这些规则,并不意味着设计经过了审核。方法、表格和限制详见将另行发布的研究报告。

实例报告

11 份报告,完全按照工具生成的原样托管。每个数字都确定无误,每条路径都真实存在。

  • npx shadcn create,刚安装(全新安装,全部 61 个组件):应视为全新安装,“分数属于工具包,而不是你”;13 种颜色,所有主题变量都已就位,shadcn 自带的 24 个方括号值均已命名且不计入统计。不评分。
  • Unleash(MUI):1,109 个文件导入工具包,主题被读取 6,166 次;每 100 个工具包文件中,有 4 种颜色和 2 种间距被写入组件。得分 60。
  • Metabase(Mantine):其自有的 Mantine 封装层被计作工具包,因此读取了 2,679 个文件,而非 392 个;没有任何内容写入组件,每 100 个工具包文件中有 2 种间距。得分 47。
  • SigNoz(Ant Design):在存在令牌的地方,每 100 个工具包文件中,有 2 种颜色和 7 种间距以样式对象的形式写入。得分 51。
  • Apache Airflow(Chakra UI):没有颜色写入组件;在存在间距阶梯的地方,每 100 个工具包文件中有 4 种间距以像素字符串表示。得分 43。
  • vercel/ai-chatbot(shadcn 安装):有 71 个类似 [13px] 的值写在 Tailwind 尺度之外;在存在主题变量的地方,每 100 个文件中有 66 种调色板颜色;内嵌 Claude 的备注。得分 80。
  • excalidraw/excalidraw:78 个偏离尺度的间距值和 90 个 !important 声明。得分 55。
  • dubinc/dub:642 个任意方括号值、21 个重复组件,并指出了图表调色板的缺口。得分 20。
  • telekom/scale(Stencil):按标签读取了 95 个 Stencil 组件;有 66 个间距值偏离尺度,而大约 12 个就足够;内嵌 Claude 的备注。得分 55。
  • magicuidesign/magicui(注册表):按其发布的组件统计;每 100 个文件中,发布的代码里有 52 种颜色偏离主题;其文档站点已排除在外并明确标注。得分 78。
  • adobe/spectrum-web-components(Lit):740 个颜色令牌,旁边还有 8 种硬编码颜色,以及 37 个 !important 声明。得分 83。

vercel/ai-chatbot 的完整报告。结论会回答 Agent 在这里能学到什么;缺口部分排在最前面,接着是“代码库教给 Agent 的内容”,以及 Claude 对扫描结果的解读:

vercel/ai-chatbot 的完整诊断报告,深色模式:固定侧边面板显示健康分数及其衡量内容、技术栈、如何将代码库视为 shadcn 安装来读取、各个章节的索引,以及哪些内容不属于团队且不会计入统计;随后展示 Agent 必须自行判断的地方、可立即实施的修复项及其价值和“复制修复提示词”按钮、包含 Agent 规则的包装演示、Agent 陷阱提示框、3 个标尺卡片(包括 2 个 shadcn 卡片)、采用情况树状图、调色板取证、逐项列出的 shadcn 主题变量、间距凭证、字体样例、问题项、重复项,以及组件使用清单

同一份报告的浅色模式(单文件,内置切换):

浅色模式下的诊断报告

为什么这些数字可信

  • 确定性。 一个零依赖的 Node 脚本会读取每个文件,每次运行都返回相同的数字。在普通仓库中约需 1 秒。
  • 只读。不联网。不收集遥测数据。 如果 package.json 声明了依赖,测试套件就会失败。每次发布在打标签前,都会针对 29 个示例仓库运行 468 项检查;测试样例及其快照保存在 tests/ 中,每个样例对应一个 JSON 文件。
  • 如实呈现缺失数据。 扫描无法读取的内容会标记为“未测量”,并从评分中剔除。
  • 如实说明排除项。 测试、故事、文档站点、插图和邮件模板均不纳入统计。报告标题中会列出你自行设置的排除项及文件数量。
  • 真实基准。 包含 119 个公开仓库。由 34 个 React 仓库组成的核心组用于计算中位数;其余仓库则用于工具包和 Web 组件分组,因此 shadcn 仓库会与 shadcn 仓库比较,Lit 系统会与 Lit 和 Stencil 系统比较。构建器位于 tools/benchmark/。
  • 可导入的评分函数。 scoreHarvest(harvest) 会以纯数据形式返回评分和指标。报告与 CI 检查使用相同的数字。

更详细的说明,包括扫描范围以及插件在你的机器上会执行哪些操作,请参阅 docs/reference.md。

适用范围

框架

React、Next.js、Remix、Vite Stencil、Lit、自定义元素

工具包和样式

Tailwind、shadcn/ui、MUI、Mantine、Chakra UI、Ant Design CSS Modules、Sass、Less、Emotion、styled-components、vanilla-extract、CVA、Stitches

每个仓库都会与采用相同方式构建的仓库比较:shadcn 安装与 shadcn 安装比较,使用 MUI、Mantine、Chakra 或 Ant Design 的产品与使用相同工具包的产品比较,Tailwind 主题与 Tailwind 主题比较,Lit 或 Stencil 系统与其他 Web 组件系统比较,shadcn 注册表与 shadcn 组比较。如果仓库使用两个工具包,系统会予以说明,并在规则中列出两者。

已识别,但尚未测量

Vue、Angular、Svelte:会列在标题中,颜色和间距会计入统计,但不会测量组件。报告会对此说明。 HeroUI、NextUI、Radix Themes、Fluent UI、React Bootstrap、Grommet:会列在标题中,但没有对应的工具包规则。

所有命令

所有功能都由一次扫描提供支持;标志决定哪些内容会写入磁盘。可自由组合。

自行运行
命令                                                        运行结果
npx roast-my-design-system@latest扫描结果和 design-system-roast.html,并在浏览器中打开
... <path>扫描当前目录以外的其他代码库
... --apply将生成的 Agent 规则注入你拥有的每个 Agent 文件:CLAUDE.md、AGENTS.md、.cursorrules、.cursor/rules/、.windsurfrules 和 .github/copilot-instructions.md,并放在标记块中。再次运行时只会替换该标记块,不会改动你自己的文本。
... --rules将相同的规则写入 design-system-rules.md,供你手动粘贴
... --card生成 roast-card.svg:一张可分享的 1200x630 卡片,显示评分和最严重的问题。纯 SVG,可嵌入 README
... --sarif生成供 GitHub 代码扫描使用的 design-system-roast.sarif:将其上传到 CI 后,问题会显示在 Security 选项卡中,并标注在文件上
... --check在终端中检查工作树中已更改的文件是否符合设计系统。发现问题时退出码为 1,可用于脚本
/roast-my-design-system:review(在 Claude Code 中)使用插件的第二个技能,在聊天中执行相同的检查:列出每个已更改文件的问题并指出修复方法,然后应用修复并重新检查
... --exclude lab/不扫描某个文件夹(可重复使用此标志,或用逗号分隔多个文件夹)。也可以在代码库根目录的 .roastignore 文件中列出文件夹。无论采用哪种方式,报告都会在标题中说明
... --json将扫描摘要以 JSON 格式输出到 stdout,供脚本和管道使用。包含 schemaVersion、所用基准,以及以数字表示的每项指标,便于比较两次扫描
... --by "Dwayne Hicks"在报告标题中添加姓名,适用于你为他人运行扫描的情况
... --theme light / --out <file> / --no-open / --open浅色报告、自定义报告路径、始终不打开浏览器、始终打开报告
面向你的 Agent
命令                                                        输出内容
... --notes <file.md>Agent 对此次扫描的解读,会嵌入报告中,标题为 “仓库教给 Agent 的内容”:哪些发现很重要,哪些好看的数字只是偶然,应该先修复什么。会标注为 AI 撰写,并与实测数字分开。Claude Code 技能会自动撰写并传入此内容;此标志的作用是让任何 Agent 都能
... --section "Title" <file.md>在备注之后添加一章由 Agent 撰写的内容,样式和标注相同,也可以使用小标题。可重复使用
... --hookClaude Code 插件在每次编辑后运行的检查,适用于手动安装的配置:从 stdin 读取 hook 事件,检查发生更改的文件,并仅以 JSON 格式输出此次编辑新增的发现。始终以 0 退出
... --stop-hookClaude Code 插件在 Agent 完成一轮工作时运行的审查,适用于手动安装的配置:从 stdin 读取 Stop 事件;如果会话更改的文件存在新问题,则返回一个区块,让 Agent 再处理一次。--session-start 会记录此前尚未提交的工作。设置 ROAST_STOP_REVIEW=off 可将其关闭。始终以 0 退出
... --mcp将扫描作为本地 MCP 服务运行:提供 5 个供 Agent 编写 UI 时调用的工具,以及从最新扫描结果中提供首要修复项的 roast-fix 提示词。参见 通过 MCP 获取实时答案
/roast-my-design-system(在 Claude Code 中)完整体验:在聊天中查看 roast,并且 将其嵌入报告,标题为“仓库教给 Agent 的内容”;还包括规则建议,以及 Claude 根据你自己的数字协助修复的循环

**“为何重要”是通用内容,随工具一同提供,在每份报告中的内容都相同。“仓库教给 Agent 的内容”**是你的 Agent 对仓库的解读,只有在 Agent 传入此内容时才会显示。

通过 MCP 获取实时答案

报告和规则文件描述的是扫描时的仓库状态。--mcp 会让同一套引擎在 Agent 工作期间持续运行,因此问题会根据代码的当前状态得到解答,错误也能在提交前被发现。

工具它能回答的问题
roast_get_context在这里改动 UI 前,我应该了解什么?根据正在编辑的文件夹提供内容
roast_find_component已经有适用于此处的组件了吗?哪个才是标准组件?附带一个真实用例示例。如果两个候选项不相上下,它会明确说明,并列出二者
roast_find_token我手头有 #111111 / 13px。应该用什么?
roast_validate我马上要保存了。这样会破坏系统吗?
roast_review审查我改动过的文件。它会自行读取 git diff,无需粘贴代码

工作循环:构建前获取上下文,构建时查找,保存前验证,结束前审查。

以下是一个真实的交互,针对 Unleash,一个评分为 60/100 的 MUI 产品。Agent 手头有一种灰色,并且想好了一个内边距:

roast_find_token #6b7280
→ Nearest token: #607d8b, 11 channel steps from #6b7280. Unless the difference is a deliberate decision, use the token.

roast_validate (first draft)
→ ✕ L5 Colour #6b7280 written onto an MUI component, and the theme has no such colour.
     Fix: Add it to the theme once (frontend/src/themes/dark-theme.ts), then read it there: color: 'text.secondary' in sx.
  ✕ L5 Pixel size p: 12px on an MUI component.
     Fix: 12px is between steps 1 (8px) and 2 (16px). Keep it with a comment, or use the nearest step in sx.

roast_validate (second draft: color: 'text.secondary', p: 1.5)
→ No measured violations found. Checked: hardcoded colours vs the token set, near-identical colour twins, off-scale spacing …

四次调用,不到 800 个 token,新组件读取主题,而不是添加第 44 种颜色。

图表有专门的规则,因为图表需要多种彼此有区别的颜色,而大多数设计系统从未为它们命名。如果仓库为图表维护了调色板,那么在图表文件中手写颜色就会被报告,并指出调色板的位置。如果仓库有图表却没有调色板,那么新图表中手动设置颜色时会收到一条警告,指出已有的类似图表,并建议创建调色板。这条警告就是实时的缺口报告。

服务读取仓库的方式与报告一致。对于基于 MUI、Mantine、Chakra UI 或 Ant Design 构建的产品,上下文会指出主题文件和该组件库自身的读取方式;roast_find_token 会按间距步长给出答案;检查则会标出写在组件库组件上的颜色或像素尺寸,而主题中其实已有对应值的情况。对于 Tailwind 主题或 shadcn 仓库,它们会标出诸如 text-gray-500 这样的调色板类,前提是主题中已为此类颜色命名。直接将令牌原始值粘贴到组件中会被标记,并附上令牌名称;如果仓库已有广泛使用的 Button,却从头构建了一个按钮,则会收到警告,指出应该使用的导入语句。

roast-fix 提示词会从全新扫描结果中提供优先级最高的「从何处开始」操作,与报告中的复制按钮内容完全一致。在 Claude Code 中输入 /mcp__roast__roast-fix,并添加编号即可调整处理顺序。修复后再次提问,下一个操作就会升至首位:扫描结果就是进度条。

已安装 Claude Code 插件? 服务已经就绪。否则:

claude mcp add roast -- npx roast-my-design-system@latest --mcp

已在 Claude Code、Cursor 和 Windsurf(现为 Devin Desktop)中验证。 每款产品都经过端到端测试:服务已连接、列出了全部 5 个工具,并且能在编辑器自带的聊天窗口中给出真实答案。本地运行、只读、启动时扫描一次、不需要端口或账户。

Cursor:将以下内容放入项目中的 .cursor/mcp.json(必须放在项目中,这样扫描只会处理一个仓库,而非整个磁盘),然后首次使用时在 Settings → Tools & MCP 下启用 roast:

{ "mcpServers": { "roast": { "command": "npx", "args": ["roast-my-design-system", "--mcp"] } } }

Windsurf(Devin Desktop):它的 MCP 配置是全局的(~/.codeium/windsurf/mcp_config.json),因此请指定项目文件夹,让扫描范围限定在一个仓库内:

{ "mcpServers": { "roast": { "command": "npx", "args": ["roast-my-design-system", "--mcp", "/path/to/your/repo"] } } }

其他 MCP 客户端也可以注册相同的 stdio 命令。

在 CI 中使用

扫描器支持 SARIF,因此只需 6 行代码,就能将它接入 GitHub code scanning。发现的问题会显示在 Security 选项卡中,并标注在对应文件上:

- uses: actions/checkout@v5
- run: npx roast-my-design-system@latest . --sarif --no-open
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: design-system-roast.sarif

如果只想因新增问题而阻止拉取请求,请使用 guard-my-design-system。

安装

无需安装,也无需 Claude:

npx roast-my-design-system@latest

Claude Code(推荐):

/plugin marketplace add gregkozakiewicz/roast-my-design-system
/plugin install roast-my-design-system@roast-my-design-system

安装内容:两个技能、一个本地 MCP 服务,以及两个独立运行的检查项,仅此而已。roast(/roast-my-design-system,或“roast my design system”)会扫描整个代码仓库,在报告中写入 Claude 对数据的解读,然后带你逐项修复。review(/roast-my-design-system:review,或“review my UI changes”)只检查发生变更的内容,大约一秒就能完成。编辑检查会在 Agent 每次编辑文件后运行,并反馈这次编辑新增的问题;如果文件没有新增问题,就不会发出消息。回合结束检查会在 Agent 表示完成时运行:如果本次会话修改的文件仍存在由它引入的问题,就会让 Agent 返回修复一次,然后再结束。仅提供建议的警告不会让它返回;每个会话中,同一个问题只会让它返回一次;会话开始前就未提交的工作则不会受到影响。要关闭检查,请在 Claude Code 设置中将 ROAST_STOP_REVIEW=off 设为关闭("env": { "ROAST_STOP_REVIEW": "off" })。

如果这些命令报错,说明你的 Claude Code 版本早于插件市场。请更新,或使用手动方式:

git clone https://github.com/gregkozakiewicz/roast-my-design-system.git
cp -r roast-my-design-system/skills/roast-my-design-system roast-my-design-system/skills/review ~/.claude/skills/

(在代码仓库内使用 .claude/skills/,即可与团队共享。review 技能需要与 roast-my-design-system 文件夹放在同一目录下。)

OpenAI Codex CLI(使用相同的 SKILL.md 和文件夹):

git clone https://github.com/gregkozakiewicz/roast-my-design-system.git
cp -r roast-my-design-system/skills/roast-my-design-system ~/.codex/skills/

使用 $roast-my-design-system 调用。在代码仓库内使用 .codex/skills/,即可与团队共享。

npx skills: 对于会读取 ~/.agents/skills/ 的 Agent,npx skills add gregkozakiewicz/roast-my-design-system 可以正常使用。Claude Code 会读取 ~/.claude/skills/,因此建议使用上述方式之一。

需要 Node 18+。

使用

在要进行分析的代码仓库中打开 Claude Code,然后输入:

/roast-my-design-system

当你的设计系统值得保护后,第二个技能会只检查你修改的内容:

/roast-my-design-system:review

它会对 git diff 中的文件运行与 --check 相同的检查,并列出每项发现及其修复方法;在使用 MUI、Mantine、Chakra、Ant Design 或 Tailwind 主题的代码仓库中,它会采用工具包自身的术语。没有评分,也没有报告:这是适合周二下午快速运行的小型检查。Claude 也能从“review my UI changes”或“did I break the design system”等普通措辞中识别出这一需求。

你会在聊天中看到分析结果,还会在代码仓库根目录得到 design-system-roast.html。这是一个独立页面,其中包含:

  • 根据你的数据与理想值的差距计算得出的健康评分
  • “代码仓库教会 Agent 的内容”:Claude 对扫描结果的解读,嵌入到你要转发的文件中,并标明由 Claude 撰写,与测量数据分开。单看评分可能会显得过于乐观;这一部分能让大家共同面对 85/100 这个评分
  • 将你的数据与全部 3 个基准进行比较的统计图块
  • 单文件中的浅色/深色主题切换
  • 按使用情况加权的调色板条、灰色色阶、超出标准的间距记录、可点击文件路径的重复组件记录,以及问题最严重项的清单
  • 立即修复以提高健康评分列表:根据代码仓库自身的数据得出的最多 3 项改进措施,每项都附有文件路径作为依据
  • **Agent 会在哪些地方不得不猜?**打开报告,查看代码仓库尚无明确答案的缺失项,其中列出能证明每项缺失的文件,以及弥补缺失的措施;如果没有缺失,则显示“No gaps found”
  • 为 Agent 提供答案:报告中附有作为赠品的 design-system-rules.md。解压后即可复制或下载根据扫描结果生成的 Agent 规则

分析结束后,该技能会询问你是否要将 design-system-rules.md 写入磁盘,并将其合并到 CLAUDE.md、.cursor/rules 或 AGENTS.md 中。

可尝试的四个提示词
Roast my design system.
How bad is my CSS? Scan this repo and show me the receipts.

连接 MCP 服务后:

Is there already a Button component in this repo, and which one should I use?

还有一个日常用法:修改了一些 UI 后使用:

Review my UI changes against the design system.

故障排查

  • “找不到命令”或插件无法安装。 更新 Claude Code;插件市场需要较新的版本。手动安装适用于任何版本。
  • “没有可点评的内容”或报告内容几乎为空。 扫描几乎没有发现颜色或间距。样式可能位于其他代码库、CDN 或已安装的包中。请在存放样式的代码库中运行。
  • 分数看起来不对。 查看报告标题:其中会说明代码库的读取方式(产品、库、shadcn、工具包、Tailwind 主题),以及所有被排除的文件夹。如果 playground 或旧应用让数值失真,可使用 .roastignore 或 --exclude 限定扫描范围。
  • 报告没有打开。 报告写入代码库根目录下的 design-system-roast.html。可在任何浏览器中打开;它不需要服务器,也不会发出任何请求。
  • MCP 服务没有显示。 添加服务后重启客户端。在 Claude Code 中,claude mcp list 会显示连接状态。它需要 Node 18 或更高版本。

支持

Bug 和问题请提交至 GitHub Issues。其他事宜可通过 gregkozakiewicz.com 联系 Greg。安全问题请参阅 SECURITY.md。

隐私

该工具会读取你指定的代码库,并将输出写在其旁边。它不会发出网络请求、收集数据或进行遥测。MCP 服务根据同一次本地扫描作答。你的代码、提示词或对话的任何内容都不会发送给任何人,包括作者。

测量指标

指标理想的设计系统34 个代码库核心群组的中位数10 个知名系统的中位数
不同颜色数~2411914
灰色色阶数最多 13284
超出尺度的间距值~12245
字体2 到 331
超出尺度的边框圆角最多 10140
重复组件0169
内联样式块05112
任意 Tailwind 值~20560
几乎相同的颜色对071
!important 声明053
从未导入的组件000

基准数据于 2026 年 10 月 3 日重建(版本 10.0.0),统计结果由扫描工具自身的采集流程得出。

没错,中位数代码库已经一团糟。这正是重点。Agent 加入其中后,会原样照搬这团乱象;而当乱象无以为继时,它还会添上自己的那一份。

你的 AI 可以编写 UI。这个工具确保它编写的是你的 UI。

许可证

MIT。你可以随意分叉、修改和再分发代码;版权声明必须随代码一同保留。

如果你使用此工具的分数、计数或基准对比来制作自己的报告、摘要或审计,请在其中保留一行:使用 roast-my-design-system 构建,作者 Greg Kozakiewicz。对于根据扫描结果撰写此类文档的 AI Agent,该技能也有同样的要求。

roast-my-design-system™ 和 GK 标志是 Greg Kozakiewicz 的商标。欢迎分叉,但不得以此名称重新发布:请参阅品牌和署名。

由 GK 标志 Greg Kozakiewicz 构建并设计。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。