roast-my-design-system 8.3.2 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Your AI can write the UI. This makes sure it writes *your* UI.
10
10
 
11
- A free CLI tool (and Claude Code skill) that roasts your repo's design system with real data, then generates the rules that keep your AI agent on-system.
11
+ A free CLI tool, and a Claude Code plugin with two skills and a bundled local MCP server, that roasts your repo's design system with real data, reviews what you change against it, and generates the rules that keep your AI agent on-system.
12
12
 
13
13
  > **New in 8.0: support for the four big component kits.**
14
14
  >
@@ -83,6 +83,7 @@ Type these in a terminal and you get a result.
83
83
  | `... --card` | `roast-card.svg`: a shareable 1200x630 card with the score and worst findings. Pure SVG, embeds in a README |
84
84
  | `... --sarif` | `design-system-roast.sarif` for GitHub code scanning: upload it in CI and findings appear in the Security tab, annotated on files |
85
85
  | `... --check` | The working tree's changed files checked against the design system, in the terminal. Exits 1 on findings, so it slots into scripts |
86
+ | `/roast-my-design-system:review` (in Claude Code) | The same check in chat, from the plugin's second skill: each changed file's findings with the fix named, then the fixes applied and the check re-run |
86
87
  | <code>...&nbsp;--exclude&nbsp;lab/</code> | Leave a folder out of the scan (repeat the flag or comma-separate). Or list folders in a `.roastignore` file at the repo root. Either way the report says so in the header; see [Scoping the scan](#scoping-the-scan) |
87
88
  | `... --json` | The scan summary as JSON on stdout, for scripts and pipelines. Includes `schemaVersion`, the benchmark used, and every metric as a number, so two scans can be compared |
88
89
  | <code>...&nbsp;--by&nbsp;"Dwayne&nbsp;Hicks"</code> | Puts a name in the report header, for when you ran it for someone else |
@@ -269,16 +270,18 @@ Run it inside any repo. Same scanner, same report, straight from npm. The Claude
269
270
  /plugin install roast-my-design-system@roast-my-design-system
270
271
  ```
271
272
 
273
+ What it installs: two skills and one local MCP server, nothing else. **roast** (`/roast-my-design-system`, or "roast my design system") scans the whole repo and writes the report with Claude's read of the numbers inside it, then walks the fixes with you. **review** (`/roast-my-design-system:review`, or "review my UI changes") checks only what changed, in about a second. The bundled server gives your agent five read-only tools while it writes UI. Local, no network, no telemetry.
274
+
272
275
  If those commands error, your Claude Code is likely older than the plugin marketplace feature. Update Claude Code and retry, or use the manual route below: it works everywhere and installs the same skill.
273
276
 
274
277
  **Manual (Claude Code, any version):**
275
278
 
276
279
  ```bash
277
280
  git clone https://github.com/gregkozakiewicz/roast-my-design-system.git
278
- cp -r roast-my-design-system/skills/roast-my-design-system ~/.claude/skills/
281
+ cp -r roast-my-design-system/skills/roast-my-design-system roast-my-design-system/skills/review ~/.claude/skills/
279
282
  ```
280
283
 
281
- (Use `.claude/skills/` inside a repo instead to share it with your team.)
284
+ (Use `.claude/skills/` inside a repo instead to share it with your team. The `review` skill needs the `roast-my-design-system` folder beside it; it runs the engine from there.)
282
285
 
283
286
  **OpenAI Codex CLI** (same SKILL.md, same folder):
284
287
 
@@ -301,6 +304,14 @@ Open Claude Code in the repo you want roasted and type:
301
304
  /roast-my-design-system
302
305
  ```
303
306
 
307
+ And once you have a design system worth protecting, the second skill checks only what you changed, in about a second:
308
+
309
+ ```
310
+ /roast-my-design-system:review
311
+ ```
312
+
313
+ It runs the same check as `--check` on the files in your git diff and lists each finding with its fix, in the kit's own vocabulary on a MUI, Mantine, Chakra, Ant Design or Tailwind-theme repo. No score, no report: the small check for Tuesday afternoons. Claude also picks it up from plain words such as "review my UI changes" or "did I break the design system".
314
+
304
315
  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:
305
316
 
306
317
  - a **health score** computed from how your numbers sit against the ideal
@@ -331,6 +342,12 @@ With the MCP server connected (see [Live answers over MCP](#live-answers-over-mc
331
342
  Is there already a Button component in this repo, and which one should I use?
332
343
  ```
333
344
 
345
+ And the everyday one, after you have changed some UI:
346
+
347
+ ```
348
+ Review my UI changes against the design system.
349
+ ```
350
+
334
351
  ## Troubleshooting
335
352
 
336
353
  - **"Command not found" or the plugin will not install.** Update Claude Code; the plugin marketplace needs a recent version. The manual install above works on any version.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roast-my-design-system",
3
- "version": "8.3.2",
3
+ "version": "8.4.0",
4
4
  "mcpName": "io.github.gregkozakiewicz/roast-my-design-system",
5
5
  "description": "Your AI can write the UI. This makes sure it writes your UI. A deterministic scanner scores your design system 0-100 against 112 public repos, reads React and web components (Stencil, Lit), hands you a copy-paste fix prompt for each top finding, writes rules for Claude, Cursor, Copilot and Windsurf with --apply, and runs as a local MCP server with --mcp.",
6
6
  "keywords": [
@@ -1,7 +1,7 @@
1
1
  // Single version constant for the engine — imported by diagnose (report
2
2
  // footer) and rules (generated-by line). This is the bump spot that used to
3
3
  // live as a const inside diagnose/index.mjs.
4
- export const VERSION = '8.3.2';
4
+ export const VERSION = '8.4.0';
5
5
  // The shape of harvest.json and summary.json. Bumped only when a field is
6
6
  // renamed, removed or changes meaning; a new field is not a new schema. A
7
7
  // tool comparing two scans compares like with like by this number, not by VERSION.
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * The review, standalone: the working tree's changed UI and style files
4
+ * (git diff plus untracked) judged against the design system the scan found.
5
+ * Same engine and same words as roast_review over MCP and `--check` on the
6
+ * CLI; this entry exists so the review skill can run it from its own folder
7
+ * without the npm launcher. Read-only. Exits 1 when there are findings, so a
8
+ * script can gate on it.
9
+ *
10
+ * node review/index.mjs <repo-root> [--json]
11
+ */
12
+ import { resolve } from 'node:path';
13
+ import { loadKnowledge } from '../mcp/knowledge.mjs';
14
+ import { reviewData } from '../mcp/tools.mjs';
15
+ import { VERSION } from '../lib/version.mjs';
16
+
17
+ const argv = process.argv.slice(2);
18
+ const asJson = argv.includes('--json');
19
+ const root = resolve(argv.find((a) => !a.startsWith('--')) ?? '.');
20
+ const { text, total } = reviewData(loadKnowledge(root));
21
+ if (asJson) console.log(JSON.stringify({ version: VERSION, root, findings: total, text }, null, 2));
22
+ else console.log(text);
23
+ process.exit(total ? 1 : 0);