rebar-mcp 2.4.3 → 2.4.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/.claude/skills/bmmyxz4opxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
- package/.claude/skills/bmmz02jzuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md +21 -0
- package/.claude/skills/bnd-mmyxz4ot/SKILL.md +21 -0
- package/.claude/skills/bnd-mmz02jzy/SKILL.md +21 -0
- package/.claude/skills/nl-mmyxz4p3/SKILL.md +25 -0
- package/.claude/skills/nl-mmz02k07/SKILL.md +25 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +172 -33
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/cli.ts +201 -31
- package/src/index.ts +1 -1
package/.claude/skills/bmmyxz4opxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bmmyxz4opxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
3
|
+
description: A test skill
|
|
4
|
+
invocation: undefined
|
|
5
|
+
context: undefined
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# bmmyxz4opxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
9
|
+
|
|
10
|
+
A test skill
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
<!-- Replace this with your skill instructions.
|
|
15
|
+
Good skill instructions:
|
|
16
|
+
1. Define the agent's role clearly
|
|
17
|
+
2. Specify the exact output format
|
|
18
|
+
3. List what to check/do step by step
|
|
19
|
+
4. Include examples of good output
|
|
20
|
+
-->
|
|
21
|
+
|
package/.claude/skills/bmmz02jzuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/SKILL.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bmmz02jzuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
3
|
+
description: A test skill
|
|
4
|
+
invocation: undefined
|
|
5
|
+
context: undefined
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# bmmz02jzuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
9
|
+
|
|
10
|
+
A test skill
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
<!-- Replace this with your skill instructions.
|
|
15
|
+
Good skill instructions:
|
|
16
|
+
1. Define the agent's role clearly
|
|
17
|
+
2. Specify the exact output format
|
|
18
|
+
3. List what to check/do step by step
|
|
19
|
+
4. Include examples of good output
|
|
20
|
+
-->
|
|
21
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bnd-mmyxz4ot
|
|
3
|
+
description: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
4
|
+
invocation: undefined
|
|
5
|
+
context: undefined
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# bnd-mmyxz4ot
|
|
9
|
+
|
|
10
|
+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
<!-- Replace this with your skill instructions.
|
|
15
|
+
Good skill instructions:
|
|
16
|
+
1. Define the agent's role clearly
|
|
17
|
+
2. Specify the exact output format
|
|
18
|
+
3. List what to check/do step by step
|
|
19
|
+
4. Include examples of good output
|
|
20
|
+
-->
|
|
21
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bnd-mmz02jzy
|
|
3
|
+
description: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
4
|
+
invocation: undefined
|
|
5
|
+
context: undefined
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# bnd-mmz02jzy
|
|
9
|
+
|
|
10
|
+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
11
|
+
|
|
12
|
+
## Instructions
|
|
13
|
+
|
|
14
|
+
<!-- Replace this with your skill instructions.
|
|
15
|
+
Good skill instructions:
|
|
16
|
+
1. Define the agent's role clearly
|
|
17
|
+
2. Specify the exact output format
|
|
18
|
+
3. List what to check/do step by step
|
|
19
|
+
4. Include examples of good output
|
|
20
|
+
-->
|
|
21
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nl-mmyxz4p3
|
|
3
|
+
description: Line one
|
|
4
|
+
Line two
|
|
5
|
+
Line three
|
|
6
|
+
invocation: undefined
|
|
7
|
+
context: undefined
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# nl-mmyxz4p3
|
|
11
|
+
|
|
12
|
+
Line one
|
|
13
|
+
Line two
|
|
14
|
+
Line three
|
|
15
|
+
|
|
16
|
+
## Instructions
|
|
17
|
+
|
|
18
|
+
<!-- Replace this with your skill instructions.
|
|
19
|
+
Good skill instructions:
|
|
20
|
+
1. Define the agent's role clearly
|
|
21
|
+
2. Specify the exact output format
|
|
22
|
+
3. List what to check/do step by step
|
|
23
|
+
4. Include examples of good output
|
|
24
|
+
-->
|
|
25
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nl-mmz02k07
|
|
3
|
+
description: Line one
|
|
4
|
+
Line two
|
|
5
|
+
Line three
|
|
6
|
+
invocation: undefined
|
|
7
|
+
context: undefined
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# nl-mmz02k07
|
|
11
|
+
|
|
12
|
+
Line one
|
|
13
|
+
Line two
|
|
14
|
+
Line three
|
|
15
|
+
|
|
16
|
+
## Instructions
|
|
17
|
+
|
|
18
|
+
<!-- Replace this with your skill instructions.
|
|
19
|
+
Good skill instructions:
|
|
20
|
+
1. Define the agent's role clearly
|
|
21
|
+
2. Specify the exact output format
|
|
22
|
+
3. List what to check/do step by step
|
|
23
|
+
4. Include examples of good output
|
|
24
|
+
-->
|
|
25
|
+
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAk2CA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6J5D"}
|
package/dist/cli.js
CHANGED
|
@@ -26,7 +26,7 @@ import { runHybridPrereview } from "./services/prereview-llm.js";
|
|
|
26
26
|
import { loadLicense, loadUsage, canUseLLMReview } from "./services/license.js";
|
|
27
27
|
import { loadMemory, clearMemory, learnFromHistory, exportMemorySummary, } from "./services/prereview-memory.js";
|
|
28
28
|
import { analyzeDecisionHistory, formatAnalyticsReport, exportAnalyticsJSON, generateBlockRateChart, } from "./services/prereview-analytics.js";
|
|
29
|
-
const VERSION = "2.4.
|
|
29
|
+
const VERSION = "2.4.4";
|
|
30
30
|
/**
|
|
31
31
|
* Read stdin if available (non-blocking check)
|
|
32
32
|
* Returns the parsed JSON if it's a valid hook input, null otherwise
|
|
@@ -333,58 +333,70 @@ async function cmdAudit(options) {
|
|
|
333
333
|
try {
|
|
334
334
|
// 1. CLAUDE.md quality (25 points)
|
|
335
335
|
const claudemd = await readFileSafe(path.join(projectPath, "CLAUDE.md"));
|
|
336
|
-
const claudemdResult = { category: "CLAUDE.md", score: 0, maxScore: 25, issues: [] };
|
|
336
|
+
const claudemdResult = { category: "CLAUDE.md", score: 0, maxScore: 25, issues: [], items: [] };
|
|
337
337
|
if (claudemd) {
|
|
338
|
-
claudemdResult.score += 10;
|
|
339
|
-
|
|
338
|
+
claudemdResult.score += 10;
|
|
339
|
+
claudemdResult.items.push({ name: "CLAUDE.md exists", points: 10, maxPoints: 10, earned: true });
|
|
340
|
+
const isValid = validateClaudeMD(claudemd, "CLAUDE.md").valid;
|
|
341
|
+
if (isValid)
|
|
340
342
|
claudemdResult.score += 5;
|
|
341
|
-
|
|
343
|
+
claudemdResult.items.push({ name: "Valid frontmatter", points: isValid ? 5 : 0, maxPoints: 5, earned: isValid });
|
|
344
|
+
const hasBuildTest = /##\s*(Build|Test)/i.test(claudemd);
|
|
345
|
+
if (hasBuildTest)
|
|
342
346
|
claudemdResult.score += 5;
|
|
343
|
-
|
|
347
|
+
claudemdResult.items.push({ name: "Build/Test section", points: hasBuildTest ? 5 : 0, maxPoints: 5, earned: hasBuildTest });
|
|
348
|
+
const hasArch = /##\s*(Architecture)/i.test(claudemd);
|
|
349
|
+
if (hasArch)
|
|
344
350
|
claudemdResult.score += 5;
|
|
351
|
+
claudemdResult.items.push({ name: "Architecture section", points: hasArch ? 5 : 0, maxPoints: 5, earned: hasArch });
|
|
345
352
|
}
|
|
346
353
|
else {
|
|
347
354
|
claudemdResult.issues.push("No CLAUDE.md found");
|
|
355
|
+
claudemdResult.items.push({ name: "CLAUDE.md exists", points: 0, maxPoints: 10, earned: false });
|
|
356
|
+
claudemdResult.items.push({ name: "Valid frontmatter", points: 0, maxPoints: 5, earned: false });
|
|
357
|
+
claudemdResult.items.push({ name: "Build/Test section", points: 0, maxPoints: 5, earned: false });
|
|
358
|
+
claudemdResult.items.push({ name: "Architecture section", points: 0, maxPoints: 5, earned: false });
|
|
348
359
|
}
|
|
349
360
|
results.push(claudemdResult);
|
|
350
361
|
// 2. Enforcement hooks (25 points)
|
|
351
362
|
const settings = await readFileSafe(path.join(projectPath, ".claude/settings.json"));
|
|
352
|
-
const hooksResult = { category: "Enforcement", score: 0, maxScore: 25, issues: [] };
|
|
363
|
+
const hooksResult = { category: "Enforcement", score: 0, maxScore: 25, issues: [], items: [] };
|
|
353
364
|
if (settings) {
|
|
354
365
|
const parsed = validateJSON(settings, "settings.json");
|
|
355
366
|
if (parsed.valid && parsed.parsed) {
|
|
356
367
|
const s = parsed.parsed;
|
|
357
368
|
const hooks = s.hooks;
|
|
358
369
|
if (hooks) {
|
|
359
|
-
hooksResult.score += 10;
|
|
370
|
+
hooksResult.score += 10;
|
|
371
|
+
hooksResult.items.push({ name: "Hooks configured", points: 10, maxPoints: 10, earned: true });
|
|
360
372
|
const profile = detectCurrentProfile(hooks);
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
hooksResult.score += 10;
|
|
365
|
-
if (profile === "paranoid")
|
|
366
|
-
hooksResult.score += 15;
|
|
367
|
-
if (hooks.PreToolCall || hooks.PostToolCall)
|
|
368
|
-
hooksResult.score += 0; // Already counted
|
|
373
|
+
const profilePoints = profile === "paranoid" ? 15 : profile === "strict" ? 10 : profile === "standard" ? 5 : 0;
|
|
374
|
+
hooksResult.score += profilePoints;
|
|
375
|
+
hooksResult.items.push({ name: `Profile: ${profile || "unknown"}`, points: profilePoints, maxPoints: 15, earned: profilePoints > 0 });
|
|
369
376
|
}
|
|
370
377
|
else {
|
|
371
378
|
hooksResult.issues.push("No hooks configured");
|
|
379
|
+
hooksResult.items.push({ name: "Hooks configured", points: 0, maxPoints: 10, earned: false });
|
|
380
|
+
hooksResult.items.push({ name: "Strictness profile", points: 0, maxPoints: 15, earned: false });
|
|
372
381
|
}
|
|
373
382
|
}
|
|
374
383
|
else {
|
|
375
384
|
hooksResult.issues.push("Invalid settings.json");
|
|
385
|
+
hooksResult.items.push({ name: "Valid settings.json", points: 0, maxPoints: 25, earned: false });
|
|
376
386
|
}
|
|
377
387
|
}
|
|
378
388
|
else {
|
|
379
389
|
hooksResult.issues.push("No settings.json found");
|
|
390
|
+
hooksResult.items.push({ name: "settings.json exists", points: 0, maxPoints: 25, earned: false });
|
|
380
391
|
}
|
|
381
392
|
results.push(hooksResult);
|
|
382
393
|
// 3. Skills quality (20 points)
|
|
383
394
|
const skillsDir = path.join(projectPath, ".claude/skills");
|
|
384
395
|
const skillFiles = await listFilesRecursive(skillsDir, ".md");
|
|
385
|
-
const skillsResult = { category: "Skills", score: 0, maxScore: 20, issues: [] };
|
|
396
|
+
const skillsResult = { category: "Skills", score: 0, maxScore: 20, issues: [], items: [] };
|
|
386
397
|
if (skillFiles.length > 0) {
|
|
387
398
|
skillsResult.score += 10;
|
|
399
|
+
skillsResult.items.push({ name: `${skillFiles.length} skill(s) present`, points: 10, maxPoints: 10, earned: true });
|
|
388
400
|
let validSkills = 0;
|
|
389
401
|
for (const sf of skillFiles) {
|
|
390
402
|
const content = await readFileSafe(sf);
|
|
@@ -392,19 +404,22 @@ async function cmdAudit(options) {
|
|
|
392
404
|
validSkills++;
|
|
393
405
|
}
|
|
394
406
|
}
|
|
395
|
-
|
|
407
|
+
const allValid = validSkills === skillFiles.length;
|
|
408
|
+
if (allValid)
|
|
396
409
|
skillsResult.score += 10;
|
|
397
|
-
}
|
|
398
|
-
|
|
410
|
+
skillsResult.items.push({ name: "All skills valid", points: allValid ? 10 : 0, maxPoints: 10, earned: allValid });
|
|
411
|
+
if (!allValid) {
|
|
399
412
|
skillsResult.issues.push(`${skillFiles.length - validSkills} skill(s) have invalid frontmatter`);
|
|
400
413
|
}
|
|
401
414
|
}
|
|
402
415
|
else {
|
|
403
416
|
skillsResult.score += 10; // Skills are optional, don't penalize heavily
|
|
417
|
+
skillsResult.items.push({ name: "Skills (optional)", points: 10, maxPoints: 10, earned: true });
|
|
418
|
+
skillsResult.items.push({ name: "Valid frontmatter", points: 0, maxPoints: 10, earned: false });
|
|
404
419
|
}
|
|
405
420
|
results.push(skillsResult);
|
|
406
421
|
// 4. Context budget (15 points)
|
|
407
|
-
const contextResult = { category: "Context Budget", score: 0, maxScore: 15, issues: [] };
|
|
422
|
+
const contextResult = { category: "Context Budget", score: 0, maxScore: 15, issues: [], items: [] };
|
|
408
423
|
let totalTokens = 0;
|
|
409
424
|
if (claudemd)
|
|
410
425
|
totalTokens += estimateTokens(claudemd);
|
|
@@ -416,34 +431,42 @@ async function cmdAudit(options) {
|
|
|
416
431
|
const budgetPercent = (totalTokens / CONTEXT_WINDOW_TOKENS) * 100;
|
|
417
432
|
if (budgetPercent <= 2) {
|
|
418
433
|
contextResult.score = 15;
|
|
434
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (excellent)`, points: 15, maxPoints: 15, earned: true });
|
|
419
435
|
}
|
|
420
436
|
else if (budgetPercent <= 5) {
|
|
421
437
|
contextResult.score = 10;
|
|
438
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (good)`, points: 10, maxPoints: 15, earned: true });
|
|
422
439
|
}
|
|
423
440
|
else if (budgetPercent <= 10) {
|
|
424
441
|
contextResult.score = 5;
|
|
442
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (high)`, points: 5, maxPoints: 15, earned: true });
|
|
425
443
|
contextResult.issues.push(`Config uses ${budgetPercent.toFixed(1)}% of context`);
|
|
426
444
|
}
|
|
427
445
|
else {
|
|
446
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (too high)`, points: 0, maxPoints: 15, earned: false });
|
|
428
447
|
contextResult.issues.push(`Config uses ${budgetPercent.toFixed(1)}% (too high)`);
|
|
429
448
|
}
|
|
430
449
|
results.push(contextResult);
|
|
431
450
|
// 5. Best practices (15 points)
|
|
432
|
-
const practicesResult = { category: "Best Practices", score: 0, maxScore: 15, issues: [] };
|
|
433
|
-
|
|
451
|
+
const practicesResult = { category: "Best Practices", score: 0, maxScore: 15, issues: [], items: [] };
|
|
452
|
+
const hasClaudeignore = await fileExists(path.join(projectPath, ".claudeignore"));
|
|
453
|
+
if (hasClaudeignore)
|
|
434
454
|
practicesResult.score += 5;
|
|
435
|
-
}
|
|
436
|
-
|
|
455
|
+
practicesResult.items.push({ name: ".claudeignore", points: hasClaudeignore ? 5 : 0, maxPoints: 5, earned: hasClaudeignore });
|
|
456
|
+
if (!hasClaudeignore)
|
|
437
457
|
practicesResult.issues.push("No .claudeignore");
|
|
438
|
-
|
|
458
|
+
let hasAgents = false;
|
|
439
459
|
if (await fileExists(path.join(projectPath, ".claude/agents"))) {
|
|
440
460
|
const agents = await listFiles(path.join(projectPath, ".claude/agents"), ".md");
|
|
441
|
-
|
|
461
|
+
hasAgents = agents.length > 0;
|
|
462
|
+
if (hasAgents)
|
|
442
463
|
practicesResult.score += 5;
|
|
443
464
|
}
|
|
444
|
-
|
|
465
|
+
practicesResult.items.push({ name: "Custom agents", points: hasAgents ? 5 : 0, maxPoints: 5, earned: hasAgents });
|
|
466
|
+
const hasDocs = await fileExists(path.join(projectPath, ".claude/docs"));
|
|
467
|
+
if (hasDocs)
|
|
445
468
|
practicesResult.score += 5;
|
|
446
|
-
}
|
|
469
|
+
practicesResult.items.push({ name: "Documentation (.claude/docs)", points: hasDocs ? 5 : 0, maxPoints: 5, earned: hasDocs });
|
|
447
470
|
results.push(practicesResult);
|
|
448
471
|
// Calculate total
|
|
449
472
|
const totalScore = results.reduce((sum, r) => sum + r.score, 0);
|
|
@@ -467,8 +490,11 @@ async function cmdAudit(options) {
|
|
|
467
490
|
const bar = "█".repeat(Math.round(r.score / r.maxScore * 10)) +
|
|
468
491
|
"░".repeat(10 - Math.round(r.score / r.maxScore * 10));
|
|
469
492
|
console.log(`${r.category.padEnd(16)} ${bar} ${r.score}/${r.maxScore}`);
|
|
470
|
-
|
|
471
|
-
|
|
493
|
+
// Show detailed breakdown
|
|
494
|
+
for (const item of r.items) {
|
|
495
|
+
const icon = item.earned ? "✓" : "✗";
|
|
496
|
+
const pointsStr = item.earned ? `+${item.points}` : `+0/${item.maxPoints}`;
|
|
497
|
+
console.log(` ${icon} ${item.name} (${pointsStr})`);
|
|
472
498
|
}
|
|
473
499
|
}
|
|
474
500
|
console.log();
|
|
@@ -519,8 +545,46 @@ async function cmdSetStrictness(options, level) {
|
|
|
519
545
|
// Start fresh
|
|
520
546
|
}
|
|
521
547
|
}
|
|
522
|
-
//
|
|
523
|
-
|
|
548
|
+
// Get existing hooks to preserve non-rebar ones
|
|
549
|
+
const existingHooks = existingSettings.hooks;
|
|
550
|
+
const newHooksFormat = hooksToSettingsFormat(hooks);
|
|
551
|
+
// Preserve hooks that aren't generated by rebar (e.g., prereview, custom hooks)
|
|
552
|
+
if (existingHooks) {
|
|
553
|
+
for (const [event, eventHooks] of Object.entries(existingHooks)) {
|
|
554
|
+
if (!Array.isArray(eventHooks))
|
|
555
|
+
continue;
|
|
556
|
+
for (const hookEntry of eventHooks) {
|
|
557
|
+
const h = hookEntry;
|
|
558
|
+
const hooksArr = h.hooks;
|
|
559
|
+
if (!hooksArr)
|
|
560
|
+
continue;
|
|
561
|
+
// Check if this is a non-rebar hook (prereview or custom)
|
|
562
|
+
const isPrereviewHook = hooksArr.some((hook) => hook.command?.toString().includes("rebar prereview"));
|
|
563
|
+
const isRebarGeneratedHook = hooksArr.some((hook) => {
|
|
564
|
+
const cmd = hook.command?.toString() || "";
|
|
565
|
+
return cmd.includes("LINT ERRORS") ||
|
|
566
|
+
cmd.includes("TESTS FAILED") ||
|
|
567
|
+
cmd.includes("npm run format") ||
|
|
568
|
+
cmd.includes("BLOCKED:") ||
|
|
569
|
+
cmd.includes("max 400") ||
|
|
570
|
+
cmd.includes("'any' type");
|
|
571
|
+
});
|
|
572
|
+
// Preserve prereview hooks and non-rebar hooks
|
|
573
|
+
if (isPrereviewHook || !isRebarGeneratedHook) {
|
|
574
|
+
if (!newHooksFormat[event])
|
|
575
|
+
newHooksFormat[event] = [];
|
|
576
|
+
// Add at beginning for prereview, end for others
|
|
577
|
+
if (isPrereviewHook) {
|
|
578
|
+
newHooksFormat[event].unshift(hookEntry);
|
|
579
|
+
}
|
|
580
|
+
else {
|
|
581
|
+
newHooksFormat[event].push(hookEntry);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
existingSettings.hooks = newHooksFormat;
|
|
524
588
|
// Ensure directory exists
|
|
525
589
|
await fs.mkdir(path.join(projectPath, ".claude"), { recursive: true });
|
|
526
590
|
// Write settings
|
|
@@ -986,6 +1050,78 @@ async function cmdBadge(options) {
|
|
|
986
1050
|
}
|
|
987
1051
|
return 0;
|
|
988
1052
|
}
|
|
1053
|
+
async function cmdWhy(_options, category) {
|
|
1054
|
+
const categories = {
|
|
1055
|
+
"claudemd": {
|
|
1056
|
+
title: "CLAUDE.md Quality (25 points)",
|
|
1057
|
+
description: "CLAUDE.md is your AI coding assistant's instruction manual. A well-structured file helps Claude understand your project's conventions, architecture, and constraints.",
|
|
1058
|
+
items: [
|
|
1059
|
+
{ name: "File exists", points: 10, explanation: "Having a CLAUDE.md file at all is the foundation. Without it, AI assistants have no project-specific context." },
|
|
1060
|
+
{ name: "Valid frontmatter", points: 5, explanation: "YAML frontmatter with metadata helps tools parse and validate the file structure." },
|
|
1061
|
+
{ name: "Build/Test section", points: 5, explanation: "Documenting how to build and test ensures AI can verify its changes work correctly." },
|
|
1062
|
+
{ name: "Architecture section", points: 5, explanation: "Architecture rules prevent AI from violating design patterns (e.g., 'no any types', 'prefer composition')." },
|
|
1063
|
+
],
|
|
1064
|
+
},
|
|
1065
|
+
"enforcement": {
|
|
1066
|
+
title: "Enforcement Hooks (25 points)",
|
|
1067
|
+
description: "Hooks intercept AI operations to enforce quality standards. They're your automated code review layer.",
|
|
1068
|
+
items: [
|
|
1069
|
+
{ name: "Hooks configured", points: 10, explanation: "Having any hooks shows you're actively enforcing quality, not just hoping for it." },
|
|
1070
|
+
{ name: "Profile: standard", points: 5, explanation: "Standard profile notifies on issues but doesn't block. Good for learning, not enforcement." },
|
|
1071
|
+
{ name: "Profile: strict", points: 10, explanation: "Strict profile blocks on lint/test failures. This prevents broken code from being written." },
|
|
1072
|
+
{ name: "Profile: paranoid", points: 15, explanation: "Paranoid blocks any types, large files, TODOs in commits. Maximum enforcement." },
|
|
1073
|
+
],
|
|
1074
|
+
},
|
|
1075
|
+
"skills": {
|
|
1076
|
+
title: "Skills Quality (20 points)",
|
|
1077
|
+
description: "Skills are reusable capabilities for Claude. Well-defined skills reduce hallucination and improve consistency.",
|
|
1078
|
+
items: [
|
|
1079
|
+
{ name: "Skills present", points: 10, explanation: "Having skills shows intentional capability design rather than ad-hoc prompting." },
|
|
1080
|
+
{ name: "Valid frontmatter", points: 10, explanation: "Skills need proper metadata (name, description, allowed tools) to work correctly." },
|
|
1081
|
+
],
|
|
1082
|
+
},
|
|
1083
|
+
"context": {
|
|
1084
|
+
title: "Context Budget (15 points)",
|
|
1085
|
+
description: "AI context windows are limited. Bloated configs waste tokens that could be used for actual work.",
|
|
1086
|
+
items: [
|
|
1087
|
+
{ name: "≤2% usage", points: 15, explanation: "Excellent! Your config is lean and leaves maximum context for code." },
|
|
1088
|
+
{ name: "≤5% usage", points: 10, explanation: "Good. Room for improvement but not impacting performance." },
|
|
1089
|
+
{ name: "≤10% usage", points: 5, explanation: "High. Consider trimming CLAUDE.md or reducing skill count." },
|
|
1090
|
+
{ name: ">10% usage", points: 0, explanation: "Too high. AI will have less context for your actual code." },
|
|
1091
|
+
],
|
|
1092
|
+
},
|
|
1093
|
+
"bestpractices": {
|
|
1094
|
+
title: "Best Practices (15 points)",
|
|
1095
|
+
description: "Industry-standard practices for AI-assisted development.",
|
|
1096
|
+
items: [
|
|
1097
|
+
{ name: ".claudeignore", points: 5, explanation: "Excludes irrelevant files (node_modules, .git) from AI context. Reduces noise and cost." },
|
|
1098
|
+
{ name: "Custom agents", points: 5, explanation: "Agents handle complex multi-step tasks. Shows mature AI workflow design." },
|
|
1099
|
+
{ name: "Documentation", points: 5, explanation: ".claude/docs/ provides reference material Claude can consult for project-specific knowledge." },
|
|
1100
|
+
],
|
|
1101
|
+
},
|
|
1102
|
+
};
|
|
1103
|
+
const key = category.toLowerCase().replace(/[_\s]/g, "-");
|
|
1104
|
+
const cat = categories[key] || categories[Object.keys(categories).find(k => k === key || k.replace(/-/g, "").includes(key.replace(/-/g, ""))) || ""];
|
|
1105
|
+
if (!cat) {
|
|
1106
|
+
console.log("Available categories:");
|
|
1107
|
+
for (const [name, info] of Object.entries(categories)) {
|
|
1108
|
+
console.log(` rebar why ${name.padEnd(15)} # ${info.title}`);
|
|
1109
|
+
}
|
|
1110
|
+
return 1;
|
|
1111
|
+
}
|
|
1112
|
+
console.log(cat.title);
|
|
1113
|
+
console.log("=".repeat(cat.title.length));
|
|
1114
|
+
console.log();
|
|
1115
|
+
console.log(cat.description);
|
|
1116
|
+
console.log();
|
|
1117
|
+
console.log("Scoring breakdown:");
|
|
1118
|
+
for (const item of cat.items) {
|
|
1119
|
+
console.log(`\n ${item.name} (+${item.points} points)`);
|
|
1120
|
+
console.log(` ${item.explanation}`);
|
|
1121
|
+
}
|
|
1122
|
+
console.log();
|
|
1123
|
+
return 0;
|
|
1124
|
+
}
|
|
989
1125
|
async function cmdEnablePrereview(options) {
|
|
990
1126
|
const projectPath = resolveProjectPath(options.path);
|
|
991
1127
|
console.log("Enabling pre-review hooks...");
|
|
@@ -1069,6 +1205,8 @@ export async function runCLI(args) {
|
|
|
1069
1205
|
return cmdDoctor(options);
|
|
1070
1206
|
case "audit":
|
|
1071
1207
|
return cmdAudit(options);
|
|
1208
|
+
case "why":
|
|
1209
|
+
return cmdWhy(options, positional[0] || "");
|
|
1072
1210
|
case "set-strictness":
|
|
1073
1211
|
if (positional.length === 0) {
|
|
1074
1212
|
console.error("Usage: rebar set-strictness <standard|strict|paranoid>");
|
|
@@ -1149,6 +1287,7 @@ Usage:
|
|
|
1149
1287
|
rebar init [options] Initialize Rebar enforcement in a project
|
|
1150
1288
|
rebar enable-prereview Enable pre-review hooks (secret detection, etc.)
|
|
1151
1289
|
rebar audit [options] Run quality audit (exit 1 if below threshold)
|
|
1290
|
+
rebar why <category> Explain what's being scored and why
|
|
1152
1291
|
rebar doctor [options] Check Rebar setup health
|
|
1153
1292
|
rebar set-strictness <level> Change enforcement strictness
|
|
1154
1293
|
rebar metrics [options] View quality score history
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,7 @@ import { registerManagementTools } from "./tools/management.js";
|
|
|
18
18
|
import { registerEnterpriseTools } from "./tools/enterprise.js";
|
|
19
19
|
import { registerPrereviewTools } from "./tools/prereview.js";
|
|
20
20
|
import { runCLI } from "./cli.js";
|
|
21
|
-
const VERSION = "2.4.
|
|
21
|
+
const VERSION = "2.4.4";
|
|
22
22
|
function createMCPServer() {
|
|
23
23
|
const server = new McpServer({
|
|
24
24
|
name: "rebar-mcp",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rebar-mcp",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.4",
|
|
4
4
|
"description": "Reinforcement for AI-generated code. Enforcement hooks, quality audits, and opinionated templates that prevent AI coding tools from shipping broken code.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/src/cli.ts
CHANGED
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
generateBlockRateChart,
|
|
50
50
|
} from "./services/prereview-analytics.js";
|
|
51
51
|
|
|
52
|
-
const VERSION = "2.4.
|
|
52
|
+
const VERSION = "2.4.4";
|
|
53
53
|
|
|
54
54
|
interface CLIOptions {
|
|
55
55
|
path: string;
|
|
@@ -391,11 +391,19 @@ async function cmdDoctor(options: CLIOptions): Promise<number> {
|
|
|
391
391
|
async function cmdAudit(options: CLIOptions): Promise<number> {
|
|
392
392
|
const projectPath = resolveProjectPath(options.path);
|
|
393
393
|
|
|
394
|
+
interface ScoreItem {
|
|
395
|
+
name: string;
|
|
396
|
+
points: number;
|
|
397
|
+
maxPoints: number;
|
|
398
|
+
earned: boolean;
|
|
399
|
+
}
|
|
400
|
+
|
|
394
401
|
interface AuditResult {
|
|
395
402
|
category: string;
|
|
396
403
|
score: number;
|
|
397
404
|
maxScore: number;
|
|
398
405
|
issues: string[];
|
|
406
|
+
items: ScoreItem[];
|
|
399
407
|
}
|
|
400
408
|
|
|
401
409
|
const results: AuditResult[] = [];
|
|
@@ -403,49 +411,70 @@ async function cmdAudit(options: CLIOptions): Promise<number> {
|
|
|
403
411
|
try {
|
|
404
412
|
// 1. CLAUDE.md quality (25 points)
|
|
405
413
|
const claudemd = await readFileSafe(path.join(projectPath, "CLAUDE.md"));
|
|
406
|
-
const claudemdResult: AuditResult = { category: "CLAUDE.md", score: 0, maxScore: 25, issues: [] };
|
|
414
|
+
const claudemdResult: AuditResult = { category: "CLAUDE.md", score: 0, maxScore: 25, issues: [], items: [] };
|
|
407
415
|
if (claudemd) {
|
|
408
|
-
claudemdResult.score += 10;
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
416
|
+
claudemdResult.score += 10;
|
|
417
|
+
claudemdResult.items.push({ name: "CLAUDE.md exists", points: 10, maxPoints: 10, earned: true });
|
|
418
|
+
|
|
419
|
+
const isValid = validateClaudeMD(claudemd, "CLAUDE.md").valid;
|
|
420
|
+
if (isValid) claudemdResult.score += 5;
|
|
421
|
+
claudemdResult.items.push({ name: "Valid frontmatter", points: isValid ? 5 : 0, maxPoints: 5, earned: isValid });
|
|
422
|
+
|
|
423
|
+
const hasBuildTest = /##\s*(Build|Test)/i.test(claudemd);
|
|
424
|
+
if (hasBuildTest) claudemdResult.score += 5;
|
|
425
|
+
claudemdResult.items.push({ name: "Build/Test section", points: hasBuildTest ? 5 : 0, maxPoints: 5, earned: hasBuildTest });
|
|
426
|
+
|
|
427
|
+
const hasArch = /##\s*(Architecture)/i.test(claudemd);
|
|
428
|
+
if (hasArch) claudemdResult.score += 5;
|
|
429
|
+
claudemdResult.items.push({ name: "Architecture section", points: hasArch ? 5 : 0, maxPoints: 5, earned: hasArch });
|
|
412
430
|
} else {
|
|
413
431
|
claudemdResult.issues.push("No CLAUDE.md found");
|
|
432
|
+
claudemdResult.items.push({ name: "CLAUDE.md exists", points: 0, maxPoints: 10, earned: false });
|
|
433
|
+
claudemdResult.items.push({ name: "Valid frontmatter", points: 0, maxPoints: 5, earned: false });
|
|
434
|
+
claudemdResult.items.push({ name: "Build/Test section", points: 0, maxPoints: 5, earned: false });
|
|
435
|
+
claudemdResult.items.push({ name: "Architecture section", points: 0, maxPoints: 5, earned: false });
|
|
414
436
|
}
|
|
415
437
|
results.push(claudemdResult);
|
|
416
438
|
|
|
417
439
|
// 2. Enforcement hooks (25 points)
|
|
418
440
|
const settings = await readFileSafe(path.join(projectPath, ".claude/settings.json"));
|
|
419
|
-
const hooksResult: AuditResult = { category: "Enforcement", score: 0, maxScore: 25, issues: [] };
|
|
441
|
+
const hooksResult: AuditResult = { category: "Enforcement", score: 0, maxScore: 25, issues: [], items: [] };
|
|
420
442
|
if (settings) {
|
|
421
443
|
const parsed = validateJSON(settings, "settings.json");
|
|
422
444
|
if (parsed.valid && parsed.parsed) {
|
|
423
445
|
const s = parsed.parsed as Record<string, unknown>;
|
|
424
446
|
const hooks = s.hooks as Record<string, unknown[]> | undefined;
|
|
425
447
|
if (hooks) {
|
|
426
|
-
hooksResult.score += 10;
|
|
448
|
+
hooksResult.score += 10;
|
|
449
|
+
hooksResult.items.push({ name: "Hooks configured", points: 10, maxPoints: 10, earned: true });
|
|
450
|
+
|
|
427
451
|
const profile = detectCurrentProfile(hooks);
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
if (hooks.PreToolCall || hooks.PostToolCall) hooksResult.score += 0; // Already counted
|
|
452
|
+
const profilePoints = profile === "paranoid" ? 15 : profile === "strict" ? 10 : profile === "standard" ? 5 : 0;
|
|
453
|
+
hooksResult.score += profilePoints;
|
|
454
|
+
hooksResult.items.push({ name: `Profile: ${profile || "unknown"}`, points: profilePoints, maxPoints: 15, earned: profilePoints > 0 });
|
|
432
455
|
} else {
|
|
433
456
|
hooksResult.issues.push("No hooks configured");
|
|
457
|
+
hooksResult.items.push({ name: "Hooks configured", points: 0, maxPoints: 10, earned: false });
|
|
458
|
+
hooksResult.items.push({ name: "Strictness profile", points: 0, maxPoints: 15, earned: false });
|
|
434
459
|
}
|
|
435
460
|
} else {
|
|
436
461
|
hooksResult.issues.push("Invalid settings.json");
|
|
462
|
+
hooksResult.items.push({ name: "Valid settings.json", points: 0, maxPoints: 25, earned: false });
|
|
437
463
|
}
|
|
438
464
|
} else {
|
|
439
465
|
hooksResult.issues.push("No settings.json found");
|
|
466
|
+
hooksResult.items.push({ name: "settings.json exists", points: 0, maxPoints: 25, earned: false });
|
|
440
467
|
}
|
|
441
468
|
results.push(hooksResult);
|
|
442
469
|
|
|
443
470
|
// 3. Skills quality (20 points)
|
|
444
471
|
const skillsDir = path.join(projectPath, ".claude/skills");
|
|
445
472
|
const skillFiles = await listFilesRecursive(skillsDir, ".md");
|
|
446
|
-
const skillsResult: AuditResult = { category: "Skills", score: 0, maxScore: 20, issues: [] };
|
|
473
|
+
const skillsResult: AuditResult = { category: "Skills", score: 0, maxScore: 20, issues: [], items: [] };
|
|
447
474
|
if (skillFiles.length > 0) {
|
|
448
475
|
skillsResult.score += 10;
|
|
476
|
+
skillsResult.items.push({ name: `${skillFiles.length} skill(s) present`, points: 10, maxPoints: 10, earned: true });
|
|
477
|
+
|
|
449
478
|
let validSkills = 0;
|
|
450
479
|
for (const sf of skillFiles) {
|
|
451
480
|
const content = await readFileSafe(sf);
|
|
@@ -453,18 +482,21 @@ async function cmdAudit(options: CLIOptions): Promise<number> {
|
|
|
453
482
|
validSkills++;
|
|
454
483
|
}
|
|
455
484
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
485
|
+
const allValid = validSkills === skillFiles.length;
|
|
486
|
+
if (allValid) skillsResult.score += 10;
|
|
487
|
+
skillsResult.items.push({ name: "All skills valid", points: allValid ? 10 : 0, maxPoints: 10, earned: allValid });
|
|
488
|
+
if (!allValid) {
|
|
459
489
|
skillsResult.issues.push(`${skillFiles.length - validSkills} skill(s) have invalid frontmatter`);
|
|
460
490
|
}
|
|
461
491
|
} else {
|
|
462
492
|
skillsResult.score += 10; // Skills are optional, don't penalize heavily
|
|
493
|
+
skillsResult.items.push({ name: "Skills (optional)", points: 10, maxPoints: 10, earned: true });
|
|
494
|
+
skillsResult.items.push({ name: "Valid frontmatter", points: 0, maxPoints: 10, earned: false });
|
|
463
495
|
}
|
|
464
496
|
results.push(skillsResult);
|
|
465
497
|
|
|
466
498
|
// 4. Context budget (15 points)
|
|
467
|
-
const contextResult: AuditResult = { category: "Context Budget", score: 0, maxScore: 15, issues: [] };
|
|
499
|
+
const contextResult: AuditResult = { category: "Context Budget", score: 0, maxScore: 15, issues: [], items: [] };
|
|
468
500
|
let totalTokens = 0;
|
|
469
501
|
if (claudemd) totalTokens += estimateTokens(claudemd);
|
|
470
502
|
for (const sf of skillFiles) {
|
|
@@ -474,30 +506,40 @@ async function cmdAudit(options: CLIOptions): Promise<number> {
|
|
|
474
506
|
const budgetPercent = (totalTokens / CONTEXT_WINDOW_TOKENS) * 100;
|
|
475
507
|
if (budgetPercent <= 2) {
|
|
476
508
|
contextResult.score = 15;
|
|
509
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (excellent)`, points: 15, maxPoints: 15, earned: true });
|
|
477
510
|
} else if (budgetPercent <= 5) {
|
|
478
511
|
contextResult.score = 10;
|
|
512
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (good)`, points: 10, maxPoints: 15, earned: true });
|
|
479
513
|
} else if (budgetPercent <= 10) {
|
|
480
514
|
contextResult.score = 5;
|
|
515
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (high)`, points: 5, maxPoints: 15, earned: true });
|
|
481
516
|
contextResult.issues.push(`Config uses ${budgetPercent.toFixed(1)}% of context`);
|
|
482
517
|
} else {
|
|
518
|
+
contextResult.items.push({ name: `Usage: ${budgetPercent.toFixed(1)}% (too high)`, points: 0, maxPoints: 15, earned: false });
|
|
483
519
|
contextResult.issues.push(`Config uses ${budgetPercent.toFixed(1)}% (too high)`);
|
|
484
520
|
}
|
|
485
521
|
results.push(contextResult);
|
|
486
522
|
|
|
487
523
|
// 5. Best practices (15 points)
|
|
488
|
-
const practicesResult: AuditResult = { category: "Best Practices", score: 0, maxScore: 15, issues: [] };
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
524
|
+
const practicesResult: AuditResult = { category: "Best Practices", score: 0, maxScore: 15, issues: [], items: [] };
|
|
525
|
+
|
|
526
|
+
const hasClaudeignore = await fileExists(path.join(projectPath, ".claudeignore"));
|
|
527
|
+
if (hasClaudeignore) practicesResult.score += 5;
|
|
528
|
+
practicesResult.items.push({ name: ".claudeignore", points: hasClaudeignore ? 5 : 0, maxPoints: 5, earned: hasClaudeignore });
|
|
529
|
+
if (!hasClaudeignore) practicesResult.issues.push("No .claudeignore");
|
|
530
|
+
|
|
531
|
+
let hasAgents = false;
|
|
494
532
|
if (await fileExists(path.join(projectPath, ".claude/agents"))) {
|
|
495
533
|
const agents = await listFiles(path.join(projectPath, ".claude/agents"), ".md");
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
if (await fileExists(path.join(projectPath, ".claude/docs"))) {
|
|
499
|
-
practicesResult.score += 5;
|
|
534
|
+
hasAgents = agents.length > 0;
|
|
535
|
+
if (hasAgents) practicesResult.score += 5;
|
|
500
536
|
}
|
|
537
|
+
practicesResult.items.push({ name: "Custom agents", points: hasAgents ? 5 : 0, maxPoints: 5, earned: hasAgents });
|
|
538
|
+
|
|
539
|
+
const hasDocs = await fileExists(path.join(projectPath, ".claude/docs"));
|
|
540
|
+
if (hasDocs) practicesResult.score += 5;
|
|
541
|
+
practicesResult.items.push({ name: "Documentation (.claude/docs)", points: hasDocs ? 5 : 0, maxPoints: 5, earned: hasDocs });
|
|
542
|
+
|
|
501
543
|
results.push(practicesResult);
|
|
502
544
|
|
|
503
545
|
// Calculate total
|
|
@@ -523,8 +565,12 @@ async function cmdAudit(options: CLIOptions): Promise<number> {
|
|
|
523
565
|
const bar = "█".repeat(Math.round(r.score / r.maxScore * 10)) +
|
|
524
566
|
"░".repeat(10 - Math.round(r.score / r.maxScore * 10));
|
|
525
567
|
console.log(`${r.category.padEnd(16)} ${bar} ${r.score}/${r.maxScore}`);
|
|
526
|
-
|
|
527
|
-
|
|
568
|
+
|
|
569
|
+
// Show detailed breakdown
|
|
570
|
+
for (const item of r.items) {
|
|
571
|
+
const icon = item.earned ? "✓" : "✗";
|
|
572
|
+
const pointsStr = item.earned ? `+${item.points}` : `+0/${item.maxPoints}`;
|
|
573
|
+
console.log(` ${icon} ${item.name} (${pointsStr})`);
|
|
528
574
|
}
|
|
529
575
|
}
|
|
530
576
|
|
|
@@ -581,8 +627,49 @@ async function cmdSetStrictness(options: CLIOptions, level: string): Promise<num
|
|
|
581
627
|
}
|
|
582
628
|
}
|
|
583
629
|
|
|
584
|
-
//
|
|
585
|
-
existingSettings.hooks
|
|
630
|
+
// Get existing hooks to preserve non-rebar ones
|
|
631
|
+
const existingHooks = existingSettings.hooks as Record<string, unknown[]> | undefined;
|
|
632
|
+
const newHooksFormat = hooksToSettingsFormat(hooks);
|
|
633
|
+
|
|
634
|
+
// Preserve hooks that aren't generated by rebar (e.g., prereview, custom hooks)
|
|
635
|
+
if (existingHooks) {
|
|
636
|
+
for (const [event, eventHooks] of Object.entries(existingHooks)) {
|
|
637
|
+
if (!Array.isArray(eventHooks)) continue;
|
|
638
|
+
|
|
639
|
+
for (const hookEntry of eventHooks) {
|
|
640
|
+
const h = hookEntry as Record<string, unknown>;
|
|
641
|
+
const hooksArr = h.hooks as Array<Record<string, unknown>> | undefined;
|
|
642
|
+
if (!hooksArr) continue;
|
|
643
|
+
|
|
644
|
+
// Check if this is a non-rebar hook (prereview or custom)
|
|
645
|
+
const isPrereviewHook = hooksArr.some((hook) =>
|
|
646
|
+
hook.command?.toString().includes("rebar prereview")
|
|
647
|
+
);
|
|
648
|
+
const isRebarGeneratedHook = hooksArr.some((hook) => {
|
|
649
|
+
const cmd = hook.command?.toString() || "";
|
|
650
|
+
return cmd.includes("LINT ERRORS") ||
|
|
651
|
+
cmd.includes("TESTS FAILED") ||
|
|
652
|
+
cmd.includes("npm run format") ||
|
|
653
|
+
cmd.includes("BLOCKED:") ||
|
|
654
|
+
cmd.includes("max 400") ||
|
|
655
|
+
cmd.includes("'any' type");
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
// Preserve prereview hooks and non-rebar hooks
|
|
659
|
+
if (isPrereviewHook || !isRebarGeneratedHook) {
|
|
660
|
+
if (!newHooksFormat[event]) newHooksFormat[event] = [];
|
|
661
|
+
// Add at beginning for prereview, end for others
|
|
662
|
+
if (isPrereviewHook) {
|
|
663
|
+
(newHooksFormat[event] as unknown[]).unshift(hookEntry);
|
|
664
|
+
} else {
|
|
665
|
+
(newHooksFormat[event] as unknown[]).push(hookEntry);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
existingSettings.hooks = newHooksFormat;
|
|
586
673
|
|
|
587
674
|
// Ensure directory exists
|
|
588
675
|
await fs.mkdir(path.join(projectPath, ".claude"), { recursive: true });
|
|
@@ -1129,6 +1216,85 @@ async function cmdBadge(options: CLIOptions): Promise<number> {
|
|
|
1129
1216
|
return 0;
|
|
1130
1217
|
}
|
|
1131
1218
|
|
|
1219
|
+
async function cmdWhy(_options: CLIOptions, category: string): Promise<number> {
|
|
1220
|
+
const categories: Record<string, { title: string; description: string; items: Array<{ name: string; points: number; explanation: string }> }> = {
|
|
1221
|
+
"claudemd": {
|
|
1222
|
+
title: "CLAUDE.md Quality (25 points)",
|
|
1223
|
+
description: "CLAUDE.md is your AI coding assistant's instruction manual. A well-structured file helps Claude understand your project's conventions, architecture, and constraints.",
|
|
1224
|
+
items: [
|
|
1225
|
+
{ name: "File exists", points: 10, explanation: "Having a CLAUDE.md file at all is the foundation. Without it, AI assistants have no project-specific context." },
|
|
1226
|
+
{ name: "Valid frontmatter", points: 5, explanation: "YAML frontmatter with metadata helps tools parse and validate the file structure." },
|
|
1227
|
+
{ name: "Build/Test section", points: 5, explanation: "Documenting how to build and test ensures AI can verify its changes work correctly." },
|
|
1228
|
+
{ name: "Architecture section", points: 5, explanation: "Architecture rules prevent AI from violating design patterns (e.g., 'no any types', 'prefer composition')." },
|
|
1229
|
+
],
|
|
1230
|
+
},
|
|
1231
|
+
"enforcement": {
|
|
1232
|
+
title: "Enforcement Hooks (25 points)",
|
|
1233
|
+
description: "Hooks intercept AI operations to enforce quality standards. They're your automated code review layer.",
|
|
1234
|
+
items: [
|
|
1235
|
+
{ name: "Hooks configured", points: 10, explanation: "Having any hooks shows you're actively enforcing quality, not just hoping for it." },
|
|
1236
|
+
{ name: "Profile: standard", points: 5, explanation: "Standard profile notifies on issues but doesn't block. Good for learning, not enforcement." },
|
|
1237
|
+
{ name: "Profile: strict", points: 10, explanation: "Strict profile blocks on lint/test failures. This prevents broken code from being written." },
|
|
1238
|
+
{ name: "Profile: paranoid", points: 15, explanation: "Paranoid blocks any types, large files, TODOs in commits. Maximum enforcement." },
|
|
1239
|
+
],
|
|
1240
|
+
},
|
|
1241
|
+
"skills": {
|
|
1242
|
+
title: "Skills Quality (20 points)",
|
|
1243
|
+
description: "Skills are reusable capabilities for Claude. Well-defined skills reduce hallucination and improve consistency.",
|
|
1244
|
+
items: [
|
|
1245
|
+
{ name: "Skills present", points: 10, explanation: "Having skills shows intentional capability design rather than ad-hoc prompting." },
|
|
1246
|
+
{ name: "Valid frontmatter", points: 10, explanation: "Skills need proper metadata (name, description, allowed tools) to work correctly." },
|
|
1247
|
+
],
|
|
1248
|
+
},
|
|
1249
|
+
"context": {
|
|
1250
|
+
title: "Context Budget (15 points)",
|
|
1251
|
+
description: "AI context windows are limited. Bloated configs waste tokens that could be used for actual work.",
|
|
1252
|
+
items: [
|
|
1253
|
+
{ name: "≤2% usage", points: 15, explanation: "Excellent! Your config is lean and leaves maximum context for code." },
|
|
1254
|
+
{ name: "≤5% usage", points: 10, explanation: "Good. Room for improvement but not impacting performance." },
|
|
1255
|
+
{ name: "≤10% usage", points: 5, explanation: "High. Consider trimming CLAUDE.md or reducing skill count." },
|
|
1256
|
+
{ name: ">10% usage", points: 0, explanation: "Too high. AI will have less context for your actual code." },
|
|
1257
|
+
],
|
|
1258
|
+
},
|
|
1259
|
+
"bestpractices": {
|
|
1260
|
+
title: "Best Practices (15 points)",
|
|
1261
|
+
description: "Industry-standard practices for AI-assisted development.",
|
|
1262
|
+
items: [
|
|
1263
|
+
{ name: ".claudeignore", points: 5, explanation: "Excludes irrelevant files (node_modules, .git) from AI context. Reduces noise and cost." },
|
|
1264
|
+
{ name: "Custom agents", points: 5, explanation: "Agents handle complex multi-step tasks. Shows mature AI workflow design." },
|
|
1265
|
+
{ name: "Documentation", points: 5, explanation: ".claude/docs/ provides reference material Claude can consult for project-specific knowledge." },
|
|
1266
|
+
],
|
|
1267
|
+
},
|
|
1268
|
+
};
|
|
1269
|
+
|
|
1270
|
+
const key = category.toLowerCase().replace(/[_\s]/g, "-");
|
|
1271
|
+
const cat = categories[key] || categories[Object.keys(categories).find(k =>
|
|
1272
|
+
k === key || k.replace(/-/g, "").includes(key.replace(/-/g, ""))
|
|
1273
|
+
) || ""];
|
|
1274
|
+
|
|
1275
|
+
if (!cat) {
|
|
1276
|
+
console.log("Available categories:");
|
|
1277
|
+
for (const [name, info] of Object.entries(categories)) {
|
|
1278
|
+
console.log(` rebar why ${name.padEnd(15)} # ${info.title}`);
|
|
1279
|
+
}
|
|
1280
|
+
return 1;
|
|
1281
|
+
}
|
|
1282
|
+
|
|
1283
|
+
console.log(cat.title);
|
|
1284
|
+
console.log("=".repeat(cat.title.length));
|
|
1285
|
+
console.log();
|
|
1286
|
+
console.log(cat.description);
|
|
1287
|
+
console.log();
|
|
1288
|
+
console.log("Scoring breakdown:");
|
|
1289
|
+
for (const item of cat.items) {
|
|
1290
|
+
console.log(`\n ${item.name} (+${item.points} points)`);
|
|
1291
|
+
console.log(` ${item.explanation}`);
|
|
1292
|
+
}
|
|
1293
|
+
console.log();
|
|
1294
|
+
|
|
1295
|
+
return 0;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1132
1298
|
async function cmdEnablePrereview(options: CLIOptions): Promise<number> {
|
|
1133
1299
|
const projectPath = resolveProjectPath(options.path);
|
|
1134
1300
|
|
|
@@ -1226,6 +1392,9 @@ export async function runCLI(args: string[]): Promise<number> {
|
|
|
1226
1392
|
case "audit":
|
|
1227
1393
|
return cmdAudit(options);
|
|
1228
1394
|
|
|
1395
|
+
case "why":
|
|
1396
|
+
return cmdWhy(options, positional[0] || "");
|
|
1397
|
+
|
|
1229
1398
|
case "set-strictness":
|
|
1230
1399
|
if (positional.length === 0) {
|
|
1231
1400
|
console.error("Usage: rebar set-strictness <standard|strict|paranoid>");
|
|
@@ -1314,6 +1483,7 @@ Usage:
|
|
|
1314
1483
|
rebar init [options] Initialize Rebar enforcement in a project
|
|
1315
1484
|
rebar enable-prereview Enable pre-review hooks (secret detection, etc.)
|
|
1316
1485
|
rebar audit [options] Run quality audit (exit 1 if below threshold)
|
|
1486
|
+
rebar why <category> Explain what's being scored and why
|
|
1317
1487
|
rebar doctor [options] Check Rebar setup health
|
|
1318
1488
|
rebar set-strictness <level> Change enforcement strictness
|
|
1319
1489
|
rebar metrics [options] View quality score history
|
package/src/index.ts
CHANGED
|
@@ -19,7 +19,7 @@ import { registerEnterpriseTools } from "./tools/enterprise.js";
|
|
|
19
19
|
import { registerPrereviewTools } from "./tools/prereview.js";
|
|
20
20
|
import { runCLI } from "./cli.js";
|
|
21
21
|
|
|
22
|
-
const VERSION = "2.4.
|
|
22
|
+
const VERSION = "2.4.4";
|
|
23
23
|
|
|
24
24
|
function createMCPServer(): McpServer {
|
|
25
25
|
const server = new McpServer({
|