@nerviq/cli 1.0.0 → 1.2.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/bin/cli.js +170 -73
- package/package.json +3 -5
- package/src/activity.js +20 -0
- package/src/aider/domain-packs.js +27 -2
- package/src/aider/mcp-packs.js +231 -0
- package/src/aider/techniques.js +3210 -1397
- package/src/audit.js +290 -9
- package/src/catalog.js +18 -2
- package/src/codex/domain-packs.js +23 -1
- package/src/codex/mcp-packs.js +254 -0
- package/src/codex/techniques.js +4738 -3257
- package/src/copilot/domain-packs.js +23 -1
- package/src/copilot/mcp-packs.js +254 -0
- package/src/copilot/techniques.js +3433 -1936
- package/src/cursor/domain-packs.js +23 -1
- package/src/cursor/mcp-packs.js +257 -0
- package/src/cursor/techniques.js +3697 -1869
- package/src/deprecation.js +98 -0
- package/src/domain-pack-expansion.js +571 -0
- package/src/domain-packs.js +25 -2
- package/src/formatters/otel.js +151 -0
- package/src/gemini/domain-packs.js +23 -1
- package/src/gemini/mcp-packs.js +257 -0
- package/src/gemini/techniques.js +3734 -2238
- package/src/integrations.js +194 -0
- package/src/mcp-packs.js +233 -0
- package/src/opencode/domain-packs.js +23 -1
- package/src/opencode/mcp-packs.js +231 -0
- package/src/opencode/techniques.js +3500 -1687
- package/src/org.js +68 -0
- package/src/source-urls.js +410 -260
- package/src/stack-checks.js +565 -0
- package/src/supplemental-checks.js +767 -0
- package/src/techniques.js +2929 -1449
- package/src/telemetry.js +160 -0
- package/src/windsurf/domain-packs.js +23 -1
- package/src/windsurf/mcp-packs.js +257 -0
- package/src/windsurf/techniques.js +3647 -1834
- package/src/workspace.js +233 -0
- package/CHANGELOG.md +0 -198
- package/content/case-study-template.md +0 -91
- package/content/claims-governance.md +0 -37
- package/content/claude-code/audit-repo/SKILL.md +0 -20
- package/content/claude-native-integration.md +0 -60
- package/content/devto-article.json +0 -9
- package/content/launch-posts.md +0 -226
- package/content/pilot-rollout-kit.md +0 -30
- package/content/release-checklist.md +0 -31
package/src/workspace.js
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
function normalizePath(value) {
|
|
5
|
+
return value.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\/+$/, '');
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function readJsonSafe(filePath) {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
11
|
+
} catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function readTextSafe(filePath) {
|
|
17
|
+
try {
|
|
18
|
+
return fs.readFileSync(filePath, 'utf8');
|
|
19
|
+
} catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function unique(items) {
|
|
25
|
+
return [...new Set(items.filter(Boolean).map(normalizePath))];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function hasWorkspaceConfig(dir) {
|
|
29
|
+
return [
|
|
30
|
+
'turbo.json',
|
|
31
|
+
'lerna.json',
|
|
32
|
+
'pnpm-workspace.yaml',
|
|
33
|
+
].some((file) => fs.existsSync(path.join(dir, file))) ||
|
|
34
|
+
Boolean(readJsonSafe(path.join(dir, 'package.json'))?.workspaces);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function packageWorkspacePatterns(dir) {
|
|
38
|
+
const pkg = readJsonSafe(path.join(dir, 'package.json')) || {};
|
|
39
|
+
const workspaces = pkg.workspaces;
|
|
40
|
+
|
|
41
|
+
if (Array.isArray(workspaces)) {
|
|
42
|
+
return workspaces;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (workspaces && Array.isArray(workspaces.packages)) {
|
|
46
|
+
return workspaces.packages;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function lernaWorkspacePatterns(dir) {
|
|
53
|
+
const lerna = readJsonSafe(path.join(dir, 'lerna.json')) || {};
|
|
54
|
+
return Array.isArray(lerna.packages) ? lerna.packages : [];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function pnpmWorkspacePatterns(dir) {
|
|
58
|
+
const content = readTextSafe(path.join(dir, 'pnpm-workspace.yaml'));
|
|
59
|
+
if (!content) return [];
|
|
60
|
+
|
|
61
|
+
const matches = [];
|
|
62
|
+
for (const line of content.split(/\r?\n/)) {
|
|
63
|
+
const match = line.match(/^\s*-\s*["']?([^"']+)["']?\s*$/);
|
|
64
|
+
if (match) {
|
|
65
|
+
matches.push(match[1]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return matches;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function turboWorkspacePatterns(dir) {
|
|
72
|
+
if (!fs.existsSync(path.join(dir, 'turbo.json'))) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const commonPatterns = [];
|
|
77
|
+
for (const candidate of ['apps', 'packages', 'services']) {
|
|
78
|
+
if (fs.existsSync(path.join(dir, candidate)) && fs.statSync(path.join(dir, candidate)).isDirectory()) {
|
|
79
|
+
commonPatterns.push(`${candidate}/*`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return commonPatterns;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function listDirectories(rootDir) {
|
|
87
|
+
const found = [];
|
|
88
|
+
const queue = [''];
|
|
89
|
+
|
|
90
|
+
while (queue.length > 0) {
|
|
91
|
+
const relative = queue.shift();
|
|
92
|
+
const full = path.join(rootDir, relative);
|
|
93
|
+
|
|
94
|
+
let entries = [];
|
|
95
|
+
try {
|
|
96
|
+
entries = fs.readdirSync(full, { withFileTypes: true });
|
|
97
|
+
} catch {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
for (const entry of entries) {
|
|
102
|
+
if (!entry.isDirectory()) continue;
|
|
103
|
+
if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === '.next' || entry.name === 'dist') continue;
|
|
104
|
+
const child = normalizePath(path.join(relative, entry.name));
|
|
105
|
+
found.push(child);
|
|
106
|
+
queue.push(child);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return found;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function globToRegExp(pattern) {
|
|
114
|
+
const normalized = normalizePath(pattern)
|
|
115
|
+
.replace(/\*\*/g, '__DOUBLE_STAR__')
|
|
116
|
+
.replace(/\*/g, '__SINGLE_STAR__')
|
|
117
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
118
|
+
.replace(/__DOUBLE_STAR__/g, '.*')
|
|
119
|
+
.replace(/__SINGLE_STAR__/g, '[^/]+');
|
|
120
|
+
return new RegExp(`^${normalized}$`);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function expandWorkspacePatterns(dir, patterns) {
|
|
124
|
+
const normalizedPatterns = unique(Array.isArray(patterns) ? patterns : []);
|
|
125
|
+
if (normalizedPatterns.length === 0) {
|
|
126
|
+
return [];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const allDirs = listDirectories(dir);
|
|
130
|
+
const matches = [];
|
|
131
|
+
|
|
132
|
+
for (const pattern of normalizedPatterns) {
|
|
133
|
+
const fullPath = path.join(dir, pattern);
|
|
134
|
+
if (!pattern.includes('*') && fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {
|
|
135
|
+
matches.push(normalizePath(pattern));
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const matcher = globToRegExp(pattern);
|
|
140
|
+
for (const candidate of allDirs) {
|
|
141
|
+
if (matcher.test(candidate)) {
|
|
142
|
+
matches.push(candidate);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return unique(matches);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function detectWorkspaceGlobs(dir) {
|
|
151
|
+
return unique([
|
|
152
|
+
...packageWorkspacePatterns(dir),
|
|
153
|
+
...lernaWorkspacePatterns(dir),
|
|
154
|
+
...pnpmWorkspacePatterns(dir),
|
|
155
|
+
...turboWorkspacePatterns(dir),
|
|
156
|
+
]);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function detectWorkspaces(dir) {
|
|
160
|
+
return expandWorkspacePatterns(dir, detectWorkspaceGlobs(dir));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function parseWorkspaceSelection(value) {
|
|
164
|
+
if (!value) return [];
|
|
165
|
+
if (Array.isArray(value)) return unique(value);
|
|
166
|
+
return unique(String(value).split(',').map((item) => item.trim()).filter(Boolean));
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async function auditWorkspaces(dir, workspaceGlobs, platform = 'claude') {
|
|
170
|
+
const { audit } = require('./audit');
|
|
171
|
+
const rootDir = path.resolve(dir);
|
|
172
|
+
const selectedPatterns = parseWorkspaceSelection(workspaceGlobs);
|
|
173
|
+
const sourcePatterns = selectedPatterns.length > 0 ? selectedPatterns : detectWorkspaceGlobs(rootDir);
|
|
174
|
+
const workspacePaths = selectedPatterns.length > 0
|
|
175
|
+
? expandWorkspacePatterns(rootDir, selectedPatterns)
|
|
176
|
+
: detectWorkspaces(rootDir);
|
|
177
|
+
const results = [];
|
|
178
|
+
|
|
179
|
+
for (const workspacePath of workspacePaths) {
|
|
180
|
+
const absPath = path.join(rootDir, workspacePath);
|
|
181
|
+
try {
|
|
182
|
+
const result = await audit({ dir: absPath, platform, silent: true });
|
|
183
|
+
results.push({
|
|
184
|
+
name: path.basename(workspacePath),
|
|
185
|
+
workspace: workspacePath,
|
|
186
|
+
dir: absPath,
|
|
187
|
+
platform,
|
|
188
|
+
score: result.score,
|
|
189
|
+
passed: result.passed,
|
|
190
|
+
total: result.checkCount,
|
|
191
|
+
topAction: result.topNextActions?.[0]?.name || null,
|
|
192
|
+
result,
|
|
193
|
+
});
|
|
194
|
+
} catch (error) {
|
|
195
|
+
results.push({
|
|
196
|
+
name: path.basename(workspacePath),
|
|
197
|
+
workspace: workspacePath,
|
|
198
|
+
dir: absPath,
|
|
199
|
+
platform,
|
|
200
|
+
score: null,
|
|
201
|
+
passed: 0,
|
|
202
|
+
total: 0,
|
|
203
|
+
topAction: null,
|
|
204
|
+
error: error.message,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const validScores = results.filter((item) => typeof item.score === 'number').map((item) => item.score);
|
|
210
|
+
const averageScore = validScores.length > 0
|
|
211
|
+
? Math.round(validScores.reduce((sum, value) => sum + value, 0) / validScores.length)
|
|
212
|
+
: 0;
|
|
213
|
+
|
|
214
|
+
return {
|
|
215
|
+
rootDir,
|
|
216
|
+
platform,
|
|
217
|
+
patterns: sourcePatterns,
|
|
218
|
+
workspaces: results,
|
|
219
|
+
detectedWorkspaces: workspacePaths,
|
|
220
|
+
workspaceCount: workspacePaths.length,
|
|
221
|
+
averageScore,
|
|
222
|
+
maxScore: validScores.length > 0 ? Math.max(...validScores) : 0,
|
|
223
|
+
minScore: validScores.length > 0 ? Math.min(...validScores) : 0,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
module.exports = {
|
|
228
|
+
hasWorkspaceConfig,
|
|
229
|
+
detectWorkspaceGlobs,
|
|
230
|
+
detectWorkspaces,
|
|
231
|
+
parseWorkspaceSelection,
|
|
232
|
+
auditWorkspaces,
|
|
233
|
+
};
|
package/CHANGELOG.md
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 1.0.0 — 2026-04-05
|
|
4
|
-
### 🎉 First Stable Release
|
|
5
|
-
- 8 platforms: Claude Code, Codex, Gemini CLI, GitHub Copilot, Cursor, Windsurf, Aider, OpenCode
|
|
6
|
-
- 673 checks with sourceUrl and confidence on every check
|
|
7
|
-
- Harmony: cross-platform drift detection and alignment
|
|
8
|
-
- Synergy: multi-agent amplification and task routing
|
|
9
|
-
- Plugin system: custom checks via nerviq.config.js
|
|
10
|
-
- SDK: @nerviq/sdk with TypeScript types
|
|
11
|
-
- REST API: nerviq serve --port 3000
|
|
12
|
-
- MCP Server: nerviq as MCP tool provider
|
|
13
|
-
- VS Code Extension
|
|
14
|
-
- GitHub Action with SARIF support
|
|
15
|
-
- Performance: 226ms total audit across 8 platforms
|
|
16
|
-
- CLI commands: audit, setup, plan, apply, governance, benchmark, harmony-audit, synergy-report, deep-review, interactive, watch, history, compare, trend, feedback, catalog, certify, doctor, convert, migrate, serve
|
|
17
|
-
- 213 tests across 21 test suites
|
|
18
|
-
- AGPL-3.0 license
|
|
19
|
-
|
|
20
|
-
## [1.16.2] - 2026-04-03
|
|
21
|
-
|
|
22
|
-
### Changed
|
|
23
|
-
- bumped the local release line to `1.16.2` so the next publish does not overwrite the already-live `1.16.1` npm release
|
|
24
|
-
- synchronized README, docs, launch copy, and proof-facing state to distinguish clearly between public npm latest (`1.16.1`) and local release prep (`1.16.2`)
|
|
25
|
-
|
|
26
|
-
### Fixed
|
|
27
|
-
- release-truth drift across package metadata, docs, and public-facing proof references
|
|
28
|
-
|
|
29
|
-
## [1.16.1] - 2026-04-03
|
|
30
|
-
|
|
31
|
-
### Added
|
|
32
|
-
- `feedback` command validation on the public npm package line
|
|
33
|
-
- stronger secret detection coverage for Anthropic-style keys
|
|
34
|
-
- deep-review sanitization and secret redaction hardening
|
|
35
|
-
- watch-mode resilience improvements across recursive and non-recursive platforms
|
|
36
|
-
|
|
37
|
-
### Changed
|
|
38
|
-
- increased verified check count from `84` to `85`
|
|
39
|
-
- proof-backed product copy and case-study traceability improvements
|
|
40
|
-
|
|
41
|
-
## [1.10.3] - 2026-04-02
|
|
42
|
-
|
|
43
|
-
### Added
|
|
44
|
-
- `--snapshot` support for `audit`, `augment`, `suggest-only`, `benchmark`, and `governance`, writing normalized evidence artifacts under `.claude/claudex-setup/snapshots/`
|
|
45
|
-
- shared snapshot history via `index.json` so before/after work can accumulate into a single local evidence spine
|
|
46
|
-
- `governance --out governance.md` for a shareable governance / pilot-readiness artifact
|
|
47
|
-
- packaged Claude-native `audit-repo` skill template under `content/claude-code/audit-repo/`
|
|
48
|
-
- lightweight release checklist in `content/release-checklist.md`
|
|
49
|
-
|
|
50
|
-
### Changed
|
|
51
|
-
- default audit now surfaces `Top 5 Next Actions` with rationale, traceability, risk, confidence, and a suggested next command
|
|
52
|
-
- `--lite` now gives a shorter beginner-first top-3 quick scan
|
|
53
|
-
- README and docs now reflect snapshot artifacts, governance export, and the Claude-native skill path
|
|
54
|
-
- packaged content and public-facing counts are now aligned with the current CLAUDEX state
|
|
55
|
-
|
|
56
|
-
## [1.14.0] - 2026-04-03
|
|
57
|
-
|
|
58
|
-
### Added
|
|
59
|
-
- Check-level test matrix: 327 verified scenarios across all 84 checks
|
|
60
|
-
- Golden matrix: 12 repo profile tests with expected results
|
|
61
|
-
|
|
62
|
-
### Fixed
|
|
63
|
-
- `hooks` check now detects hooks in settings.json (not only .claude/hooks/ dir)
|
|
64
|
-
- `context7Mcp` check now reads .mcp.json
|
|
65
|
-
- `skillUsesPaths` now traverses skill subdirectories (skills/name/SKILL.md)
|
|
66
|
-
- `lintCommand` now matches npm/yarn/pnpm/bun lint commands
|
|
67
|
-
|
|
68
|
-
## [1.13.0] - 2026-04-03
|
|
69
|
-
|
|
70
|
-
### Added
|
|
71
|
-
- 10 new checks (74→84): project description, directory structure, multiple hook types, stop-failure hook, skill paths, MCP env config, gitignore local settings, .env.example, package scripts, type checking
|
|
72
|
-
- 15 new tests (58→73): history/compare/trend, new checks structure, CLI commands, deny depth, negative instructions, --require flag
|
|
73
|
-
- All references updated to 74→84 checks
|
|
74
|
-
|
|
75
|
-
## [1.12.0] - 2026-04-03
|
|
76
|
-
|
|
77
|
-
### Added
|
|
78
|
-
- 12 new checks (62→74): test coverage, agent tool restrictions, auto-memory, sandbox, deny rule depth, git attribution, effort level, snapshot history, worktree, negative instructions, output style, CI variants
|
|
79
|
-
- 8 new stacks (22→30): Deno, Bun, Elixir, Astro, Remix, NestJS, Laravel, .NET
|
|
80
|
-
- Deeper domain detection: llamaindex, crewai, autogen, ollama for AI/ML; paypal, square, adyen, medusa for ecommerce; chromatic, style-dictionary for design; capacitor, ionic for mobile
|
|
81
|
-
|
|
82
|
-
### Fixed
|
|
83
|
-
- `githubActionsOrCI` check used non-existent `ctx.hasFile()` — now uses `ctx.fileContent()`
|
|
84
|
-
- `.NET` stack detection no longer uses glob patterns
|
|
85
|
-
|
|
86
|
-
## [1.11.0] - 2026-04-03
|
|
87
|
-
|
|
88
|
-
### Added
|
|
89
|
-
- `history` command — show score timeline from saved snapshots
|
|
90
|
-
- `compare` command — diff latest vs previous snapshot with delta, regressions, improvements
|
|
91
|
-
- `trend --out report.md` — export trend report as shareable markdown
|
|
92
|
-
- `--require A,B` CI flag — exit code 1 if named checks fail (policy guardrails)
|
|
93
|
-
- Agentic DX positioning in README
|
|
94
|
-
- Real results table (4 case studies) in README
|
|
95
|
-
- Claude-native integration guide (skill, hook, agent examples)
|
|
96
|
-
- Trust-first help text reordering
|
|
97
|
-
|
|
98
|
-
### Fixed
|
|
99
|
-
- Hook checks (hooksInSettings, preToolUse, postToolUse, sessionStart) now OR across settings.json and settings.local.json
|
|
100
|
-
|
|
101
|
-
## [1.10.2] - 2026-04-02
|
|
102
|
-
|
|
103
|
-
### Fixed
|
|
104
|
-
- MCP recommendations are now less speculative: `postgres-mcp` requires explicit Postgres signals, `figma-mcp` only appears for design-system repos, and `mcp-security` is no longer auto-added just because multiple packs were suggested
|
|
105
|
-
- `sentry-mcp` now requires real observability signals or stricter operational domains instead of appearing for every frontend/backend repo
|
|
106
|
-
- design-system detection now respects `.storybook/` directories directly, improving frontend pack accuracy
|
|
107
|
-
|
|
108
|
-
### Added
|
|
109
|
-
- MCP preflight warnings for `setup`, `plan`, and `apply` when selected packs require missing environment variables
|
|
110
|
-
- user-facing docs now reflect the actual 22 detected stacks
|
|
111
|
-
|
|
112
|
-
## [1.10.1] - 2026-04-02
|
|
113
|
-
|
|
114
|
-
### Fixed
|
|
115
|
-
- corrected MCP pack package names to verified npm packages
|
|
116
|
-
- aligned settings hierarchy checks with shared settings precedence
|
|
117
|
-
|
|
118
|
-
## [1.10.0] - 2026-04-01
|
|
119
|
-
|
|
120
|
-
### Added
|
|
121
|
-
- 11 new MCP packs (15→26): sequential-thinking, jira-confluence, ga4-analytics, search-console, n8n-workflows, zendesk, infisical-secrets, shopify, huggingface, blender, wordpress
|
|
122
|
-
- 7 new domain packs (10→17→16 final): ecommerce, ai-ml, devops-cicd, design-system, docs-content, security-focused
|
|
123
|
-
- Smart recommendation for all new packs based on detected stack and domain
|
|
124
|
-
- Detection logic: Storybook, Docusaurus, Stripe, LangChain, GitHub Actions, auth deps
|
|
125
|
-
|
|
126
|
-
## [1.9.0] - 2026-03-31
|
|
127
|
-
|
|
128
|
-
### Added
|
|
129
|
-
- 3 new domain packs: `monorepo`, `mobile`, `regulated-lite` (7→10 total)
|
|
130
|
-
- 3 new MCP packs: `github-mcp`, `postgres-mcp`, `memory-mcp` (2→5 total)
|
|
131
|
-
- smart MCP pack recommendation based on detected domain packs
|
|
132
|
-
- `suggest-only --out report.md` exports full analysis as shareable markdown
|
|
133
|
-
- `why` explanations for all strengths preserved (20+ specific reasons)
|
|
134
|
-
- `why` explanations for all gap findings (12+ specific reasons)
|
|
135
|
-
- 5 new hooks in governance registry: duplicate-id-check, injection-defense, trust-drift-check, session-init, protect-catalog
|
|
136
|
-
- case study template in `content/case-study-template.md`
|
|
137
|
-
- hook risk level display in governance output (color-coded low/medium/high)
|
|
138
|
-
|
|
139
|
-
### Fixed
|
|
140
|
-
- **Settings hierarchy bug**: `noBypassPermissions` and `secretsProtection` checks now correctly read `.claude/settings.json` before `.claude/settings.local.json`, so personal maintainer overrides no longer fail the shared audit
|
|
141
|
-
- domain pack detection now handles monorepo (nx.json, turbo.json, lerna.json, workspaces), mobile (React Native, Flutter, iOS/Android dirs), and regulated repos (SECURITY.md, compliance dirs)
|
|
142
|
-
|
|
143
|
-
### Changed
|
|
144
|
-
- strengths preserved section now shows 8 items (was 6) with specific value explanations
|
|
145
|
-
- claudex-sync.json updated with domain pack, MCP pack, and anti-pattern counts
|
|
146
|
-
|
|
147
|
-
## [1.8.0] - 2026-03-31
|
|
148
|
-
|
|
149
|
-
### Added
|
|
150
|
-
- domain pack recommendations for backend, frontend, data, infra, OSS, and enterprise-governed repos
|
|
151
|
-
- MCP pack recommendations and merge support for `context7-docs` and `next-devtools`
|
|
152
|
-
- workflow-evidence coverage in benchmark reports
|
|
153
|
-
- runtime settings overlays so `apply --plan` still respects current `--profile` and `--mcp-pack` flags
|
|
154
|
-
|
|
155
|
-
### Changed
|
|
156
|
-
- benchmark now respects the selected profile and MCP pack options during isolated-copy runs
|
|
157
|
-
- governance and suggest-only outputs now expose domain packs and MCP packs directly
|
|
158
|
-
- README and docs clarify the local-vs-opt-in-network boundary for core flows vs `deep-review`
|
|
159
|
-
- audit output now frames `setup` as starter-safe generation instead of an automatic full fix
|
|
160
|
-
|
|
161
|
-
## [1.7.0] - 2026-03-31
|
|
162
|
-
|
|
163
|
-
### Added
|
|
164
|
-
- `augment` / `suggest-only` repo-aware analysis with strengths, gaps, top actions, risk notes, and rollout order
|
|
165
|
-
- `plan` command for exportable proposal bundles with file previews and diff-style output
|
|
166
|
-
- `apply` command for selective starter-safe apply flows with rollback manifests and activity artifacts
|
|
167
|
-
- `governance` command with permission profiles, hook registry, policy packs, and pilot rollout guidance
|
|
168
|
-
- `benchmark` command that measures before/after impact in an isolated temp copy and exports evidence reports
|
|
169
|
-
- claims governance and pilot rollout docs in `content/`
|
|
170
|
-
|
|
171
|
-
### Changed
|
|
172
|
-
- `setup` now exposes reusable planning primitives and returns written/preserved file summaries
|
|
173
|
-
- CLI now supports `--out`, `--plan`, `--only`, and `--dry-run`
|
|
174
|
-
- README and docs now reflect the actual product surface instead of only audit/setup flows
|
|
175
|
-
- benchmark and proposal workflows now preserve existing files by default and treat mature repos as review-first
|
|
176
|
-
|
|
177
|
-
## [0.2.0] - 2026-03-31
|
|
178
|
-
|
|
179
|
-
### Added
|
|
180
|
-
- 50+ audit checks (up from 16)
|
|
181
|
-
- 8 new categories: Design, DevOps, Hygiene, Performance, MCP, Prompting, Git Safety, Automation
|
|
182
|
-
- 6 new stack detections: Svelte, Flutter, Ruby, Java, Kotlin, Swift
|
|
183
|
-
- Improved CLAUDE.md template with Mermaid diagrams and XML constraints
|
|
184
|
-
- Auto-sync with CLAUDEX research catalog (1,107 items)
|
|
185
|
-
- Copy-paste config snippets in fix suggestions
|
|
186
|
-
|
|
187
|
-
### Changed
|
|
188
|
-
- Knowledge base upgraded from 972 to 1,107 verified techniques
|
|
189
|
-
- Better scoring weights per category
|
|
190
|
-
|
|
191
|
-
## [0.1.0] - 2026-03-30
|
|
192
|
-
|
|
193
|
-
### Added
|
|
194
|
-
- Initial release
|
|
195
|
-
- 16 audit checks
|
|
196
|
-
- Automatic setup with CLAUDE.md, hooks, commands, skills, rules, agents
|
|
197
|
-
- Stack detection for 12 frameworks
|
|
198
|
-
- JSON output mode
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Case Study: [Project Name]
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
| Field | Value |
|
|
6
|
-
|-------|-------|
|
|
7
|
-
| Project | [name] |
|
|
8
|
-
| Repo type | [e.g., backend API, frontend SPA, monorepo, data pipeline] |
|
|
9
|
-
| Team size | [e.g., solo, 3 developers, 15-person team] |
|
|
10
|
-
| Prior Claude setup | [none / basic CLAUDE.md / mature .claude/ config] |
|
|
11
|
-
| Claudex Setup version | [e.g., 1.9.0] |
|
|
12
|
-
| Date | [YYYY-MM-DD] |
|
|
13
|
-
|
|
14
|
-
## Before State
|
|
15
|
-
|
|
16
|
-
**Audit score:** [X/100]
|
|
17
|
-
**Organic score:** [X/100]
|
|
18
|
-
|
|
19
|
-
What existed before running claudex-setup:
|
|
20
|
-
- [ ] CLAUDE.md
|
|
21
|
-
- [ ] .claude/settings.json
|
|
22
|
-
- [ ] Custom commands
|
|
23
|
-
- [ ] Rules
|
|
24
|
-
- [ ] Hooks
|
|
25
|
-
- [ ] Agents
|
|
26
|
-
- [ ] MCP servers
|
|
27
|
-
|
|
28
|
-
Key observations:
|
|
29
|
-
- [What was good already]
|
|
30
|
-
- [What was missing]
|
|
31
|
-
- [What was risky or misconfigured]
|
|
32
|
-
|
|
33
|
-
## What We Did
|
|
34
|
-
|
|
35
|
-
**Mode used:** [discover / starter / augment / plan+apply / suggest-only]
|
|
36
|
-
|
|
37
|
-
**Steps:**
|
|
38
|
-
1. Ran `npx claudex-setup discover` to understand current state
|
|
39
|
-
2. [Next step]
|
|
40
|
-
3. [Next step]
|
|
41
|
-
|
|
42
|
-
**Domain pack matched:** [e.g., backend-api]
|
|
43
|
-
**MCP packs recommended:** [e.g., context7-docs, postgres-mcp]
|
|
44
|
-
|
|
45
|
-
## Changes Applied
|
|
46
|
-
|
|
47
|
-
| Change | Type | Risk | Applied? |
|
|
48
|
-
|--------|------|------|----------|
|
|
49
|
-
| [e.g., Created CLAUDE.md with architecture] | new file | low | yes |
|
|
50
|
-
| [e.g., Added hooks for auto-lint] | new config | medium | yes |
|
|
51
|
-
| [e.g., Added permission deny rules] | security | low | yes |
|
|
52
|
-
|
|
53
|
-
**Strengths preserved:**
|
|
54
|
-
- [What we explicitly kept unchanged]
|
|
55
|
-
|
|
56
|
-
## After State
|
|
57
|
-
|
|
58
|
-
**Audit score:** [X/100] (was [X/100])
|
|
59
|
-
**Organic score:** [X/100] (was [X/100])
|
|
60
|
-
**Score improvement:** +[X] points
|
|
61
|
-
|
|
62
|
-
## Measured Impact
|
|
63
|
-
|
|
64
|
-
| Metric | Before | After | Change |
|
|
65
|
-
|--------|--------|-------|--------|
|
|
66
|
-
| Audit score | X | X | +X |
|
|
67
|
-
| Checks passing | X/84 | X/84 | +X |
|
|
68
|
-
| Time to first productive session | Xm | Xm | -Xm |
|
|
69
|
-
| [Other metric] | | | |
|
|
70
|
-
|
|
71
|
-
## What Worked Well
|
|
72
|
-
|
|
73
|
-
- [Specific thing that added clear value]
|
|
74
|
-
- [Another]
|
|
75
|
-
|
|
76
|
-
## What Could Be Better
|
|
77
|
-
|
|
78
|
-
- [Specific improvement suggestion for the tool]
|
|
79
|
-
- [Another]
|
|
80
|
-
|
|
81
|
-
## Verdict
|
|
82
|
-
|
|
83
|
-
**Would recommend:** [Yes / Yes with caveats / Not yet]
|
|
84
|
-
|
|
85
|
-
**Best for:** [Who should try this based on our experience]
|
|
86
|
-
|
|
87
|
-
**One-line summary:** [e.g., "Took our Claude setup from basic to production-ready in 15 minutes with zero breakage."]
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
*Generated with claudex-setup v[version]. Case study template from CLAUDEX.*
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# Claims Governance
|
|
2
|
-
|
|
3
|
-
Use this checklist before publishing product-facing claims about Claudex Setup.
|
|
4
|
-
|
|
5
|
-
## Allowed only with evidence
|
|
6
|
-
|
|
7
|
-
- score delta claims
|
|
8
|
-
- organic score delta claims
|
|
9
|
-
- time-to-value claims
|
|
10
|
-
- recommendation acceptance rate claims
|
|
11
|
-
- reduction in manual corrections
|
|
12
|
-
- benchmark outcomes on named repo types
|
|
13
|
-
|
|
14
|
-
## Evidence standard
|
|
15
|
-
|
|
16
|
-
Every claim should have:
|
|
17
|
-
|
|
18
|
-
- a benchmark run or pilot report
|
|
19
|
-
- the repo type or cohort it applies to
|
|
20
|
-
- the date the evidence was collected
|
|
21
|
-
- the exact metric definition
|
|
22
|
-
- the comparison method (`before/after`, `control/pilot`, or `observed over time`)
|
|
23
|
-
|
|
24
|
-
## Avoid
|
|
25
|
-
|
|
26
|
-
- universal productivity multipliers
|
|
27
|
-
- unsupported token savings claims
|
|
28
|
-
- “works for every repo” language
|
|
29
|
-
- suspiciously precise numbers without a method section
|
|
30
|
-
- implying quality scores are objective truth rather than framework coverage
|
|
31
|
-
|
|
32
|
-
## Safer phrasing
|
|
33
|
-
|
|
34
|
-
- "In benchmark mode, this repo improved from 41/100 to 60/100."
|
|
35
|
-
- "Starter-safe artifacts improved readiness on an isolated temp copy."
|
|
36
|
-
- "Suggest-only mode gives mature teams a zero-write review path."
|
|
37
|
-
- "Use governance mode to select permission profiles and inspect shipped hooks."
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: audit-repo
|
|
3
|
-
description: Run claudex-setup on the current repo and summarize the score, top gaps, and next command
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Run `npx claudex-setup --json` in the current project directory and summarize the result.
|
|
7
|
-
|
|
8
|
-
Your output should include:
|
|
9
|
-
|
|
10
|
-
1. The overall score and organic score
|
|
11
|
-
2. The top 3 next actions from `topNextActions`
|
|
12
|
-
3. The suggested next command from `suggestedNextCommand`
|
|
13
|
-
4. A short explanation of what the repo already does well if there are notable strengths
|
|
14
|
-
|
|
15
|
-
Behavior rules:
|
|
16
|
-
|
|
17
|
-
- If the user asks for the shortest version, run `npx claudex-setup --lite`
|
|
18
|
-
- If the user wants deeper no-write analysis, run `npx claudex-setup augment --json`
|
|
19
|
-
- If the score is below 50, explicitly recommend `npx claudex-setup setup`
|
|
20
|
-
- Never apply changes automatically from this skill
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Using claudex-setup from inside Claude Code
|
|
2
|
-
|
|
3
|
-
## Skill: Audit Repo
|
|
4
|
-
|
|
5
|
-
Add this to `.claude/skills/audit-repo.md` in any project:
|
|
6
|
-
|
|
7
|
-
```markdown
|
|
8
|
-
---
|
|
9
|
-
name: audit-repo
|
|
10
|
-
description: Run claudex-setup audit on the current project and show score + top gaps
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
Run `npx claudex-setup --json` on the current project directory.
|
|
14
|
-
Parse the JSON output and present:
|
|
15
|
-
1. Score X/100
|
|
16
|
-
2. Top 3 critical/high gaps with fix descriptions
|
|
17
|
-
3. Suggest next command based on score
|
|
18
|
-
|
|
19
|
-
$ARGUMENTS — optional: --lite for quick scan
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Hook: Auto-audit on SessionStart
|
|
23
|
-
|
|
24
|
-
Add to `.claude/settings.json`:
|
|
25
|
-
|
|
26
|
-
```json
|
|
27
|
-
{
|
|
28
|
-
"hooks": {
|
|
29
|
-
"SessionStart": [
|
|
30
|
-
{
|
|
31
|
-
"type": "command",
|
|
32
|
-
"command": "node -e \"try{const r=require('child_process').execSync('npx claudex-setup --json 2>/dev/null',{timeout:15000}).toString();const d=JSON.parse(r);if(d.score<50)console.log(JSON.stringify({systemMessage:'⚠️ Claude Code setup score: '+d.score+'/100. Consider running: npx claudex-setup --lite'}))}catch(e){console.log('{}')}\"",
|
|
33
|
-
"timeout": 20,
|
|
34
|
-
"statusMessage": "Checking Claude Code setup..."
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Agent: Setup Advisor
|
|
42
|
-
|
|
43
|
-
Add to `.claude/agents/setup-advisor.md`:
|
|
44
|
-
|
|
45
|
-
```markdown
|
|
46
|
-
---
|
|
47
|
-
name: setup-advisor
|
|
48
|
-
description: Analyzes Claude Code setup and recommends improvements
|
|
49
|
-
tools: [Bash, Read, Glob, Grep]
|
|
50
|
-
model: haiku
|
|
51
|
-
maxTurns: 10
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
You are a Claude Code setup advisor.
|
|
55
|
-
|
|
56
|
-
1. Run `npx claudex-setup augment --json` on the current project
|
|
57
|
-
2. Analyze gaps and strengths
|
|
58
|
-
3. Recommend top 5 improvements with rationale
|
|
59
|
-
4. If user approves, guide them through applying changes
|
|
60
|
-
```
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"article": {
|
|
3
|
-
"title": "Your Claude Code project scores 10/100. Here's how to fix it in 60 seconds.",
|
|
4
|
-
"published": false,
|
|
5
|
-
"tags": ["claude", "ai", "productivity", "devtools"],
|
|
6
|
-
"series": "Claude Code Optimization",
|
|
7
|
-
"body_markdown": "After cataloging **1,107 Claude Code entries** and verifying **948 with real evidence**, I found that most projects use barely 10% of what's available.\n\nI built a CLI that scores your project:\n\n```bash\nnpx claudex-setup\n```\n\nMost projects score **10-20 out of 100**. After running setup, they jump to **70+**.\n\n## The Top 10 Things You're Missing\n\n### 1. CLAUDE.md (Critical)\n\nClaude reads this file at the start of every session. Without it, Claude doesn't know your build commands, code style, or project rules.\n\nOur tool generates a smart CLAUDE.md that detects your framework, TypeScript config, and creates a Mermaid architecture diagram automatically.\n\n### 2. Mermaid Architecture Diagrams (73% Token Savings)\n\nA Mermaid diagram in CLAUDE.md gives Claude your project structure in a fraction of the tokens that prose requires.\n\n### 3. Hooks > CLAUDE.md Rules (100% vs 80%)\n\nCLAUDE.md instructions are advisory (~80% compliance). Hooks are deterministic (100%). Auto-lint after every edit. Every time.\n\n### 4. Custom Commands\n\nStop typing the same prompts. Create `/test`, `/deploy`, `/review` in `.claude/commands/`.\n\n### 5. Verification Loops (The #1 Best Practice)\n\n> *This is the single highest-leverage thing you can do.* — Anthropic Best Practices\n\nClaude performs dramatically better when it can verify its own work.\n\n### 6. XML Tags (30% Quality Boost)\n\nUse `<constraints>`, `<validation>` in CLAUDE.md for unambiguous instructions.\n\n### 7. Secrets Protection\n\nClaude Code loads `.env` automatically. Add deny rules to prevent reading sensitive files.\n\n### 8. /security-review\n\nBuilt-in OWASP Top 10 scanning. Most people don't know this command exists.\n\n### 9. Custom Agents\n\nSpecialized subagents: security-reviewer, test-writer in `.claude/agents/`.\n\n### 10. Skills (On-Demand Knowledge)\n\nReusable skills package expertise that Claude can load on demand.\n\n## Try It Now\n\n```bash\nnpx claudex-setup --lite # Quick scan\nnpx claudex-setup # Full audit\nnpx claudex-setup --snapshot # Save evidence artifact\nnpx claudex-setup governance --out governance.md\n```\n\nFree, open source, zero dependencies.\n\n**GitHub:** [github.com/DnaFin/claudex-setup](https://github.com/DnaFin/claudex-setup)\n**npm:** [npmjs.com/package/claudex-setup](https://www.npmjs.com/package/claudex-setup)\n\n---\n\n*Built from a research catalog of 1,107 Claude Code entries, 948 verified with evidence.*"
|
|
8
|
-
}
|
|
9
|
-
}
|