@planu/cli 0.33.1 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/claude-best-practices.json +15 -0
- package/dist/config/license-plans.json +2 -1
- package/dist/engine/claude-config-auditor/claudemd-auditor.d.ts +3 -0
- package/dist/engine/claude-config-auditor/claudemd-auditor.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/claudemd-auditor.js +133 -0
- package/dist/engine/claude-config-auditor/claudemd-auditor.js.map +1 -0
- package/dist/engine/claude-config-auditor/index.d.ts +6 -0
- package/dist/engine/claude-config-auditor/index.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/index.js +7 -0
- package/dist/engine/claude-config-auditor/index.js.map +1 -0
- package/dist/engine/claude-config-auditor/memory-auditor.d.ts +3 -0
- package/dist/engine/claude-config-auditor/memory-auditor.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/memory-auditor.js +62 -0
- package/dist/engine/claude-config-auditor/memory-auditor.js.map +1 -0
- package/dist/engine/claude-config-auditor/rules-auditor.d.ts +3 -0
- package/dist/engine/claude-config-auditor/rules-auditor.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/rules-auditor.js +72 -0
- package/dist/engine/claude-config-auditor/rules-auditor.js.map +1 -0
- package/dist/engine/claude-config-auditor/scoring.d.ts +7 -0
- package/dist/engine/claude-config-auditor/scoring.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/scoring.js +43 -0
- package/dist/engine/claude-config-auditor/scoring.js.map +1 -0
- package/dist/engine/claude-config-auditor/settings-auditor.d.ts +3 -0
- package/dist/engine/claude-config-auditor/settings-auditor.d.ts.map +1 -0
- package/dist/engine/claude-config-auditor/settings-auditor.js +88 -0
- package/dist/engine/claude-config-auditor/settings-auditor.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/process.js +1 -1
- package/dist/tools/audit-claude-config.d.ts +3 -0
- package/dist/tools/audit-claude-config.d.ts.map +1 -0
- package/dist/tools/audit-claude-config.js +34 -0
- package/dist/tools/audit-claude-config.js.map +1 -0
- package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
- package/dist/tools/create-spec/spec-builder.js +48 -2
- package/dist/tools/create-spec/spec-builder.js.map +1 -1
- package/dist/tools/register-workspace-tools.d.ts +3 -0
- package/dist/tools/register-workspace-tools.d.ts.map +1 -0
- package/dist/tools/register-workspace-tools.js +19 -0
- package/dist/tools/register-workspace-tools.js.map +1 -0
- package/dist/types/analysis.d.ts +27 -0
- package/dist/types/analysis.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/claude-best-practices.json +15 -0
- package/src/config/license-plans.json +2 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"claudeMdMaxLines": 200,
|
|
3
|
+
"claudeMdCriticalLines": 400,
|
|
4
|
+
"memoryMdMaxLines": 200,
|
|
5
|
+
"docsBaseUrl": "https://code.claude.com/docs/en/memory",
|
|
6
|
+
"recommendations": {
|
|
7
|
+
"useRules": "Split large CLAUDE.md into .claude/rules/ files with paths frontmatter",
|
|
8
|
+
"useLocalMd": "Use CLAUDE.local.md for personal project-specific preferences not in git",
|
|
9
|
+
"useImports": "Use @path syntax in CLAUDE.md to import README.md, package.json",
|
|
10
|
+
"usePathFrontmatter": "Add paths: frontmatter to rules so they only load for matching files",
|
|
11
|
+
"keepMemoryConcise": "Keep MEMORY.md under 200 lines — only first 200 are loaded per session",
|
|
12
|
+
"useTopicFiles": "Move detailed notes to topic files (debugging.md, patterns.md) referenced from MEMORY.md",
|
|
13
|
+
"cleanSettings": "Remove obsolete MCP server permissions from settings files"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudemd-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/claudemd-auditor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2E1D,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAkE1B"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// Planu — CLAUDE.md auditor for SPEC-092
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const DOCS_REF = 'https://code.claude.com/docs/en/memory';
|
|
6
|
+
const MAX_LINES = 200;
|
|
7
|
+
const CRITICAL_LINES = 400;
|
|
8
|
+
const SECTION_THRESHOLD = 20;
|
|
9
|
+
async function readFileLines(filePath) {
|
|
10
|
+
try {
|
|
11
|
+
const content = await readFile(filePath, 'utf-8');
|
|
12
|
+
return content.split('\n');
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function auditSingleClaudeMd(lines, label) {
|
|
19
|
+
const findings = [];
|
|
20
|
+
const lineCount = lines.length;
|
|
21
|
+
if (lineCount > CRITICAL_LINES) {
|
|
22
|
+
findings.push({
|
|
23
|
+
area: 'CLAUDE.md',
|
|
24
|
+
severity: 'critical',
|
|
25
|
+
message: `${label} has ${String(lineCount)} lines (limit: ${String(CRITICAL_LINES)})`,
|
|
26
|
+
suggestion: 'Split into .claude/rules/ files with paths: frontmatter for scoped loading',
|
|
27
|
+
docsRef: DOCS_REF,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else if (lineCount > MAX_LINES) {
|
|
31
|
+
findings.push({
|
|
32
|
+
area: 'CLAUDE.md',
|
|
33
|
+
severity: 'warn',
|
|
34
|
+
message: `${label} has ${String(lineCount)} lines (recommended: <${String(MAX_LINES)})`,
|
|
35
|
+
suggestion: 'Move detailed sections to .claude/rules/ files to reduce context overhead',
|
|
36
|
+
docsRef: DOCS_REF,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// Detect large sections that could be extracted to rules
|
|
40
|
+
let currentSectionStart = -1;
|
|
41
|
+
let currentSectionLines = 0;
|
|
42
|
+
for (let i = 0; i < lines.length; i++) {
|
|
43
|
+
const line = lines[i];
|
|
44
|
+
if (line?.startsWith('## ')) {
|
|
45
|
+
if (currentSectionLines > SECTION_THRESHOLD && currentSectionStart >= 0) {
|
|
46
|
+
const sectionName = lines[currentSectionStart]?.replace('## ', '') ?? 'unknown';
|
|
47
|
+
findings.push({
|
|
48
|
+
area: 'CLAUDE.md',
|
|
49
|
+
severity: 'info',
|
|
50
|
+
message: `Section "${sectionName}" is ${String(currentSectionLines)} lines — could be a rule file`,
|
|
51
|
+
suggestion: `Move to .claude/rules/${sectionName.toLowerCase().replace(/\s+/g, '-')}.md`,
|
|
52
|
+
docsRef: DOCS_REF,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
currentSectionStart = i;
|
|
56
|
+
currentSectionLines = 0;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
currentSectionLines++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Check last section
|
|
63
|
+
if (currentSectionLines > SECTION_THRESHOLD && currentSectionStart >= 0) {
|
|
64
|
+
const sectionName = lines[currentSectionStart]?.replace('## ', '') ?? 'unknown';
|
|
65
|
+
findings.push({
|
|
66
|
+
area: 'CLAUDE.md',
|
|
67
|
+
severity: 'info',
|
|
68
|
+
message: `Section "${sectionName}" is ${String(currentSectionLines)} lines — could be a rule file`,
|
|
69
|
+
suggestion: `Move to .claude/rules/${sectionName.toLowerCase().replace(/\s+/g, '-')}.md`,
|
|
70
|
+
docsRef: DOCS_REF,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return findings;
|
|
74
|
+
}
|
|
75
|
+
export async function auditClaudeMd(projectPath, includeGlobal) {
|
|
76
|
+
const findings = [];
|
|
77
|
+
// Check project-level CLAUDE.md locations
|
|
78
|
+
const projectPaths = [join(projectPath, 'CLAUDE.md'), join(projectPath, '.claude', 'CLAUDE.md')];
|
|
79
|
+
let foundProject = false;
|
|
80
|
+
for (const p of projectPaths) {
|
|
81
|
+
const lines = await readFileLines(p);
|
|
82
|
+
if (lines) {
|
|
83
|
+
foundProject = true;
|
|
84
|
+
findings.push(...auditSingleClaudeMd(lines, `Project CLAUDE.md (${p})`));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (!foundProject) {
|
|
88
|
+
findings.push({
|
|
89
|
+
area: 'CLAUDE.md',
|
|
90
|
+
severity: 'warn',
|
|
91
|
+
message: 'No CLAUDE.md found in project root or .claude/ directory',
|
|
92
|
+
suggestion: 'Create a CLAUDE.md with project conventions, commands, and architecture overview',
|
|
93
|
+
docsRef: DOCS_REF,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// Check for CLAUDE.local.md
|
|
97
|
+
const localMdLines = await readFileLines(join(projectPath, 'CLAUDE.local.md'));
|
|
98
|
+
if (!localMdLines) {
|
|
99
|
+
findings.push({
|
|
100
|
+
area: 'CLAUDE.md',
|
|
101
|
+
severity: 'info',
|
|
102
|
+
message: 'No CLAUDE.local.md found — personal preferences go here (gitignored)',
|
|
103
|
+
suggestion: 'Create CLAUDE.local.md for personal project-specific preferences not tracked in git',
|
|
104
|
+
docsRef: DOCS_REF,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// Check for @import syntax
|
|
108
|
+
for (const p of projectPaths) {
|
|
109
|
+
const lines = await readFileLines(p);
|
|
110
|
+
if (lines) {
|
|
111
|
+
const hasImports = lines.some((l) => l.startsWith('@'));
|
|
112
|
+
if (!hasImports) {
|
|
113
|
+
findings.push({
|
|
114
|
+
area: 'CLAUDE.md',
|
|
115
|
+
severity: 'info',
|
|
116
|
+
message: 'CLAUDE.md does not use @path imports (e.g. @README.md, @package.json)',
|
|
117
|
+
suggestion: 'Use @path syntax to import key files so Claude always has fresh context',
|
|
118
|
+
docsRef: DOCS_REF,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Global CLAUDE.md
|
|
124
|
+
if (includeGlobal) {
|
|
125
|
+
const globalPath = join(homedir(), '.claude', 'CLAUDE.md');
|
|
126
|
+
const globalLines = await readFileLines(globalPath);
|
|
127
|
+
if (globalLines) {
|
|
128
|
+
findings.push(...auditSingleClaudeMd(globalLines, 'Global ~/.claude/CLAUDE.md'));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return findings;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=claudemd-auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudemd-auditor.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/claudemd-auditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { auditClaudeMd } from './claudemd-auditor.js';
|
|
2
|
+
export { auditRules } from './rules-auditor.js';
|
|
3
|
+
export { auditMemory } from './memory-auditor.js';
|
|
4
|
+
export { auditSettings } from './settings-auditor.js';
|
|
5
|
+
export { calculateScore, pickQuickWins } from './scoring.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Planu — Claude Config Auditor (barrel export)
|
|
2
|
+
export { auditClaudeMd } from './claudemd-auditor.js';
|
|
3
|
+
export { auditRules } from './rules-auditor.js';
|
|
4
|
+
export { auditMemory } from './memory-auditor.js';
|
|
5
|
+
export { auditSettings } from './settings-auditor.js';
|
|
6
|
+
export { calculateScore, pickQuickWins } from './scoring.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/memory-auditor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAmB1D,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA+C/E"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Planu — Memory directory auditor for SPEC-092
|
|
2
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const DOCS_REF = 'https://code.claude.com/docs/en/memory#auto-memory';
|
|
6
|
+
const MAX_MEMORY_LINES = 200;
|
|
7
|
+
function deriveMemoryPath(projectPath) {
|
|
8
|
+
const derived = `-${projectPath.replace(/\//g, '-')}`;
|
|
9
|
+
return join(homedir(), '.claude', 'projects', derived, 'memory');
|
|
10
|
+
}
|
|
11
|
+
async function readMemoryLines(memoryDir) {
|
|
12
|
+
try {
|
|
13
|
+
const content = await readFile(join(memoryDir, 'MEMORY.md'), 'utf-8');
|
|
14
|
+
return content.split('\n');
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function auditMemory(projectPath) {
|
|
21
|
+
const findings = [];
|
|
22
|
+
const memoryDir = deriveMemoryPath(projectPath);
|
|
23
|
+
const memoryLines = await readMemoryLines(memoryDir);
|
|
24
|
+
if (!memoryLines) {
|
|
25
|
+
findings.push({
|
|
26
|
+
area: 'memory',
|
|
27
|
+
severity: 'info',
|
|
28
|
+
message: 'No MEMORY.md found — auto-memory may be disabled or no memories saved yet',
|
|
29
|
+
suggestion: 'Enable auto-memory in settings or manually create MEMORY.md for cross-session context',
|
|
30
|
+
docsRef: DOCS_REF,
|
|
31
|
+
});
|
|
32
|
+
return findings;
|
|
33
|
+
}
|
|
34
|
+
if (memoryLines.length > MAX_MEMORY_LINES) {
|
|
35
|
+
findings.push({
|
|
36
|
+
area: 'memory',
|
|
37
|
+
severity: 'warn',
|
|
38
|
+
message: `MEMORY.md has ${String(memoryLines.length)} lines — only first ${String(MAX_MEMORY_LINES)} are loaded per session`,
|
|
39
|
+
suggestion: 'Move detailed notes to topic files (debugging.md, patterns.md) and keep MEMORY.md as an index',
|
|
40
|
+
docsRef: DOCS_REF,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// Check for topic files (good practice)
|
|
44
|
+
try {
|
|
45
|
+
const entries = await readdir(memoryDir);
|
|
46
|
+
const topicFiles = entries.filter((f) => f.endsWith('.md') && f !== 'MEMORY.md');
|
|
47
|
+
if (topicFiles.length === 0 && memoryLines.length > 50) {
|
|
48
|
+
findings.push({
|
|
49
|
+
area: 'memory',
|
|
50
|
+
severity: 'info',
|
|
51
|
+
message: 'No topic files found alongside MEMORY.md',
|
|
52
|
+
suggestion: 'Create topic files (e.g., debugging.md, patterns.md) for detailed notes, linked from MEMORY.md',
|
|
53
|
+
docsRef: DOCS_REF,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Memory dir unreadable — already reported above
|
|
59
|
+
}
|
|
60
|
+
return findings;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=memory-auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-auditor.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/memory-auditor.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,QAAQ,GAAG,oDAAoD,CAAC;AACtE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACtD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,2EAA2E;YACpF,UAAU,EACR,uFAAuF;YACzF,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,iBAAiB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,MAAM,CAAC,gBAAgB,CAAC,yBAAyB;YAC5H,UAAU,EACR,+FAA+F;YACjG,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,CAAC;QACjF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,0CAA0C;gBACnD,UAAU,EACR,gGAAgG;gBAClG,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/rules-auditor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoE1D,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Planu — .claude/rules/ auditor for SPEC-092
|
|
2
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const DOCS_REF = 'https://code.claude.com/docs/en/memory#rules';
|
|
6
|
+
async function auditRulesDir(rulesPath, label) {
|
|
7
|
+
const findings = [];
|
|
8
|
+
let files;
|
|
9
|
+
try {
|
|
10
|
+
const entries = await readdir(rulesPath);
|
|
11
|
+
files = entries.filter((f) => f.endsWith('.md'));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
findings.push({
|
|
15
|
+
area: 'rules',
|
|
16
|
+
severity: 'info',
|
|
17
|
+
message: `${label} directory does not exist`,
|
|
18
|
+
suggestion: 'Create .claude/rules/ with scoped rule files to keep CLAUDE.md lean',
|
|
19
|
+
docsRef: DOCS_REF,
|
|
20
|
+
});
|
|
21
|
+
return findings;
|
|
22
|
+
}
|
|
23
|
+
if (files.length === 0) {
|
|
24
|
+
findings.push({
|
|
25
|
+
area: 'rules',
|
|
26
|
+
severity: 'info',
|
|
27
|
+
message: `${label} directory exists but has no .md files`,
|
|
28
|
+
suggestion: 'Add rule files with paths: frontmatter for context-aware loading',
|
|
29
|
+
docsRef: DOCS_REF,
|
|
30
|
+
});
|
|
31
|
+
return findings;
|
|
32
|
+
}
|
|
33
|
+
for (const file of files) {
|
|
34
|
+
try {
|
|
35
|
+
const content = await readFile(join(rulesPath, file), 'utf-8');
|
|
36
|
+
const firstLines = content.split('\n').slice(0, 5).join('\n');
|
|
37
|
+
const hasPaths = /^paths:/m.test(firstLines) || /^---[\s\S]*?paths:/m.test(firstLines);
|
|
38
|
+
if (!hasPaths) {
|
|
39
|
+
// Check if file has TypeScript/test-specific content that should be scoped
|
|
40
|
+
const lowerContent = content.toLowerCase();
|
|
41
|
+
const isScoped = lowerContent.includes('typescript') ||
|
|
42
|
+
lowerContent.includes('.test.') ||
|
|
43
|
+
lowerContent.includes('vitest') ||
|
|
44
|
+
lowerContent.includes('jest') ||
|
|
45
|
+
lowerContent.includes('.tsx') ||
|
|
46
|
+
lowerContent.includes('.jsx');
|
|
47
|
+
if (isScoped) {
|
|
48
|
+
findings.push({
|
|
49
|
+
area: 'rules',
|
|
50
|
+
severity: 'warn',
|
|
51
|
+
message: `Rule "${file}" has language/test-specific content but no paths: frontmatter`,
|
|
52
|
+
suggestion: `Add "paths: src/**/*.ts" or similar frontmatter so it only loads for matching files`,
|
|
53
|
+
docsRef: DOCS_REF,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Skip unreadable files
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return findings;
|
|
63
|
+
}
|
|
64
|
+
export async function auditRules(projectPath, includeGlobal) {
|
|
65
|
+
const findings = [];
|
|
66
|
+
findings.push(...(await auditRulesDir(join(projectPath, '.claude', 'rules'), 'Project .claude/rules/')));
|
|
67
|
+
if (includeGlobal) {
|
|
68
|
+
findings.push(...(await auditRulesDir(join(homedir(), '.claude', 'rules'), 'Global ~/.claude/rules/')));
|
|
69
|
+
}
|
|
70
|
+
return findings;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=rules-auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-auditor.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/rules-auditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ConfigFinding } from '../../types/index.js';
|
|
2
|
+
export declare function calculateScore(findings: ConfigFinding[]): {
|
|
3
|
+
score: number;
|
|
4
|
+
grade: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function pickQuickWins(findings: ConfigFinding[]): ConfigFinding[];
|
|
7
|
+
//# sourceMappingURL=scoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/scoring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAuB1F;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAexE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const SEVERITY_PENALTY = {
|
|
2
|
+
critical: 15,
|
|
3
|
+
warn: 8,
|
|
4
|
+
info: 2,
|
|
5
|
+
};
|
|
6
|
+
export function calculateScore(findings) {
|
|
7
|
+
let score = 100;
|
|
8
|
+
for (const f of findings) {
|
|
9
|
+
score -= SEVERITY_PENALTY[f.severity] ?? 0;
|
|
10
|
+
}
|
|
11
|
+
score = Math.max(0, score);
|
|
12
|
+
let grade;
|
|
13
|
+
if (score >= 90) {
|
|
14
|
+
grade = 'A';
|
|
15
|
+
}
|
|
16
|
+
else if (score >= 75) {
|
|
17
|
+
grade = 'B';
|
|
18
|
+
}
|
|
19
|
+
else if (score >= 60) {
|
|
20
|
+
grade = 'C';
|
|
21
|
+
}
|
|
22
|
+
else if (score >= 40) {
|
|
23
|
+
grade = 'D';
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
grade = 'F';
|
|
27
|
+
}
|
|
28
|
+
return { score, grade };
|
|
29
|
+
}
|
|
30
|
+
export function pickQuickWins(findings) {
|
|
31
|
+
const actionable = findings.filter((f) => f.severity === 'critical' || f.severity === 'warn');
|
|
32
|
+
const severityOrder = { critical: 0, warn: 1 };
|
|
33
|
+
const sorted = [...actionable].sort((a, b) => {
|
|
34
|
+
const sa = severityOrder[a.severity] ?? 2;
|
|
35
|
+
const sb = severityOrder[b.severity] ?? 2;
|
|
36
|
+
if (sa !== sb) {
|
|
37
|
+
return sa - sb;
|
|
38
|
+
}
|
|
39
|
+
return a.suggestion.length - b.suggestion.length;
|
|
40
|
+
});
|
|
41
|
+
return sorted.slice(0, 3);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/scoring.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAA2B;IAC/C,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,QAAyB;IACtD,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE3B,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACvB,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACvB,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACvB,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAyB;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAE9F,MAAM,aAAa,GAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAEvE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/settings-auditor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AAsBxE,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyEjF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Planu — Settings and extensions auditor for SPEC-092
|
|
2
|
+
import { readFile, access } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const DOCS_REF = 'https://code.claude.com/docs/en/settings';
|
|
5
|
+
async function readSettings(filePath) {
|
|
6
|
+
try {
|
|
7
|
+
const content = await readFile(filePath, 'utf-8');
|
|
8
|
+
return JSON.parse(content);
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function pathExists(p) {
|
|
15
|
+
try {
|
|
16
|
+
await access(p);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function auditSettings(projectPath) {
|
|
24
|
+
const findings = [];
|
|
25
|
+
const settingsPath = join(projectPath, '.claude', 'settings.json');
|
|
26
|
+
const localSettingsPath = join(projectPath, '.claude', 'settings.local.json');
|
|
27
|
+
// Check main settings
|
|
28
|
+
const settings = await readSettings(settingsPath);
|
|
29
|
+
const localSettings = await readSettings(localSettingsPath);
|
|
30
|
+
const allSettings = [
|
|
31
|
+
{ data: settings, label: 'settings.json' },
|
|
32
|
+
{ data: localSettings, label: 'settings.local.json' },
|
|
33
|
+
];
|
|
34
|
+
for (const { data, label } of allSettings) {
|
|
35
|
+
if (!data) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
// Check for obsolete permission patterns
|
|
39
|
+
const allowList = data.permissions?.allow ?? [];
|
|
40
|
+
const obsoletePatterns = ['mcp__specforge__', 'mcp__sdd__'];
|
|
41
|
+
for (const pattern of obsoletePatterns) {
|
|
42
|
+
const obsolete = allowList.filter((p) => p.includes(pattern));
|
|
43
|
+
if (obsolete.length > 0) {
|
|
44
|
+
findings.push({
|
|
45
|
+
area: 'settings',
|
|
46
|
+
severity: 'warn',
|
|
47
|
+
message: `${label} has ${String(obsolete.length)} obsolete permission(s) matching "${pattern}"`,
|
|
48
|
+
suggestion: `Remove obsolete entries from permissions.allow: ${obsolete.join(', ')}`,
|
|
49
|
+
docsRef: DOCS_REF,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Check autoMemoryEnabled
|
|
54
|
+
if (data.autoMemoryEnabled === false) {
|
|
55
|
+
findings.push({
|
|
56
|
+
area: 'settings',
|
|
57
|
+
severity: 'info',
|
|
58
|
+
message: `${label} has autoMemoryEnabled: false — auto-memory is disabled`,
|
|
59
|
+
suggestion: 'Consider enabling auto-memory for cross-session learning',
|
|
60
|
+
docsRef: DOCS_REF,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Check for skills directory
|
|
65
|
+
const skillsDir = join(projectPath, '.claude', 'skills');
|
|
66
|
+
if (!(await pathExists(skillsDir))) {
|
|
67
|
+
findings.push({
|
|
68
|
+
area: 'settings',
|
|
69
|
+
severity: 'info',
|
|
70
|
+
message: 'No .claude/skills/ directory found',
|
|
71
|
+
suggestion: 'Create skills for repeatable workflows — invoke with /skill-name in Claude Code',
|
|
72
|
+
docsRef: DOCS_REF,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Check for hooks configuration
|
|
76
|
+
const hooksDir = join(projectPath, '.claude', 'hooks');
|
|
77
|
+
if (!(await pathExists(hooksDir))) {
|
|
78
|
+
findings.push({
|
|
79
|
+
area: 'settings',
|
|
80
|
+
severity: 'info',
|
|
81
|
+
message: 'No .claude/hooks/ directory found',
|
|
82
|
+
suggestion: 'Add hooks to automate quality gates (e.g., filter test output, truncate long logs)',
|
|
83
|
+
docsRef: DOCS_REF,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return findings;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=settings-auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-auditor.js","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/settings-auditor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -46,6 +46,7 @@ import { registerLLMProviderTools } from './tools/register-llm-provider-tools.js
|
|
|
46
46
|
import { registerPluginTools } from './tools/register-plugin-tools.js';
|
|
47
47
|
import { registerGitHubTools } from './tools/register-github-tools.js';
|
|
48
48
|
import { registerTeamTools } from './tools/register-team-tools.js';
|
|
49
|
+
import { registerWorkspaceTools } from './tools/register-workspace-tools.js';
|
|
49
50
|
import { PLANU_VERSION } from './config/version.js';
|
|
50
51
|
import { handleActivateLicense } from './tools/activate-license.js';
|
|
51
52
|
import { GroupManager } from './engine/tool-groups/group-manager.js';
|
|
@@ -156,6 +157,7 @@ registerLLMProviderTools(server);
|
|
|
156
157
|
registerPluginTools(server);
|
|
157
158
|
registerGitHubTools(server);
|
|
158
159
|
registerTeamTools(server);
|
|
160
|
+
registerWorkspaceTools(server);
|
|
159
161
|
// ---------------------------------------------------------------------------
|
|
160
162
|
// Start server
|
|
161
163
|
// ---------------------------------------------------------------------------
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-claude-config.d.ts","sourceRoot":"","sources":["../../src/tools/audit-claude-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU5E,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqCjG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { auditClaudeMd, auditRules, auditMemory, auditSettings, calculateScore, pickQuickWins, } from '../engine/claude-config-auditor/index.js';
|
|
2
|
+
export async function handleAuditClaudeConfig(params) {
|
|
3
|
+
const { projectPath, includeGlobal = true } = params;
|
|
4
|
+
const [claudeMdFindings, rulesFindings, memoryFindings, settingsFindings] = await Promise.all([
|
|
5
|
+
auditClaudeMd(projectPath, includeGlobal),
|
|
6
|
+
auditRules(projectPath, includeGlobal),
|
|
7
|
+
auditMemory(projectPath),
|
|
8
|
+
auditSettings(projectPath),
|
|
9
|
+
]);
|
|
10
|
+
const allFindings = [
|
|
11
|
+
...claudeMdFindings,
|
|
12
|
+
...rulesFindings,
|
|
13
|
+
...memoryFindings,
|
|
14
|
+
...settingsFindings,
|
|
15
|
+
];
|
|
16
|
+
const { score, grade } = calculateScore(allFindings);
|
|
17
|
+
const quickWins = pickQuickWins(allFindings);
|
|
18
|
+
const criticalCount = allFindings.filter((f) => f.severity === 'critical').length;
|
|
19
|
+
const warnCount = allFindings.filter((f) => f.severity === 'warn').length;
|
|
20
|
+
const infoCount = allFindings.filter((f) => f.severity === 'info').length;
|
|
21
|
+
const topQuickWin = quickWins[0]?.suggestion ?? 'none';
|
|
22
|
+
const summary = allFindings.length === 0
|
|
23
|
+
? `Your Claude Code workspace configuration is excellent! Score: ${String(score)}/100 (${grade}).`
|
|
24
|
+
: `Claude Code workspace audit: ${String(score)}/100 (${grade}). Found ${String(criticalCount)} critical, ${String(warnCount)} warnings, ${String(infoCount)} info items.${quickWins.length > 0 ? ` Top quick win: ${topQuickWin}` : ''}`;
|
|
25
|
+
return {
|
|
26
|
+
content: [
|
|
27
|
+
{
|
|
28
|
+
type: 'text',
|
|
29
|
+
text: JSON.stringify({ score, grade, findings: allFindings, quickWins, summary }, null, 2),
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=audit-claude-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-claude-config.js","sourceRoot":"","sources":["../../src/tools/audit-claude-config.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,0CAA0C,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAA8B;IAC1E,MAAM,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAErD,MAAM,CAAC,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5F,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;QACzC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC;QACtC,WAAW,CAAC,WAAW,CAAC;QACxB,aAAa,CAAC,WAAW,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG;QAClB,GAAG,gBAAgB;QACnB,GAAG,aAAa;QAChB,GAAG,cAAc;QACjB,GAAG,gBAAgB;KACpB,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IAClF,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAE1E,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC;IACvD,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,CAAC,iEAAiE,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI;QAClG,CAAC,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,MAAM,CAAC,aAAa,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,eAAe,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE9O,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3F;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec/spec-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EAIf,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAyB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec/spec-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EAIf,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAyB,MAAM,+BAA+B,CAAC;AAOpF,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,4FAA4F;AAC5F,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAoIxF;AAED,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EAChD,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAWrC"}
|
|
@@ -10,6 +10,7 @@ import { getScopeFilters } from '../../engine/scope-filter.js';
|
|
|
10
10
|
import { isLegacyLocation, getSpecFileNames } from '../../engine/planu-config-writer.js';
|
|
11
11
|
import { slugify, generateSpecId, generateBranchName } from '../create-spec-helpers.js';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
13
14
|
/** Builds the Spec object, calculates estimation, generates diagrams, and scope filters. */
|
|
14
15
|
export async function buildSpecContext(params) {
|
|
15
16
|
const { title, description, projectPath, type = 'feature', scope = 'feature', target = 'fullstack', tags = [], feature, } = params;
|
|
@@ -25,8 +26,10 @@ export async function buildSpecContext(params) {
|
|
|
25
26
|
return { ok: false, errorMessage: specLimit.message };
|
|
26
27
|
}
|
|
27
28
|
/* v8 ignore stop */
|
|
28
|
-
// Generate spec ID
|
|
29
|
-
const
|
|
29
|
+
// Generate spec ID: combine store IDs + filesystem IDs for global max
|
|
30
|
+
const fsSpecIds = await scanFilesystemSpecIds(projectPath);
|
|
31
|
+
const allSpecs = [...existingSpecs, ...fsSpecIds.map((id) => ({ id }))];
|
|
32
|
+
const specId = generateSpecId(allSpecs);
|
|
30
33
|
const slug = slugify(title);
|
|
31
34
|
// Check for duplicate title
|
|
32
35
|
const duplicate = existingSpecs.find((s) => slugify(s.title) === slug);
|
|
@@ -128,4 +131,47 @@ export function buildSplitResult(splitSuggestion, experienceLevel) {
|
|
|
128
131
|
formatted: formatSplitSuggestion(splitSuggestion, level === 'beginner' ? 'beginner' : 'expert'),
|
|
129
132
|
};
|
|
130
133
|
}
|
|
134
|
+
/** Scan filesystem for SPEC-XXX directories to find max ID globally. */
|
|
135
|
+
async function scanFilesystemSpecIds(projectPath) {
|
|
136
|
+
const ids = [];
|
|
137
|
+
try {
|
|
138
|
+
const configPath = join(projectPath, 'planu.json');
|
|
139
|
+
let specLocation = 'planu/specs';
|
|
140
|
+
try {
|
|
141
|
+
const config = JSON.parse(await readFile(configPath, 'utf-8'));
|
|
142
|
+
specLocation = config.specLocation ?? specLocation;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
/* no planu.json — use default */
|
|
146
|
+
}
|
|
147
|
+
const specsRoot = join(projectPath, specLocation);
|
|
148
|
+
const features = await readdir(specsRoot, { withFileTypes: true }).catch(() => []);
|
|
149
|
+
for (const feat of features) {
|
|
150
|
+
if (!feat.isDirectory()) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const featDir = join(specsRoot, feat.name);
|
|
154
|
+
const entries = await readdir(featDir, { withFileTypes: true }).catch(() => []);
|
|
155
|
+
for (const entry of entries) {
|
|
156
|
+
const match = /^(SPEC-\d+)/.exec(entry.name);
|
|
157
|
+
if (match?.[1]) {
|
|
158
|
+
ids.push(match[1]);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Also check legacy location
|
|
163
|
+
const legacyRoot = join(projectPath, 'docs/sdd/specs');
|
|
164
|
+
const legacyEntries = await readdir(legacyRoot, { withFileTypes: true }).catch(() => []);
|
|
165
|
+
for (const entry of legacyEntries) {
|
|
166
|
+
const match = /^(SPEC-\d+)/.exec(entry.name);
|
|
167
|
+
if (match?.[1]) {
|
|
168
|
+
ids.push(match[1]);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
/* filesystem scan is best-effort */
|
|
174
|
+
}
|
|
175
|
+
return ids;
|
|
176
|
+
}
|
|
131
177
|
//# sourceMappingURL=spec-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-builder.js","sourceRoot":"","sources":["../../../src/tools/create-spec/spec-builder.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,kEAAkE;AASlE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-builder.js","sourceRoot":"","sources":["../../../src/tools/create-spec/spec-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-workspace-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-workspace-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmB9D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { handleAuditClaudeConfig } from './audit-claude-config.js';
|
|
3
|
+
import { safeLicensed } from './safe-handler.js';
|
|
4
|
+
export function registerWorkspaceTools(server) {
|
|
5
|
+
// audit_claude_config — SPEC-092
|
|
6
|
+
server.registerTool('audit_claude_config', {
|
|
7
|
+
description: 'Audit and optimize your Claude Code workspace configuration. Analyzes CLAUDE.md size, .claude/rules/ structure, auto-memory, settings, and more against official best practices. Returns a scored report with prioritized suggestions.',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
projectPath: z.string().describe('Absolute path to the project root to audit'),
|
|
10
|
+
includeGlobal: z
|
|
11
|
+
.boolean()
|
|
12
|
+
.optional()
|
|
13
|
+
.default(true)
|
|
14
|
+
.describe('Also audit ~/.claude/ global config (default: true)'),
|
|
15
|
+
},
|
|
16
|
+
annotations: { readOnlyHint: true },
|
|
17
|
+
}, safeLicensed('audit_claude_config', async (args) => handleAuditClaudeConfig(args)));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=register-workspace-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-workspace-tools.js","sourceRoot":"","sources":["../../src/tools/register-workspace-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,iCAAiC;IACjC,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,wOAAwO;QAC1O,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAC9E,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,qDAAqD,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CACnF,CAAC;AACJ,CAAC"}
|
package/dist/types/analysis.d.ts
CHANGED
|
@@ -227,4 +227,31 @@ export interface SpecAccuracyReport {
|
|
|
227
227
|
/** Framework IDs whose registry entry is older than 180 days. */
|
|
228
228
|
staleRegistryEntries: string[];
|
|
229
229
|
}
|
|
230
|
+
export type ConfigFindingSeverity = 'info' | 'warn' | 'critical';
|
|
231
|
+
export interface ConfigFinding {
|
|
232
|
+
area: string;
|
|
233
|
+
severity: ConfigFindingSeverity;
|
|
234
|
+
message: string;
|
|
235
|
+
suggestion: string;
|
|
236
|
+
docsRef: string;
|
|
237
|
+
}
|
|
238
|
+
export interface ConfigAuditResult {
|
|
239
|
+
score: number;
|
|
240
|
+
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
241
|
+
findings: ConfigFinding[];
|
|
242
|
+
quickWins: ConfigFinding[];
|
|
243
|
+
summary: string;
|
|
244
|
+
}
|
|
245
|
+
export interface AuditClaudeConfigInput {
|
|
246
|
+
projectPath: string;
|
|
247
|
+
includeGlobal?: boolean;
|
|
248
|
+
}
|
|
249
|
+
export interface SettingsJson {
|
|
250
|
+
permissions?: {
|
|
251
|
+
allow?: string[];
|
|
252
|
+
deny?: string[];
|
|
253
|
+
};
|
|
254
|
+
autoMemoryEnabled?: boolean;
|
|
255
|
+
[key: string]: unknown;
|
|
256
|
+
}
|
|
230
257
|
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planu/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Planu — MCP Server for Spec Driven Development. Manages specs, estimations, reverse engineering, and auto-learning across any language/framework.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"claudeMdMaxLines": 200,
|
|
3
|
+
"claudeMdCriticalLines": 400,
|
|
4
|
+
"memoryMdMaxLines": 200,
|
|
5
|
+
"docsBaseUrl": "https://code.claude.com/docs/en/memory",
|
|
6
|
+
"recommendations": {
|
|
7
|
+
"useRules": "Split large CLAUDE.md into .claude/rules/ files with paths frontmatter",
|
|
8
|
+
"useLocalMd": "Use CLAUDE.local.md for personal project-specific preferences not in git",
|
|
9
|
+
"useImports": "Use @path syntax in CLAUDE.md to import README.md, package.json",
|
|
10
|
+
"usePathFrontmatter": "Add paths: frontmatter to rules so they only load for matching files",
|
|
11
|
+
"keepMemoryConcise": "Keep MEMORY.md under 200 lines — only first 200 are loaded per session",
|
|
12
|
+
"useTopicFiles": "Move detailed notes to topic files (debugging.md, patterns.md) referenced from MEMORY.md",
|
|
13
|
+
"cleanSettings": "Remove obsolete MCP server permissions from settings files"
|
|
14
|
+
}
|
|
15
|
+
}
|