roast-my-design-system

Your design system, measured.

Your AI can write the UI. This makes sure it writes your UI.

A free CLI tool on npm, and a Claude Code + Codex skill. A deterministic scanner reads your repo and returns:

Read only, no network, no telemetry, one shareable HTML report. Every release is provenance signed on npm and passes a 55-check snapshot suite before it ships.

Install the Claude Code skill
/plugin marketplace add gregkozakiewicz/roast-my-design-system
/plugin install roast-my-design-system@roast-my-design-system

The full experience: the roast in chat and inside the report itself — npx gives you the numbers; the skill adds what they mean, in the same file you'll share. Then the fixes walked with you.

Run it with npx
npx roast-my-design-system@latest

One command in any repo. No install, no Claude needed.

Add the MCP server to Claude Code
claude mcp add roast -- npx roast-my-design-system --mcp

Your agent asks the design system before writing UI, and gets the work checked after. Local, read only, nothing leaves your machine. Any MCP client can register the same command; tested with Claude Code.

Manual install (Claude Code, any version)
git clone https://github.com/gregkozakiewicz/roast-my-design-system.git
cp -r roast-my-design-system/skills/roast-my-design-system ~/.claude/skills/

Works everywhere, installs the same skill. Use ~/.codex/skills/ instead for OpenAI Codex.

Every command

One scan powers all of it; the flags decide what lands on disk. Combine freely. The full documentation, with every flag explained and the MCP tools in detail, lives at github.com/gregkozakiewicz/roast-my-design-system.

CommandWhat you get
npx roast-my-design-system@latestThe scan and design-system-roast.html, opened in your browser
npx roast-my-design-system@latest <path>Scan a different repo than the current directory
... --applyThe generated agent rules injected into every agent file you have: CLAUDE.md, AGENTS.md, .cursorrules, .cursor/rules/, .windsurfrules and .github/copilot-instructions.md, inside a marked block. Re-running replaces only that block, never your own text
... --rulesThe same rules written to design-system-rules.md instead, for pasting by hand
... --cardroast-card.svg: a shareable 1200x630 card with the score and worst findings. Pure SVG, embeds in a README
... --sarifdesign-system-roast.sarif for GitHub code scanning: upload it in CI and findings appear in the Security tab, annotated on files
... --mcpThe scan as a local MCP server: five tools your agent calls while writing UI, from "is there a Button already?" to "review my changes". Nothing leaves your machine
... --checkThe working tree's changed files checked against the design system, in the terminal. Exits 1 on findings, so it slots into scripts
... --by "Dwayne Hicks"A requester credit in the report header, next to the scan date
... --notes <file.md>An agent-written analysis embedded in the report as "What the numbers mean": labelled as written by AI, kept apart from the measured numbers. The Claude Code skill writes and passes this automatically; the flag is here so any agent can
... --section "Title" <file.md>An agent-written chapter appended after the notes, same styling, same written-by-AI label, with sub-headings allowed. Repeatable, so analysis that outgrows the notes still lives inside the report instead of a hand-built page
... --exclude lab/Leave a folder out of the scan, or list folders in a .roastignore file at the repo root. The report prints every exclusion in the header with its file count, so a scoped score always says it is scoped
... --jsonThe scan summary as JSON on stdout, for scripts and pipelines
... --theme light / --out <file> / --no-openLight report, custom report path, don't open the browser
/roast-my-design-system (in Claude Code)The full experience: the roast in chat and embedded in the report as "What the numbers mean", the rules offer, and the fix loop with Claude on your own numbers

One scan writes rules for every agent: Claude, Cursor, GitHub Copilot, and Windsurf. Every scan also checks the agent rules you already have and flags stale references, no flag needed.

Example roasts

Real reports from public repos, hosted exactly as the skill generates them. Every number is deterministic; every path is real.

vercel/ai-chatbotwith Claude's notes103 arbitrary values like [13px] punched through the Tailwind scale
75/100
excalidraw/excalidraw42 colour pairs nearly identical, copy-paste, not decisions
55/100
dubinc/dub632 arbitrary bracket values and 22 duplicated components
25/100

Your AI can write the UI. This makes sure it writes your UI.