noah-cursor 1.2.0 → 1.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 +11 -23
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +3 -4
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +3 -4
- package/dist/commands/browse.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +2 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +2 -3
- package/dist/commands/search.js.map +1 -1
- package/dist/noah-registry/manifest.json +25 -25
- package/dist/noah-registry/presets/.gitkeep +0 -0
- package/dist/noah-registry/skills/larastan-fix/SKILL.md +203 -0
- package/dist/noah-registry/skills/nestjs-knip-fix/SKILL.md +147 -0
- package/dist/noah-registry/skills/nestjs-knip-fix/config/knip.nestjs.json +29 -0
- package/dist/noah-registry/skills/node-doctor-fix/SKILL.md +146 -0
- package/dist/noah-registry/skills/node-doctor-fix/config/node-doctor.knip.json +22 -0
- package/dist/noah-registry/skills/node-doctor-fix/scripts/node-doctor.mjs +393 -0
- package/dist/noah-registry/skills/react-doctor-fix/SKILL.md +185 -0
- package/dist/services/install-service.d.ts.map +1 -1
- package/dist/services/install-service.js +1 -2
- package/dist/services/install-service.js.map +1 -1
- package/package.json +1 -1
- package/dist/noah-registry/presets/noah-web-stack/preset.json +0 -3
- package/dist/noah-registry/presets/test/preset.json +0 -3
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* node-doctor — analyse a generic Node.js project.
|
|
4
|
+
*
|
|
5
|
+
* Combines:
|
|
6
|
+
* 1) Knip (unused files / exports / dependencies) using the bundled config
|
|
7
|
+
* 2) Package hygiene checks (bin/main/exports/scripts paths, engines)
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node scripts/node-doctor.mjs [projectDir] [--json] [--knip-only] [--hygiene-only]
|
|
11
|
+
*
|
|
12
|
+
* Exit codes: 0 clean, 1 findings, 2 usage/setup error
|
|
13
|
+
*/
|
|
14
|
+
import { spawnSync } from "node:child_process";
|
|
15
|
+
import fs from "node:fs";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
|
|
19
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const DEFAULT_KNIP_CONFIG = path.resolve(
|
|
21
|
+
__dirname,
|
|
22
|
+
"../config/node-doctor.knip.json",
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
function parseArgs(argv) {
|
|
26
|
+
const opts = {
|
|
27
|
+
dir: process.cwd(),
|
|
28
|
+
json: false,
|
|
29
|
+
knipOnly: false,
|
|
30
|
+
hygieneOnly: false,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
for (const arg of argv) {
|
|
34
|
+
if (arg === "--json") opts.json = true;
|
|
35
|
+
else if (arg === "--knip-only") opts.knipOnly = true;
|
|
36
|
+
else if (arg === "--hygiene-only") opts.hygieneOnly = true;
|
|
37
|
+
else if (arg === "--help" || arg === "-h") opts.help = true;
|
|
38
|
+
else if (arg.startsWith("-")) {
|
|
39
|
+
throw new Error(`Unknown flag: ${arg}`);
|
|
40
|
+
} else opts.dir = path.resolve(arg);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return opts;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function readJson(filePath) {
|
|
47
|
+
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function exists(filePath) {
|
|
51
|
+
try {
|
|
52
|
+
fs.accessSync(filePath);
|
|
53
|
+
return true;
|
|
54
|
+
} catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function isNodeProject(dir) {
|
|
60
|
+
return exists(path.join(dir, "package.json"));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function looksLikeFrameworkProject(pkg) {
|
|
64
|
+
const all = {
|
|
65
|
+
...pkg.dependencies,
|
|
66
|
+
...pkg.devDependencies,
|
|
67
|
+
...pkg.peerDependencies,
|
|
68
|
+
};
|
|
69
|
+
const keys = Object.keys(all ?? {});
|
|
70
|
+
return {
|
|
71
|
+
nest: keys.some((k) => k.startsWith("@nestjs/")),
|
|
72
|
+
next: keys.includes("next"),
|
|
73
|
+
react: keys.includes("react") && !keys.includes("next"),
|
|
74
|
+
laravelHint: false,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Resolve package.json "exports" / "bin" / "main" targets to filesystem paths. */
|
|
79
|
+
function collectPackagePaths(pkg, dir) {
|
|
80
|
+
const targets = [];
|
|
81
|
+
|
|
82
|
+
const add = (rel, kind, label) => {
|
|
83
|
+
if (!rel || typeof rel !== "string") return;
|
|
84
|
+
if (rel.startsWith("http:") || rel.startsWith("https:") || rel.startsWith("node:")) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const cleaned = rel.replace(/^\.\//, "");
|
|
88
|
+
targets.push({ kind, label, rel: cleaned, abs: path.join(dir, cleaned) });
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
if (pkg.main) add(pkg.main, "main", "main");
|
|
92
|
+
if (pkg.module) add(pkg.module, "module", "module");
|
|
93
|
+
if (pkg.types) add(pkg.types, "types", "types");
|
|
94
|
+
if (pkg.typings) add(pkg.typings, "types", "typings");
|
|
95
|
+
|
|
96
|
+
if (typeof pkg.bin === "string") add(pkg.bin, "bin", "bin");
|
|
97
|
+
else if (pkg.bin && typeof pkg.bin === "object") {
|
|
98
|
+
for (const [name, rel] of Object.entries(pkg.bin)) {
|
|
99
|
+
add(rel, "bin", `bin.${name}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const walkExports = (value, label) => {
|
|
104
|
+
if (!value) return;
|
|
105
|
+
if (typeof value === "string") add(value, "exports", label);
|
|
106
|
+
else if (typeof value === "object") {
|
|
107
|
+
for (const [k, v] of Object.entries(value)) {
|
|
108
|
+
walkExports(v, `${label}.${k}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
walkExports(pkg.exports, "exports");
|
|
113
|
+
|
|
114
|
+
return targets;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function scriptLocalRefs(script) {
|
|
118
|
+
if (typeof script !== "string") return [];
|
|
119
|
+
const refs = [];
|
|
120
|
+
const patterns = [
|
|
121
|
+
/\bnode\s+([./][^\s]+)/g,
|
|
122
|
+
/\bts-node\s+([./][^\s]+)/g,
|
|
123
|
+
/\btsx\s+([./][^\s]+)/g,
|
|
124
|
+
/\bsh\s+([./][^\s]+)/g,
|
|
125
|
+
/\bbash\s+([./][^\s]+)/g,
|
|
126
|
+
];
|
|
127
|
+
for (const re of patterns) {
|
|
128
|
+
let m;
|
|
129
|
+
while ((m = re.exec(script)) !== null) {
|
|
130
|
+
refs.push(m[1]);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return refs;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function runHygiene(dir, pkg) {
|
|
137
|
+
const findings = [];
|
|
138
|
+
|
|
139
|
+
if (!pkg.name) {
|
|
140
|
+
findings.push({
|
|
141
|
+
type: "package-hygiene",
|
|
142
|
+
severity: "error",
|
|
143
|
+
message: 'package.json is missing "name"',
|
|
144
|
+
file: "package.json",
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (!pkg.version) {
|
|
148
|
+
findings.push({
|
|
149
|
+
type: "package-hygiene",
|
|
150
|
+
severity: "error",
|
|
151
|
+
message: 'package.json is missing "version"',
|
|
152
|
+
file: "package.json",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (!pkg.engines?.node) {
|
|
157
|
+
findings.push({
|
|
158
|
+
type: "package-hygiene",
|
|
159
|
+
severity: "warning",
|
|
160
|
+
message: 'package.json is missing "engines.node" (recommended for Node libraries/CLIs)',
|
|
161
|
+
file: "package.json",
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
for (const target of collectPackagePaths(pkg, dir)) {
|
|
166
|
+
if (!exists(target.abs)) {
|
|
167
|
+
findings.push({
|
|
168
|
+
type: "package-hygiene",
|
|
169
|
+
severity: "error",
|
|
170
|
+
message: `${target.label} points to missing file: ${target.rel}`,
|
|
171
|
+
file: "package.json",
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (pkg.scripts && typeof pkg.scripts === "object") {
|
|
177
|
+
for (const [name, script] of Object.entries(pkg.scripts)) {
|
|
178
|
+
for (const ref of scriptLocalRefs(script)) {
|
|
179
|
+
const abs = path.resolve(dir, ref);
|
|
180
|
+
if (!exists(abs)) {
|
|
181
|
+
findings.push({
|
|
182
|
+
type: "package-hygiene",
|
|
183
|
+
severity: "error",
|
|
184
|
+
message: `scripts.${name} references missing file: ${ref}`,
|
|
185
|
+
file: "package.json",
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return findings;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function runKnip(dir) {
|
|
196
|
+
if (!exists(DEFAULT_KNIP_CONFIG)) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
findings: [
|
|
200
|
+
{
|
|
201
|
+
type: "setup",
|
|
202
|
+
severity: "error",
|
|
203
|
+
message: `Bundled Knip config missing: ${DEFAULT_KNIP_CONFIG}`,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
raw: "",
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Prefer project knip config when present; otherwise use bundled Node defaults.
|
|
211
|
+
const projectConfigs = ["knip.json", "knip.jsonc", "knip.ts", "knip.config.ts"];
|
|
212
|
+
const hasProjectConfig = projectConfigs.some((f) => exists(path.join(dir, f))) ||
|
|
213
|
+
(() => {
|
|
214
|
+
try {
|
|
215
|
+
const pkg = readJson(path.join(dir, "package.json"));
|
|
216
|
+
return Boolean(pkg.knip);
|
|
217
|
+
} catch {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
})();
|
|
221
|
+
|
|
222
|
+
const args = ["knip", "--no-progress", "--reporter", "json"];
|
|
223
|
+
if (!hasProjectConfig) {
|
|
224
|
+
args.push("--config", DEFAULT_KNIP_CONFIG);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const result = spawnSync("npx", args, {
|
|
228
|
+
cwd: dir,
|
|
229
|
+
encoding: "utf8",
|
|
230
|
+
shell: process.platform === "win32",
|
|
231
|
+
env: process.env,
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
const raw = `${result.stdout ?? ""}${result.stderr ?? ""}`.trim();
|
|
235
|
+
const findings = [];
|
|
236
|
+
|
|
237
|
+
// Knip JSON reporter may print a JSON object or array; also tolerate text fallback.
|
|
238
|
+
try {
|
|
239
|
+
const parsed = JSON.parse(result.stdout || "null");
|
|
240
|
+
if (parsed && typeof parsed === "object") {
|
|
241
|
+
const pushIssue = (type, items) => {
|
|
242
|
+
if (!Array.isArray(items)) return;
|
|
243
|
+
for (const item of items) {
|
|
244
|
+
const file = item.file ?? item.name ?? item.path ?? undefined;
|
|
245
|
+
const name = item.name ?? item.symbol ?? item.identifier;
|
|
246
|
+
findings.push({
|
|
247
|
+
type,
|
|
248
|
+
severity: "error",
|
|
249
|
+
message: name ? `${type}: ${name}` : String(type),
|
|
250
|
+
file,
|
|
251
|
+
raw: item,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// Shape varies by knip version — handle common keys.
|
|
257
|
+
pushIssue("unused-files", parsed.files);
|
|
258
|
+
pushIssue("unused-dependencies", parsed.dependencies);
|
|
259
|
+
pushIssue("unused-devDependencies", parsed.devDependencies);
|
|
260
|
+
pushIssue("unlisted-dependencies", parsed.unlisted);
|
|
261
|
+
pushIssue("unused-exports", parsed.exports);
|
|
262
|
+
pushIssue("unused-types", parsed.types);
|
|
263
|
+
pushIssue("unused-duplicates", parsed.duplicates);
|
|
264
|
+
pushIssue("unused-enumMembers", parsed.enumMembers);
|
|
265
|
+
pushIssue("unused-namespaceMembers", parsed.nsExports ?? parsed.nsTypes);
|
|
266
|
+
pushIssue("unused-binaries", parsed.binaries);
|
|
267
|
+
|
|
268
|
+
if (Array.isArray(parsed.issues)) {
|
|
269
|
+
for (const issue of parsed.issues) {
|
|
270
|
+
findings.push({
|
|
271
|
+
type: issue.type ?? "knip",
|
|
272
|
+
severity: "error",
|
|
273
|
+
message: issue.message ?? JSON.stringify(issue),
|
|
274
|
+
file: issue.file,
|
|
275
|
+
raw: issue,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
} catch {
|
|
281
|
+
if (result.status && result.status !== 0 && raw) {
|
|
282
|
+
findings.push({
|
|
283
|
+
type: "knip",
|
|
284
|
+
severity: "error",
|
|
285
|
+
message: "Knip reported issues (see raw output)",
|
|
286
|
+
raw,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// If JSON parse yielded nothing but knip failed, surface stdout/stderr.
|
|
292
|
+
if (findings.length === 0 && result.status && result.status !== 0) {
|
|
293
|
+
findings.push({
|
|
294
|
+
type: "knip",
|
|
295
|
+
severity: "error",
|
|
296
|
+
message: raw || `knip exited with code ${result.status}`,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
return { ok: result.status === 0 && findings.length === 0, findings, raw, status: result.status };
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function printHuman(findings, knipRaw) {
|
|
304
|
+
if (findings.length === 0) {
|
|
305
|
+
console.log("node-doctor: clean — no findings");
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
console.log(`node-doctor: ${findings.length} finding(s)\n`);
|
|
310
|
+
const byType = new Map();
|
|
311
|
+
for (const f of findings) {
|
|
312
|
+
const list = byType.get(f.type) ?? [];
|
|
313
|
+
list.push(f);
|
|
314
|
+
byType.set(f.type, list);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
for (const [type, list] of byType) {
|
|
318
|
+
console.log(`${type} (${list.length})`);
|
|
319
|
+
for (const f of list) {
|
|
320
|
+
const loc = f.file ? ` ${f.file}` : "";
|
|
321
|
+
console.log(` - [${f.severity}]${loc} ${f.message}`);
|
|
322
|
+
}
|
|
323
|
+
console.log();
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (knipRaw && findings.some((f) => f.type === "knip" && f.raw === knipRaw)) {
|
|
327
|
+
console.log("knip raw output:\n" + knipRaw);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function main() {
|
|
332
|
+
let opts;
|
|
333
|
+
try {
|
|
334
|
+
opts = parseArgs(process.argv.slice(2));
|
|
335
|
+
} catch (error) {
|
|
336
|
+
console.error(String(error instanceof Error ? error.message : error));
|
|
337
|
+
process.exit(2);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (opts.help) {
|
|
341
|
+
console.log(`Usage: node-doctor.mjs [projectDir] [--json] [--knip-only] [--hygiene-only]`);
|
|
342
|
+
process.exit(0);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
const dir = opts.dir;
|
|
346
|
+
if (!isNodeProject(dir)) {
|
|
347
|
+
console.error(`Not a Node.js project (package.json missing): ${dir}`);
|
|
348
|
+
process.exit(2);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
const pkg = readJson(path.join(dir, "package.json"));
|
|
352
|
+
const frameworks = looksLikeFrameworkProject(pkg);
|
|
353
|
+
if (frameworks.nest) {
|
|
354
|
+
console.error(
|
|
355
|
+
"This looks like a NestJS project. Use /nestjs-knip-fix (npx knip) instead of node-doctor.",
|
|
356
|
+
);
|
|
357
|
+
process.exit(2);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const findings = [];
|
|
361
|
+
let knipRaw = "";
|
|
362
|
+
|
|
363
|
+
if (!opts.hygieneOnly) {
|
|
364
|
+
const knip = runKnip(dir);
|
|
365
|
+
knipRaw = knip.raw;
|
|
366
|
+
findings.push(...knip.findings);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
if (!opts.knipOnly) {
|
|
370
|
+
findings.push(...runHygiene(dir, pkg));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
if (opts.json) {
|
|
374
|
+
console.log(
|
|
375
|
+
JSON.stringify(
|
|
376
|
+
{
|
|
377
|
+
tool: "node-doctor",
|
|
378
|
+
cwd: dir,
|
|
379
|
+
findingCount: findings.length,
|
|
380
|
+
findings,
|
|
381
|
+
},
|
|
382
|
+
null,
|
|
383
|
+
2,
|
|
384
|
+
),
|
|
385
|
+
);
|
|
386
|
+
} else {
|
|
387
|
+
printHuman(findings, knipRaw);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
process.exit(findings.length === 0 ? 0 : 1);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
main();
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react-doctor-fix
|
|
3
|
+
description: >-
|
|
4
|
+
Runs react-doctor, constructs fixes for all findings, and verifies that
|
|
5
|
+
implementations, features, and functionalities are not broken after changes.
|
|
6
|
+
Use when the user runs /react-doctor-fix, asks to run react-doctor, clean up
|
|
7
|
+
React Doctor diagnostics, or fix React Doctor findings without regressions.
|
|
8
|
+
disable-model-invocation: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /react-doctor-fix
|
|
12
|
+
|
|
13
|
+
Run **React Doctor**, fix **all** findings, and prove behavior still works.
|
|
14
|
+
|
|
15
|
+
Do **not** stop after the first category. Do **not** mass-suppress. Prefer root-cause fixes. After every batch of edits, re-verify with project checks so implementations, features, and functionalities are not broken.
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
Copy this checklist and track progress:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
React Doctor Fix Progress:
|
|
23
|
+
- [ ] 1. Confirm React project + available verification commands
|
|
24
|
+
- [ ] 2. Baseline scan (verbose + JSON)
|
|
25
|
+
- [ ] 3. Triage findings (priority order)
|
|
26
|
+
- [ ] 4. Fix in batches (explain → edit → verify)
|
|
27
|
+
- [ ] 5. Re-scan until clean (or document intentional leftovers)
|
|
28
|
+
- [ ] 6. Final verification + report
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 1. Confirm React project + verification commands
|
|
32
|
+
|
|
33
|
+
From the project root:
|
|
34
|
+
|
|
35
|
+
1. Confirm this is a React / Next.js / Vite / Remix / Expo (or similar) app — abort with a clear message if not.
|
|
36
|
+
2. Detect how to verify nothing broke. Prefer existing scripts from `package.json` in this order when present:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm test # or pnpm / yarn / bun equivalent
|
|
40
|
+
npm run typecheck # or tsc --noEmit
|
|
41
|
+
npm run lint
|
|
42
|
+
npm run build
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Record the chosen commands before editing. If none exist, use the strongest available subset (at least typecheck or build) and say what you could not run.
|
|
46
|
+
|
|
47
|
+
Optional monorepo:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx react-doctor@latest -y --verbose --project <name>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Baseline scan
|
|
54
|
+
|
|
55
|
+
Always non-interactive for agents:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx react-doctor@latest -y --verbose --no-score
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Also capture machine-readable output when practical:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx react-doctor@latest -y --verbose --no-score --json > .react-doctor-baseline.json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
If the JSON file would be committed accidentally, delete it before finishing (or keep it untracked). Prefer a temp path when easy.
|
|
68
|
+
|
|
69
|
+
For branch-scoped cleanup only (when the user asks for changed files / PR noise only):
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx react-doctor@latest -y --verbose --no-score --scope changed
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Default for this skill is a **full** scan unless the user scopes it.
|
|
76
|
+
|
|
77
|
+
### 3. Triage findings
|
|
78
|
+
|
|
79
|
+
Work findings in this priority:
|
|
80
|
+
|
|
81
|
+
1. **Security**
|
|
82
|
+
2. **Correctness** / broken behavior risks
|
|
83
|
+
3. **State & effects** (derived state in effects, effect loops, missing deps that matter)
|
|
84
|
+
4. **Performance**
|
|
85
|
+
5. **Accessibility**
|
|
86
|
+
6. **Architecture** / dead code / bundle / remaining warnings
|
|
87
|
+
|
|
88
|
+
Within a priority, fix `error` before `warning`.
|
|
89
|
+
|
|
90
|
+
For an unclear rule:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npx react-doctor@latest rules explain <rule>
|
|
94
|
+
npx react-doctor@latest why path/to/file.tsx:123
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Optional per-rule guidance from React Doctor prompts (when helpful):
|
|
98
|
+
|
|
99
|
+
`https://www.react.doctor/prompts/rules/react-doctor/<rule>.md`
|
|
100
|
+
|
|
101
|
+
Example: `https://www.react.doctor/prompts/rules/react-doctor/no-derived-state.md`
|
|
102
|
+
|
|
103
|
+
### 4. Fix in batches (explain → edit → verify)
|
|
104
|
+
|
|
105
|
+
For each batch (prefer one rule or one tightly related file group):
|
|
106
|
+
|
|
107
|
+
1. **Explain the fix** briefly: what is wrong, why the change is safe, what behavior must stay the same.
|
|
108
|
+
2. **Edit** the minimum code needed. Match project patterns. Do not drive-by refactors.
|
|
109
|
+
3. **Verify immediately** with the commands from step 1 (at least the fastest relevant ones after each batch; full suite before the final report).
|
|
110
|
+
4. If verification fails: **revert or repair** the fix before continuing. Never leave the tree broken to chase a cleaner doctor score.
|
|
111
|
+
|
|
112
|
+
#### Fix construction rules
|
|
113
|
+
|
|
114
|
+
- Preserve public behavior, routes, props contracts, visible UI, and user flows.
|
|
115
|
+
- Prefer derived values during render over syncing state in `useEffect`.
|
|
116
|
+
- Prefer event handlers / key handlers over effect-driven “do X when Y changes” when Y is a user action.
|
|
117
|
+
- Do not remove “unused” exports/files that are part of a public package API, generated barrels, or framework entrypoints without confirming.
|
|
118
|
+
- Do not change dependency versions unless a finding explicitly requires it and the user wants that scope.
|
|
119
|
+
- Keep diffs small and reviewable.
|
|
120
|
+
|
|
121
|
+
#### Suppressions (last resort only)
|
|
122
|
+
|
|
123
|
+
Prefer fixing the root cause. Suppress only when:
|
|
124
|
+
|
|
125
|
+
- the finding is a true false positive for this codebase, **or**
|
|
126
|
+
- a correct fix would be an out-of-scope rewrite the user did not approve
|
|
127
|
+
|
|
128
|
+
Keep suppressions narrow:
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
// react-doctor-disable-next-line react-doctor/no-derived-state
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Never disable whole categories (`rules category … off`) unless the user explicitly asks.
|
|
135
|
+
|
|
136
|
+
Document every suppression in the final report with file, rule, and reason.
|
|
137
|
+
|
|
138
|
+
### 5. Re-scan until clean
|
|
139
|
+
|
|
140
|
+
After fixes:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npx react-doctor@latest -y --verbose --no-score
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Repeat triage → fix → verify until:
|
|
147
|
+
|
|
148
|
+
- the scan reports no remaining findings, **or**
|
|
149
|
+
- only explicitly approved / documented suppressions or deferred items remain
|
|
150
|
+
|
|
151
|
+
Do not claim “all clear” if the scan still fails.
|
|
152
|
+
|
|
153
|
+
### 6. Final verification + report
|
|
154
|
+
|
|
155
|
+
Run the full verification set from step 1 again.
|
|
156
|
+
|
|
157
|
+
Report in this shape:
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
## React Doctor fix report
|
|
161
|
+
|
|
162
|
+
### Scan
|
|
163
|
+
- Baseline: <N findings / score if shown>
|
|
164
|
+
- Final: <clean | N remaining>
|
|
165
|
+
|
|
166
|
+
### Fixed
|
|
167
|
+
- `rule-id` — file(s) — one-line fix summary
|
|
168
|
+
|
|
169
|
+
### Suppressions
|
|
170
|
+
- none | `rule-id` @ file:line — reason
|
|
171
|
+
|
|
172
|
+
### Verification
|
|
173
|
+
- <command> — pass/fail
|
|
174
|
+
- <command> — pass/fail
|
|
175
|
+
|
|
176
|
+
### Deferred (needs user decision)
|
|
177
|
+
- <finding> — why not fixed
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Safety
|
|
181
|
+
|
|
182
|
+
- Do not commit or push unless the user asks.
|
|
183
|
+
- Do not use `--force` git commands.
|
|
184
|
+
- Do not run `react-doctor` network-sharing flows that the user declined; `--no-score` avoids score/share API usage.
|
|
185
|
+
- Stop and ask if a “fix” requires deleting substantial features, changing product behavior, or broad API breakage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-service.d.ts","sourceRoot":"","sources":["../../src/services/install-service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EAER,YAAY,EACb,MAAM,mBAAmB,CAAC;AAqB3B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA8BjF;AAiDD,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,YAAY,EAAE,EAC1B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,aAAa,EAAE,CAAC,CAgF1B;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmD1B;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,YAAY,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"install-service.d.ts","sourceRoot":"","sources":["../../src/services/install-service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EAER,YAAY,EACb,MAAM,mBAAmB,CAAC;AAqB3B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CA8BjF;AAiDD,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,YAAY,EAAE,EAC1B,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,aAAa,EAAE,CAAC,CAgF1B;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmD1B;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC,YAAY,EAAE,CAAC,CAoBzB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,OAAO,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB,CAAC,CAcD;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACpF,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,YAAY,CAChC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACpF,OAAO,CAAC,aAAa,EAAE,CAAC,CA6C1B"}
|
|
@@ -197,8 +197,7 @@ export async function addFromRegistry(repository, options) {
|
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
export async function searchRegistry(query, repository, options = {}) {
|
|
200
|
-
const
|
|
201
|
-
const source = resolveNoahRegistry(repository ?? metadata?.registry);
|
|
200
|
+
const source = resolveNoahRegistry(repository);
|
|
202
201
|
const registry = await loadRegistry(source, options);
|
|
203
202
|
try {
|
|
204
203
|
const needle = query.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-service.js","sourceRoot":"","sources":["../../src/services/install-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install-service.js","sourceRoot":"","sources":["../../src/services/install-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED