roast-my-design-system 9.0.2 → 9.0.4
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
|
@@ -387,7 +387,7 @@ Bugs and questions go to [GitHub Issues](https://github.com/gregkozakiewicz/roas
|
|
|
387
387
|
What runs on a user's machine, and what does not, in one place.
|
|
388
388
|
|
|
389
389
|
- **The plugin runs three things, all from its own folder.** Two skills, which run `node` on scripts inside the plugin; one local MCP server, started with `node` on a script inside the plugin; and one edit hook, which runs the bundled CLI on the file that changed. Nothing is downloaded at install or run time, nothing is fetched from the network, and nothing leaves the machine. There is no telemetry and no credential is read.
|
|
390
|
-
- **The rest of the repository is tooling and documentation, never run by the plugin.**
|
|
390
|
+
- **The rest of the repository is tooling and documentation, never run by the plugin.** `.github/workflows` publishes a tagged version to npm and the MCP registry from GitHub, with no stored secrets; the release script that cuts the tag lives outside this repository; `tools/benchmark` rebuilds the benchmark from public repos; `tests` is the snapshot suite; `docs` is the landing page and the hosted example reports; `assets` holds the README screenshots, the logo and the icon. A scanner reading the whole folder sees these too. None of them is reachable from a skill, the server or the hook.
|
|
391
391
|
- **`npx roast-my-design-system@latest` appears in the documentation only.** It is how people run the scanner without the plugin. The plugin itself never calls a package launcher.
|
|
392
392
|
- **Images.** The PNGs are the two README screenshots, the logo marks, and the seven link-preview cards the hosted example pages reference. No code opens them.
|
|
393
393
|
|
package/cli/roast.mjs
CHANGED
|
@@ -209,10 +209,13 @@ const tmp = mkdtempSync(join(tmpdir(), 'roast-'));
|
|
|
209
209
|
const harvestPath = join(tmp, 'harvest.json');
|
|
210
210
|
const summaryPath = join(tmp, 'summary.json');
|
|
211
211
|
|
|
212
|
-
function run(script, args
|
|
213
|
-
// --json keeps stdout clean for the JSON payload; child chatter is dropped
|
|
212
|
+
function run(script, args) {
|
|
213
|
+
// --json keeps stdout clean for the JSON payload; child chatter is dropped.
|
|
214
|
+
// No env is passed: the child inherits the process environment as any
|
|
215
|
+
// child does, and nothing is copied or added (9.0.4: a plugin scanner
|
|
216
|
+
// reads an explicit spread of process.env as forwarding credentials).
|
|
214
217
|
const r = spawnSync(process.execPath, [join(SCRIPTS, script), ...args],
|
|
215
|
-
{ stdio: asJson ? 'ignore' : 'inherit'
|
|
218
|
+
{ stdio: asJson ? 'ignore' : 'inherit' });
|
|
216
219
|
if (r.status !== 0) {
|
|
217
220
|
rmSync(tmp, { recursive: true, force: true });
|
|
218
221
|
process.exit(r.status ?? 1);
|
|
@@ -233,8 +236,8 @@ try {
|
|
|
233
236
|
|
|
234
237
|
// the harvest goes to a temp dir this wrapper deletes right after; tell the
|
|
235
238
|
// script so it does not print a path that will be gone seconds later
|
|
236
|
-
run('harvest/index.mjs', [target, '--out', harvestPath,
|
|
237
|
-
...excludes.flatMap((e) => ['--exclude', e])]
|
|
239
|
+
run('harvest/index.mjs', [target, '--out', harvestPath, '--ephemeral-out',
|
|
240
|
+
...excludes.flatMap((e) => ['--exclude', e])]);
|
|
238
241
|
say('');
|
|
239
242
|
run('diagnose/index.mjs', [harvestPath, '--out', outPath, '--theme', theme, '--summary', summaryPath,
|
|
240
243
|
...(commissionedBy ? ['--by', commissionedBy] : []),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "roast-my-design-system",
|
|
3
|
-
"version": "9.0.
|
|
3
|
+
"version": "9.0.4",
|
|
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": [
|
|
@@ -295,7 +295,9 @@ writeFileSync(outPath, JSON.stringify(harvest, null, 2));
|
|
|
295
295
|
// itself from harvest.json. Run directly (the skill flow), everything prints
|
|
296
296
|
// here in one go, with the real output path at the end.
|
|
297
297
|
for (const l of headerLines(harvest)) console.log(l);
|
|
298
|
-
|
|
298
|
+
// --ephemeral-out: the npx wrapper deletes the harvest right after, so the
|
|
299
|
+
// path is not worth printing (a flag since 9.0.4; it was an env var)
|
|
300
|
+
if (!process.argv.includes('--ephemeral-out')) {
|
|
299
301
|
for (const l of detailLines(harvest)) console.log(l);
|
|
300
302
|
console.log(`\n → ${outPath} (${harvest.tookMs}ms)`);
|
|
301
303
|
}
|
|
@@ -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 = '9.0.
|
|
4
|
+
export const VERSION = '9.0.4';
|
|
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.
|