rebar-mcp 2.4.2 → 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 +247 -33
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/cli.ts +286 -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,15 +1050,163 @@ 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
|
+
}
|
|
1125
|
+
async function cmdEnablePrereview(options) {
|
|
1126
|
+
const projectPath = resolveProjectPath(options.path);
|
|
1127
|
+
console.log("Enabling pre-review hooks...");
|
|
1128
|
+
// Create .rebar directory
|
|
1129
|
+
const rebarDir = path.join(projectPath, ".rebar");
|
|
1130
|
+
const decisionsDir = path.join(rebarDir, "decisions");
|
|
1131
|
+
await fs.mkdir(rebarDir, { recursive: true });
|
|
1132
|
+
await fs.mkdir(decisionsDir, { recursive: true });
|
|
1133
|
+
// Write prereview config
|
|
1134
|
+
const config = {
|
|
1135
|
+
enabled: true,
|
|
1136
|
+
tier: "free",
|
|
1137
|
+
strictness: options.strictness,
|
|
1138
|
+
operations: ["write", "edit", "bash"],
|
|
1139
|
+
customRules: [],
|
|
1140
|
+
auditEnabled: true,
|
|
1141
|
+
auditRetentionDays: 90,
|
|
1142
|
+
};
|
|
1143
|
+
const configPath = path.join(rebarDir, "prereview.json");
|
|
1144
|
+
await atomicWrite(configPath, JSON.stringify(config, null, 2));
|
|
1145
|
+
console.log("✓ Created .rebar/prereview.json");
|
|
1146
|
+
// Add hook to settings.json
|
|
1147
|
+
const claudeDir = path.join(projectPath, ".claude");
|
|
1148
|
+
const settingsPath = path.join(claudeDir, "settings.json");
|
|
1149
|
+
await fs.mkdir(claudeDir, { recursive: true });
|
|
1150
|
+
let settings = {};
|
|
1151
|
+
const existing = await readFileSafe(settingsPath);
|
|
1152
|
+
if (existing) {
|
|
1153
|
+
try {
|
|
1154
|
+
settings = JSON.parse(existing);
|
|
1155
|
+
}
|
|
1156
|
+
catch {
|
|
1157
|
+
// Start fresh
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
if (!settings.hooks)
|
|
1161
|
+
settings.hooks = {};
|
|
1162
|
+
const hooks = settings.hooks;
|
|
1163
|
+
if (!hooks.PreToolCall)
|
|
1164
|
+
hooks.PreToolCall = [];
|
|
1165
|
+
const preToolCallHooks = hooks.PreToolCall;
|
|
1166
|
+
// Check if prereview hook already exists
|
|
1167
|
+
const hasPrereviewHook = preToolCallHooks.some((h) => {
|
|
1168
|
+
const hooksArr = h.hooks;
|
|
1169
|
+
return hooksArr?.some((hook) => hook.command?.toString().includes("rebar prereview"));
|
|
1170
|
+
});
|
|
1171
|
+
if (!hasPrereviewHook) {
|
|
1172
|
+
preToolCallHooks.unshift({
|
|
1173
|
+
matcher: "Write|Edit|Bash",
|
|
1174
|
+
hooks: [
|
|
1175
|
+
{
|
|
1176
|
+
type: "command",
|
|
1177
|
+
command: "rebar prereview",
|
|
1178
|
+
},
|
|
1179
|
+
],
|
|
1180
|
+
});
|
|
1181
|
+
await atomicWrite(settingsPath, JSON.stringify(settings, null, 2));
|
|
1182
|
+
console.log("✓ Added prereview hook to .claude/settings.json");
|
|
1183
|
+
}
|
|
1184
|
+
else {
|
|
1185
|
+
console.log("✓ Prereview hook already exists in .claude/settings.json");
|
|
1186
|
+
}
|
|
1187
|
+
console.log();
|
|
1188
|
+
console.log("Pre-review is now enabled!");
|
|
1189
|
+
console.log("The following operations will be reviewed before execution:");
|
|
1190
|
+
console.log(" • Write - file creation/overwrite");
|
|
1191
|
+
console.log(" • Edit - file modifications");
|
|
1192
|
+
console.log(" • Bash - shell commands");
|
|
1193
|
+
console.log();
|
|
1194
|
+
console.log("Decisions are logged to .rebar/decisions/");
|
|
1195
|
+
return 0;
|
|
1196
|
+
}
|
|
989
1197
|
export async function runCLI(args) {
|
|
990
1198
|
const { command, options, positional } = parseArgs(args);
|
|
991
1199
|
switch (command) {
|
|
992
1200
|
case "init":
|
|
993
1201
|
return cmdInit(options);
|
|
1202
|
+
case "enable-prereview":
|
|
1203
|
+
return cmdEnablePrereview(options);
|
|
994
1204
|
case "doctor":
|
|
995
1205
|
return cmdDoctor(options);
|
|
996
1206
|
case "audit":
|
|
997
1207
|
return cmdAudit(options);
|
|
1208
|
+
case "why":
|
|
1209
|
+
return cmdWhy(options, positional[0] || "");
|
|
998
1210
|
case "set-strictness":
|
|
999
1211
|
if (positional.length === 0) {
|
|
1000
1212
|
console.error("Usage: rebar set-strictness <standard|strict|paranoid>");
|
|
@@ -1073,7 +1285,9 @@ export async function runCLI(args) {
|
|
|
1073
1285
|
|
|
1074
1286
|
Usage:
|
|
1075
1287
|
rebar init [options] Initialize Rebar enforcement in a project
|
|
1288
|
+
rebar enable-prereview Enable pre-review hooks (secret detection, etc.)
|
|
1076
1289
|
rebar audit [options] Run quality audit (exit 1 if below threshold)
|
|
1290
|
+
rebar why <category> Explain what's being scored and why
|
|
1077
1291
|
rebar doctor [options] Check Rebar setup health
|
|
1078
1292
|
rebar set-strictness <level> Change enforcement strictness
|
|
1079
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,166 @@ 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
|
+
|
|
1298
|
+
async function cmdEnablePrereview(options: CLIOptions): Promise<number> {
|
|
1299
|
+
const projectPath = resolveProjectPath(options.path);
|
|
1300
|
+
|
|
1301
|
+
console.log("Enabling pre-review hooks...");
|
|
1302
|
+
|
|
1303
|
+
// Create .rebar directory
|
|
1304
|
+
const rebarDir = path.join(projectPath, ".rebar");
|
|
1305
|
+
const decisionsDir = path.join(rebarDir, "decisions");
|
|
1306
|
+
await fs.mkdir(rebarDir, { recursive: true });
|
|
1307
|
+
await fs.mkdir(decisionsDir, { recursive: true });
|
|
1308
|
+
|
|
1309
|
+
// Write prereview config
|
|
1310
|
+
const config = {
|
|
1311
|
+
enabled: true,
|
|
1312
|
+
tier: "free",
|
|
1313
|
+
strictness: options.strictness,
|
|
1314
|
+
operations: ["write", "edit", "bash"],
|
|
1315
|
+
customRules: [],
|
|
1316
|
+
auditEnabled: true,
|
|
1317
|
+
auditRetentionDays: 90,
|
|
1318
|
+
};
|
|
1319
|
+
const configPath = path.join(rebarDir, "prereview.json");
|
|
1320
|
+
await atomicWrite(configPath, JSON.stringify(config, null, 2));
|
|
1321
|
+
console.log("✓ Created .rebar/prereview.json");
|
|
1322
|
+
|
|
1323
|
+
// Add hook to settings.json
|
|
1324
|
+
const claudeDir = path.join(projectPath, ".claude");
|
|
1325
|
+
const settingsPath = path.join(claudeDir, "settings.json");
|
|
1326
|
+
|
|
1327
|
+
await fs.mkdir(claudeDir, { recursive: true });
|
|
1328
|
+
|
|
1329
|
+
let settings: Record<string, unknown> = {};
|
|
1330
|
+
const existing = await readFileSafe(settingsPath);
|
|
1331
|
+
if (existing) {
|
|
1332
|
+
try {
|
|
1333
|
+
settings = JSON.parse(existing) as Record<string, unknown>;
|
|
1334
|
+
} catch {
|
|
1335
|
+
// Start fresh
|
|
1336
|
+
}
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
if (!settings.hooks) settings.hooks = {};
|
|
1340
|
+
const hooks = settings.hooks as Record<string, unknown[]>;
|
|
1341
|
+
if (!hooks.PreToolCall) hooks.PreToolCall = [];
|
|
1342
|
+
|
|
1343
|
+
const preToolCallHooks = hooks.PreToolCall as Array<Record<string, unknown>>;
|
|
1344
|
+
|
|
1345
|
+
// Check if prereview hook already exists
|
|
1346
|
+
const hasPrereviewHook = preToolCallHooks.some((h) => {
|
|
1347
|
+
const hooksArr = h.hooks as Array<Record<string, unknown>> | undefined;
|
|
1348
|
+
return hooksArr?.some((hook) => hook.command?.toString().includes("rebar prereview"));
|
|
1349
|
+
});
|
|
1350
|
+
|
|
1351
|
+
if (!hasPrereviewHook) {
|
|
1352
|
+
preToolCallHooks.unshift({
|
|
1353
|
+
matcher: "Write|Edit|Bash",
|
|
1354
|
+
hooks: [
|
|
1355
|
+
{
|
|
1356
|
+
type: "command",
|
|
1357
|
+
command: "rebar prereview",
|
|
1358
|
+
},
|
|
1359
|
+
],
|
|
1360
|
+
});
|
|
1361
|
+
await atomicWrite(settingsPath, JSON.stringify(settings, null, 2));
|
|
1362
|
+
console.log("✓ Added prereview hook to .claude/settings.json");
|
|
1363
|
+
} else {
|
|
1364
|
+
console.log("✓ Prereview hook already exists in .claude/settings.json");
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
console.log();
|
|
1368
|
+
console.log("Pre-review is now enabled!");
|
|
1369
|
+
console.log("The following operations will be reviewed before execution:");
|
|
1370
|
+
console.log(" • Write - file creation/overwrite");
|
|
1371
|
+
console.log(" • Edit - file modifications");
|
|
1372
|
+
console.log(" • Bash - shell commands");
|
|
1373
|
+
console.log();
|
|
1374
|
+
console.log("Decisions are logged to .rebar/decisions/");
|
|
1375
|
+
|
|
1376
|
+
return 0;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1132
1379
|
export async function runCLI(args: string[]): Promise<number> {
|
|
1133
1380
|
const { command, options, positional } = parseArgs(args);
|
|
1134
1381
|
|
|
@@ -1136,12 +1383,18 @@ export async function runCLI(args: string[]): Promise<number> {
|
|
|
1136
1383
|
case "init":
|
|
1137
1384
|
return cmdInit(options);
|
|
1138
1385
|
|
|
1386
|
+
case "enable-prereview":
|
|
1387
|
+
return cmdEnablePrereview(options);
|
|
1388
|
+
|
|
1139
1389
|
case "doctor":
|
|
1140
1390
|
return cmdDoctor(options);
|
|
1141
1391
|
|
|
1142
1392
|
case "audit":
|
|
1143
1393
|
return cmdAudit(options);
|
|
1144
1394
|
|
|
1395
|
+
case "why":
|
|
1396
|
+
return cmdWhy(options, positional[0] || "");
|
|
1397
|
+
|
|
1145
1398
|
case "set-strictness":
|
|
1146
1399
|
if (positional.length === 0) {
|
|
1147
1400
|
console.error("Usage: rebar set-strictness <standard|strict|paranoid>");
|
|
@@ -1228,7 +1481,9 @@ export async function runCLI(args: string[]): Promise<number> {
|
|
|
1228
1481
|
|
|
1229
1482
|
Usage:
|
|
1230
1483
|
rebar init [options] Initialize Rebar enforcement in a project
|
|
1484
|
+
rebar enable-prereview Enable pre-review hooks (secret detection, etc.)
|
|
1231
1485
|
rebar audit [options] Run quality audit (exit 1 if below threshold)
|
|
1486
|
+
rebar why <category> Explain what's being scored and why
|
|
1232
1487
|
rebar doctor [options] Check Rebar setup health
|
|
1233
1488
|
rebar set-strictness <level> Change enforcement strictness
|
|
1234
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({
|