roast-my-design-system
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 10 GitHub stars
Code Fail
- spawnSync — Synchronous process spawning in bin/roast.mjs
- exec() — Shell command execution in skills/roast-my-design-system/scripts/harvest/components.mjs
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
v3.11.0 · Try it: npx roast-my-design-system · Roasts your design system with real data: a health score, the receipts, the first fixes ranked by payoff, and with --rules the agent rules file that stops the mess coming back. Benchmarked against 30 public repos and 10 reputable systems. Also a Claude Code + Codex skill.
roast-my-design-system
A Claude Code skill that roasts your repo's design system with real data.
Run this skill on your codebase and get, in about a second:
- A health score you can defend in a meeting. 0-100, deterministic, benchmarked against Ideal Design System norms, 30 scanned public repos and 10 reputable design systems (Primer, Polaris, Carbon, shadcn/ui…).
- Per-package scores for monorepos. One blended number hides which package is the problem:
packages/uiscores 80 whileapps/webscores 40, and now you can see it. - The receipts behind it. Every colour and its near-identical twin, every spacing value, typeface, duplicated or never-imported component, inline style and !important, with real file paths, in one self-contained HTML report you can open, Slack or email.
- The first fixes ranked by payoff. A "Where to start" list derived from your own numbers: keep the report as the audit, or hand it to Claude as the punch list for the fix.
- Rules that stop the mess coming back. A generated
design-system-rules.mdfor your CLAUDE.md or .cursor/rules: canonical components, your token file, known duplicates to avoid, so your AI agent follows your system instead of guessing at it.
Why this exists
Your AI agent (Claude, Cursor, Copilot) builds UI by imitating what's already in your repo. If your repo has 112 colours and four Button implementations, your agent guesses which one is canonical, and it picks wrong half the time. That's why AI-generated UI looks almost-but-not-quite right. The first step to fixing it is seeing the mess measured.
Example use cases
- Pre-refactor audit. Run
/roast-my-design-systembefore a design-system cleanup to get the measured baseline: every colour, spacing value, duplicated component and inline style, with real file paths. - Diagnosing almost-right AI output. When Claude keeps generating UI that looks slightly off, the report shows which duplicated components and stray values it is imitating, and where the canonical ones live.
- Making the case without a meeting. Drop the self-contained HTML report in Slack: a health score and three benchmarks (ideal norms, the 30-repo median, 10 reputable systems) argue for the design system for you.
- The fix loop. Hand the report back to Claude as the punch list and work through the Where to start section, file by file.
The full report for vercel/ai-chatbot, top to bottom:

The same report in light mode (one file, built-in toggle):

What makes the numbers trustworthy
- Deterministic scanner, not AI sampling. A zero-dependency Node script reads every file (about a second on a normal repo, a few on a large monorepo) and returns the same numbers every run. Claude narrates; it never counts.
- Read-only. Nothing in your repo is modified. The only outputs are a temp JSON and the HTML report.
- No network, no telemetry. Everything runs locally. Nothing about your code leaves your machine.
- Honest exclusions. Test files, Storybook stories, docs sites, example apps, SVG artwork, and email templates (which must inline styles) are excluded, so you can't discredit the numbers on a technicality.
- Intent-aware counting (v3). Runtime-computed inline styles, compound-component APIs and wrapper components are not crimes and are not counted as ones. Token-led repos are judged on their hardcoded strays, not their token architecture. Repeated arbitrary values are read as decisions without names, not drift.
- A real benchmark. The "Avg Design System" yardstick comes from scanning 30 public React repos (cal.com, excalidraw, outline, twenty, dub, langfuse…). Median: 96 colours, 14 greys, 14 duplicated components, 45 inline style blocks, 91 arbitrary Tailwind values.
- A second yardstick: reputable systems. Curated, scoped scans of 10 well-known design systems (shadcn/ui, Primer, Polaris, Carbon, Material UI, Chakra, Ant Design, GOV.UK, Spectrum, Cloudscape) show what disciplined looks like at scale.
Install
No install, no Claude needed — just try it:
npx roast-my-design-system
Run it inside any repo. Same scanner, same report, straight from npm. Add --rules to also generate the agent rules file, --json for a machine-readable summary, or --theme light, --out <file>, --no-open as you like. The Claude Code skill below adds the conversation on top: the roast in chat, then a punch list you can actually work through with Claude.
Claude Code (recommended):
/plugin marketplace add pencilrebel/roast-my-design-system
/plugin install roast-my-design-system@roast-my-design-system
If those commands error, your Claude Code is likely older than the plugin marketplace feature: update Claude Code and retry, or just use the manual route below (it works everywhere and installs the same skill).
Manual (Claude Code, any version):
git clone https://github.com/pencilrebel/roast-my-design-system.git
cp -r roast-my-design-system/skills/roast-my-design-system ~/.claude/skills/
(Use .claude/skills/ inside a repo instead to share it with your team.)
OpenAI Codex CLI (same SKILL.md, same folder):
git clone https://github.com/pencilrebel/roast-my-design-system.git
cp -r roast-my-design-system/skills/roast-my-design-system ~/.codex/skills/
Invoke with $roast-my-design-system (or let Codex auto-match it). Use .codex/skills/ inside a repo to share with your team.
npx skills: npx skills add pencilrebel/roast-my-design-system works for agents that read ~/.agents/skills/. Claude Code currently reads ~/.claude/skills/, so prefer one of the routes above.
Requires Node 18+.
Use
Open Claude Code in the repo you want roasted and type:
/roast-my-design-system
You get the roast in chat plus design-system-roast.html at your repo root: a self-contained page (open it, Slack it, email it, no external requests) with:
- a health score computed from how your numbers sit against the ideal
- stat tiles comparing you to all three yardsticks: Ideal, the 30-repo average, and the reputable systems
- a light/dark theme toggle in one file
- the usage-weighted palette bar, the grey ramp, the off-scale spacing receipts, the duplicate-component receipts with clickable file paths, and the worst-offenders ledger
- a Where to start close: up to three moves derived from your repo's own numbers, each with a file-path receipt
- a present 🎁 below it: you sat through the roast, so
design-system-rules.mdis wrapped inside the report itself. Unwrap, then copy or download the agent rules generated from your scan.
After the roast, the skill also offers to write design-system-rules.md to disk and merge it into your CLAUDE.md, .cursor/rules or AGENTS.md.
Live examples
Three real roasts of public repos, hosted as-is (the same self-contained HTML the skill generates):
What it measures
| Metric | Ideal Design System | Median of 30 scanned repos | Median of 10 reputable systems |
|---|---|---|---|
| Distinct colours | ~24 | 96 | 24 |
| Shades of grey | up to 13 | 14 | 5 |
| Off-scale spacing values | ~12 | 27 | 6 |
| Typefaces | 2–3 | 2 | 1 |
| Border radii | up to 10 | 12 | 2 |
| Duplicated components | 0 | 14 | 10 |
| Inline style blocks | 0 | 45 | 12 |
| Arbitrary Tailwind values | ~20 | 91 | 0 |
| Near-identical colour pairs | 0 | 3 | 1 |
| !important declarations | 0 | 5 | 3 |
| Components never imported | 0 | 0 | 0 |
Yes, the median repo is already a mess. That's the point.
License
MIT. The code is yours to fork, modify and redistribute; the copyright notice travels with it.
roast-my-design-system™ and the GK mark are trademarks of Greg Kozakiewicz. Forking is welcome, republishing under this name is not: see brand and attribution.
Built and designed by
Greg Kozakiewicz.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found