claudex-setup 1.16.0 → 1.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -23
- package/bin/cli.js +92 -5
- package/content/launch-posts.md +159 -92
- package/package.json +2 -2
- package/src/activity.js +195 -1
- package/src/analyze.js +11 -6
- package/src/audit.js +49 -14
- package/src/context.js +106 -0
- package/src/deep-review.js +95 -68
- package/src/domain-packs.js +13 -4
- package/src/index.js +4 -0
- package/src/mcp-packs.js +16 -0
- package/src/secret-patterns.js +30 -0
- package/src/techniques.js +4 -2
- package/src/watch.js +170 -42
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# claudex-setup
|
|
2
2
|
|
|
3
|
-
> Score your repo's Claude Code setup against
|
|
3
|
+
> Score your repo's Claude Code setup against 85 checks. See what's missing, apply only what you approve with rollback, and benchmark the impact — without breaking existing config.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/claudex-setup)
|
|
6
6
|
[](https://www.npmjs.com/package/claudex-setup)
|
|
@@ -51,7 +51,11 @@ Tested on 4 real projects — not demos:
|
|
|
51
51
|
|
|
52
52
|
Most common gaps found: missing secrets protection, no deny rules, no mermaid diagram, no hooks in settings.
|
|
53
53
|
|
|
54
|
-
> Scores measured with claudex-setup@1.10.3 on 2026-04-03.
|
|
54
|
+
> Scores measured with claudex-setup@1.10.3 on 2026-04-03. Current npm latest: 1.16.0, so exact scores may differ slightly on the newer release.
|
|
55
|
+
>
|
|
56
|
+
> Canonical proof artifacts: [Index](https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md) | [CLAUDEX trace](https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/claudex-self-dogfood-proof-trace-2026-04-03.md) | [VTCLE trace](https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/vtcle-proof-trace-2026-04-03.md) | [Social trace](https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/social-proof-trace-2026-04-03.md) | [Polymiro trace](https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/polymiro-proof-trace-2026-04-03.md)
|
|
57
|
+
>
|
|
58
|
+
> Narrative case studies: [VTCLE](https://github.com/DnaFin/claudex/blob/main/research/case-study-vtcle-2026-04-03.md) | [Social](https://github.com/DnaFin/claudex/blob/main/research/case-study-social-2026-04-03.md) | [Polymiro](https://github.com/DnaFin/claudex/blob/main/research/case-study-polymiro-2026-04-03.md)
|
|
55
59
|
|
|
56
60
|
## What You Get
|
|
57
61
|
|
|
@@ -91,7 +95,7 @@ Most common gaps found: missing secrets protection, no deny rules, no mermaid di
|
|
|
91
95
|
design: none (0/2)
|
|
92
96
|
devops: none (0/4)
|
|
93
97
|
|
|
94
|
-
29/
|
|
98
|
+
29/85 checks passing
|
|
95
99
|
Next command: npx claudex-setup setup
|
|
96
100
|
```
|
|
97
101
|
|
|
@@ -107,7 +111,7 @@ That prints a compact top-3 quick scan with one clear next command.
|
|
|
107
111
|
|
|
108
112
|
| Command | What it does |
|
|
109
113
|
|---------|-------------|
|
|
110
|
-
| `npx claudex-setup` | **Discover** - Score 0-100 against
|
|
114
|
+
| `npx claudex-setup` | **Discover** - Score 0-100 against 85 checks |
|
|
111
115
|
| `npx claudex-setup discover` | **Discover** - Alias for audit mode |
|
|
112
116
|
| `npx claudex-setup setup` | **Starter** - Smart CLAUDE.md + hooks + commands + agents |
|
|
113
117
|
| `npx claudex-setup starter` | **Starter** - Alias for setup mode |
|
|
@@ -119,11 +123,14 @@ That prints a compact top-3 quick scan with one clear next command.
|
|
|
119
123
|
| `npx claudex-setup governance` | **Governance** - Permission profiles, hook registry, policy packs, pilot kit |
|
|
120
124
|
| `npx claudex-setup benchmark` | **Benchmark** - Before/after evidence from an isolated temp copy |
|
|
121
125
|
| `npx claudex-setup interactive` | **Wizard** - Step-by-step guided tour |
|
|
122
|
-
| `npx claudex-setup watch` | **Watch** - Live monitoring with score delta |
|
|
126
|
+
| `npx claudex-setup watch` | **Watch** - Live monitoring with score delta and cross-platform directory fallback |
|
|
123
127
|
| `npx claudex-setup badge` | **Badge** - Generate shields.io badge for README |
|
|
124
|
-
| `npx claudex-setup
|
|
128
|
+
| `npx claudex-setup feedback` | **Feedback** - Record local recommendation outcomes or show outcome summary |
|
|
129
|
+
| `npx claudex-setup deep-review` | **Deep Review** - AI-powered config analysis (Claude Code or API key, selected config only) |
|
|
125
130
|
| `npx claudex-setup insights` | **Insights** - View community aggregate stats |
|
|
126
131
|
|
|
132
|
+
> Note: the `feedback` command is currently validated on the main working tree for the next release. If your installed npm build does not expose it yet, use the rest of the trust-first flow and pick it up on the next publish.
|
|
133
|
+
|
|
127
134
|
### Options
|
|
128
135
|
|
|
129
136
|
| Flag | Effect |
|
|
@@ -134,6 +141,10 @@ That prints a compact top-3 quick scan with one clear next command.
|
|
|
134
141
|
| `--only A,B` | Limit plan/apply to selected proposal ids |
|
|
135
142
|
| `--profile NAME` | Choose a permission profile for write-capable flows |
|
|
136
143
|
| `--mcp-pack A,B` | Merge named MCP packs into generated or patched settings |
|
|
144
|
+
| `--key NAME` | Recommendation key for `feedback` logging |
|
|
145
|
+
| `--status VALUE` | Outcome status: `accepted`, `rejected`, or `deferred` |
|
|
146
|
+
| `--effect VALUE` | Outcome effect: `positive`, `neutral`, or `negative` |
|
|
147
|
+
| `--score-delta N` | Optional observed score delta tied to the feedback event |
|
|
137
148
|
| `--snapshot` | Save a normalized artifact under `.claude/claudex-setup/snapshots/` |
|
|
138
149
|
| `--lite` | Show a short top-3 quick scan with one clear next command |
|
|
139
150
|
| `--dry-run` | Preview apply without writing files |
|
|
@@ -246,6 +257,19 @@ npx claudex-setup benchmark --snapshot
|
|
|
246
257
|
|
|
247
258
|
Snapshots are written to `.claude/claudex-setup/snapshots/` with a shared envelope and an `index.json` history file.
|
|
248
259
|
|
|
260
|
+
If you want a local-first recommendation loop, record what actually helped:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
npx claudex-setup feedback --key permissionDeny --status accepted --effect positive --score-delta 12
|
|
264
|
+
npx claudex-setup feedback
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Feedback stays under `.claude/claudex-setup/outcomes/` and is used only as a local ranking signal. Recommendations with repeated positive outcomes get a measured boost; recommendations with repeated negative or rejected outcomes get pushed down.
|
|
268
|
+
|
|
269
|
+
If your currently installed npm build does not expose `feedback` yet, treat this as next-release behavior rather than current npm-latest behavior.
|
|
270
|
+
|
|
271
|
+
`watch` uses native `fs.watch` with recursive directory watches where the platform supports them, and an expanded directory fallback elsewhere. That keeps nested `.claude/` and `.github/` changes visible on Linux too, while staying zero-dependency. Native filesystem watch semantics can still be noisier on very large repos or network filesystems, so the command is best treated as fast local feedback rather than a CI-grade signal.
|
|
272
|
+
|
|
249
273
|
## Use Inside Claude Code
|
|
250
274
|
|
|
251
275
|
If you want the first Claude-native entry point, copy the shipped skill template into your repo.
|
|
@@ -261,26 +285,26 @@ If you are using `npx` only, copy the same file from the GitHub repo at `content
|
|
|
261
285
|
|
|
262
286
|
The skill runs `npx claudex-setup --json`, summarizes the score, shows the top next actions, and points to the right next command without applying changes.
|
|
263
287
|
|
|
264
|
-
##
|
|
288
|
+
## 85 Checks Across 14 Categories
|
|
265
289
|
|
|
266
290
|
The exact applicable count can be lower on a given repo because stack-specific checks are skipped when they do not apply.
|
|
267
291
|
|
|
268
292
|
| Category | Checks | Key items |
|
|
269
293
|
|----------|-------:|-----------|
|
|
270
|
-
| Memory | 8 | CLAUDE.md, architecture, conventions |
|
|
271
|
-
| Quality |
|
|
272
|
-
| Git Safety |
|
|
273
|
-
| Workflow |
|
|
274
|
-
| Security |
|
|
275
|
-
| Automation |
|
|
276
|
-
| Design |
|
|
277
|
-
| DevOps |
|
|
278
|
-
| Hygiene |
|
|
279
|
-
| Performance | 3 | context management, compaction |
|
|
280
|
-
| MCP |
|
|
281
|
-
| Prompting |
|
|
282
|
-
| Features |
|
|
283
|
-
| **Quality Deep** | **
|
|
294
|
+
| Memory | 8 | CLAUDE.md, architecture, conventions, imports |
|
|
295
|
+
| Quality | 6 | verification loops, test/lint/build, testing strategy |
|
|
296
|
+
| Git Safety | 6 | .gitignore, env protection, attribution, secret detection |
|
|
297
|
+
| Workflow | 12 | commands, skills, rules, agents, snapshots |
|
|
298
|
+
| Security | 7 | permissions, secrets, deny rules, sandbox awareness |
|
|
299
|
+
| Automation | 7 | hook coverage, specificity, session and error hooks |
|
|
300
|
+
| Design | 2 | frontend anti-slop guidance, styling signals |
|
|
301
|
+
| DevOps | 5 | Docker, CI, Terraform, infra signals |
|
|
302
|
+
| Hygiene | 8 | README, changelog, license, env example, version pinning |
|
|
303
|
+
| Performance | 3 | context management, compaction, effort level |
|
|
304
|
+
| MCP & Tools | 4 | servers, Context7, tool companions, env config |
|
|
305
|
+
| Prompting | 6 | constraints, examples, negative rules, style guidance |
|
|
306
|
+
| Features | 2 | channels, worktrees |
|
|
307
|
+
| **Quality Deep** | **9** | **freshness, contradictions, deprecated patterns, maxTurns, $ARGUMENTS, hook specificity** |
|
|
284
308
|
|
|
285
309
|
## Stack Detection
|
|
286
310
|
|
|
@@ -307,7 +331,7 @@ jobs:
|
|
|
307
331
|
runs-on: ubuntu-latest
|
|
308
332
|
steps:
|
|
309
333
|
- uses: actions/checkout@v4
|
|
310
|
-
- uses: DnaFin/claudex-setup@v1.
|
|
334
|
+
- uses: DnaFin/claudex-setup@v1.16.0
|
|
311
335
|
with:
|
|
312
336
|
threshold: 50
|
|
313
337
|
```
|
|
@@ -333,6 +357,14 @@ npx claudex-setup deep-review
|
|
|
333
357
|
|
|
334
358
|
Claude reads your actual config and gives specific feedback: what's strong, what has issues, what's missing for your stack. This is an AI-assisted review, not a local heuristic audit. Your config goes to the Anthropic API only when you run this command; we do not receive it.
|
|
335
359
|
|
|
360
|
+
Deep-review trust boundary:
|
|
361
|
+
|
|
362
|
+
- sends only selected Claude-facing config surfaces: `CLAUDE.md`, settings, commands, agents, rules, hooks, and package scripts
|
|
363
|
+
- truncates large files before sending
|
|
364
|
+
- redacts embedded secrets before sending
|
|
365
|
+
- treats embedded repo text as untrusted review data, not as instructions to follow
|
|
366
|
+
- keeps all non-`deep-review` flows local
|
|
367
|
+
|
|
336
368
|
### Quality-Deep Checks
|
|
337
369
|
|
|
338
370
|
The v0.4.0 quality-deep checks catch what basic audits miss:
|
|
@@ -355,7 +387,8 @@ These checks evaluate **quality**, not just existence. A well-configured project
|
|
|
355
387
|
|
|
356
388
|
- **Zero dependencies** - nothing extra to audit
|
|
357
389
|
- **Core flows run locally** - audit, setup, augment, plan, apply, governance, and benchmark run on your machine
|
|
358
|
-
- **Deep review is opt-in** - only `deep-review` sends selected config to Anthropic for analysis
|
|
390
|
+
- **Deep review is opt-in** - only `deep-review` sends selected config to Anthropic or your local Claude Code session for analysis
|
|
391
|
+
- **Deep review sanitizes before send** - selected snippets are truncated, secret-redacted, and wrapped as untrusted review data
|
|
359
392
|
- **Benchmark uses an isolated temp copy** - your live repo is not touched
|
|
360
393
|
- **Anonymous insights** - opt-in, no PII, no file contents (enable with `--insights`)
|
|
361
394
|
- **MIT Licensed** - use anywhere
|
package/bin/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ const { analyzeProject, printAnalysis, exportMarkdown } = require('../src/analyz
|
|
|
6
6
|
const { buildProposalBundle, printProposalBundle, writePlanFile, applyProposalBundle, printApplyResult } = require('../src/plans');
|
|
7
7
|
const { getGovernanceSummary, printGovernanceSummary, ensureWritableProfile, renderGovernanceMarkdown } = require('../src/governance');
|
|
8
8
|
const { runBenchmark, printBenchmark, writeBenchmarkReport } = require('../src/benchmark');
|
|
9
|
-
const { writeSnapshotArtifact } = require('../src/activity');
|
|
9
|
+
const { writeSnapshotArtifact, recordRecommendationOutcome, formatRecommendationOutcomeSummary, getRecommendationOutcomeSummary } = require('../src/activity');
|
|
10
10
|
const { version } = require('../package.json');
|
|
11
11
|
|
|
12
12
|
const args = process.argv.slice(2);
|
|
@@ -18,8 +18,9 @@ const COMMAND_ALIASES = {
|
|
|
18
18
|
starter: 'setup',
|
|
19
19
|
suggest: 'suggest-only',
|
|
20
20
|
gov: 'governance',
|
|
21
|
+
outcome: 'feedback',
|
|
21
22
|
};
|
|
22
|
-
const KNOWN_COMMANDS = ['audit', 'setup', 'augment', 'suggest-only', 'plan', 'apply', 'governance', 'benchmark', 'deep-review', 'interactive', 'watch', 'badge', 'insights', 'history', 'compare', 'trend', 'scan', 'help', 'version'];
|
|
23
|
+
const KNOWN_COMMANDS = ['audit', 'setup', 'augment', 'suggest-only', 'plan', 'apply', 'governance', 'benchmark', 'deep-review', 'interactive', 'watch', 'badge', 'insights', 'history', 'compare', 'trend', 'scan', 'feedback', 'help', 'version'];
|
|
23
24
|
|
|
24
25
|
function levenshtein(a, b) {
|
|
25
26
|
const matrix = Array.from({ length: a.length + 1 }, () => Array(b.length + 1).fill(0));
|
|
@@ -62,13 +63,19 @@ function parseArgs(rawArgs) {
|
|
|
62
63
|
let profile = 'safe-write';
|
|
63
64
|
let mcpPacks = [];
|
|
64
65
|
let requireChecks = [];
|
|
66
|
+
let feedbackKey = null;
|
|
67
|
+
let feedbackStatus = null;
|
|
68
|
+
let feedbackEffect = null;
|
|
69
|
+
let feedbackNotes = null;
|
|
70
|
+
let feedbackSource = null;
|
|
71
|
+
let feedbackScoreDelta = null;
|
|
65
72
|
let commandSet = false;
|
|
66
73
|
let extraArgs = [];
|
|
67
74
|
|
|
68
75
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
69
76
|
const arg = rawArgs[i];
|
|
70
77
|
|
|
71
|
-
if (arg === '--threshold' || arg === '--out' || arg === '--plan' || arg === '--only' || arg === '--profile' || arg === '--mcp-pack' || arg === '--require') {
|
|
78
|
+
if (arg === '--threshold' || arg === '--out' || arg === '--plan' || arg === '--only' || arg === '--profile' || arg === '--mcp-pack' || arg === '--require' || arg === '--key' || arg === '--status' || arg === '--effect' || arg === '--notes' || arg === '--source' || arg === '--score-delta') {
|
|
72
79
|
const value = rawArgs[i + 1];
|
|
73
80
|
if (!value || value.startsWith('--')) {
|
|
74
81
|
throw new Error(`${arg} requires a value`);
|
|
@@ -80,6 +87,12 @@ function parseArgs(rawArgs) {
|
|
|
80
87
|
if (arg === '--profile') profile = value.trim();
|
|
81
88
|
if (arg === '--mcp-pack') mcpPacks = value.split(',').map(item => item.trim()).filter(Boolean);
|
|
82
89
|
if (arg === '--require') requireChecks = value.split(',').map(item => item.trim()).filter(Boolean);
|
|
90
|
+
if (arg === '--key') feedbackKey = value.trim();
|
|
91
|
+
if (arg === '--status') feedbackStatus = value.trim();
|
|
92
|
+
if (arg === '--effect') feedbackEffect = value.trim();
|
|
93
|
+
if (arg === '--notes') feedbackNotes = value;
|
|
94
|
+
if (arg === '--source') feedbackSource = value.trim();
|
|
95
|
+
if (arg === '--score-delta') feedbackScoreDelta = value.trim();
|
|
83
96
|
i++;
|
|
84
97
|
continue;
|
|
85
98
|
}
|
|
@@ -119,6 +132,36 @@ function parseArgs(rawArgs) {
|
|
|
119
132
|
continue;
|
|
120
133
|
}
|
|
121
134
|
|
|
135
|
+
if (arg.startsWith('--key=')) {
|
|
136
|
+
feedbackKey = arg.split('=').slice(1).join('=').trim();
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (arg.startsWith('--status=')) {
|
|
141
|
+
feedbackStatus = arg.split('=').slice(1).join('=').trim();
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (arg.startsWith('--effect=')) {
|
|
146
|
+
feedbackEffect = arg.split('=').slice(1).join('=').trim();
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (arg.startsWith('--notes=')) {
|
|
151
|
+
feedbackNotes = arg.split('=').slice(1).join('=');
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (arg.startsWith('--source=')) {
|
|
156
|
+
feedbackSource = arg.split('=').slice(1).join('=').trim();
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (arg.startsWith('--score-delta=')) {
|
|
161
|
+
feedbackScoreDelta = arg.split('=').slice(1).join('=').trim();
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
|
|
122
165
|
if (arg.startsWith('--')) {
|
|
123
166
|
flags.push(arg);
|
|
124
167
|
continue;
|
|
@@ -134,7 +177,7 @@ function parseArgs(rawArgs) {
|
|
|
134
177
|
|
|
135
178
|
const normalizedCommand = COMMAND_ALIASES[command] || command;
|
|
136
179
|
|
|
137
|
-
return { flags, command, normalizedCommand, threshold, out, planFile, only, profile, mcpPacks, requireChecks, extraArgs };
|
|
180
|
+
return { flags, command, normalizedCommand, threshold, out, planFile, only, profile, mcpPacks, requireChecks, feedbackKey, feedbackStatus, feedbackEffect, feedbackNotes, feedbackSource, feedbackScoreDelta, extraArgs };
|
|
138
181
|
}
|
|
139
182
|
|
|
140
183
|
const HELP = `
|
|
@@ -166,8 +209,9 @@ const HELP = `
|
|
|
166
209
|
npx claudex-setup benchmark Before/after in isolated temp copy
|
|
167
210
|
npx claudex-setup deep-review AI-powered config review (opt-in, uses API)
|
|
168
211
|
npx claudex-setup interactive Step-by-step guided wizard
|
|
169
|
-
npx claudex-setup watch Live monitoring on config changes
|
|
212
|
+
npx claudex-setup watch Live monitoring on config changes with cross-platform watch fallback
|
|
170
213
|
npx claudex-setup badge Generate shields.io badge markdown
|
|
214
|
+
npx claudex-setup feedback Record recommendation outcomes or show local outcome summary
|
|
171
215
|
|
|
172
216
|
Options:
|
|
173
217
|
--threshold N Exit with code 1 if score is below N (useful for CI)
|
|
@@ -177,6 +221,12 @@ const HELP = `
|
|
|
177
221
|
--only A,B Limit plan/apply to selected proposal ids or technique keys
|
|
178
222
|
--profile NAME Choose permission profile (read-only, suggest-only, safe-write, power-user, internal-research)
|
|
179
223
|
--mcp-pack A,B Merge named MCP packs into generated settings (e.g. context7-docs,next-devtools)
|
|
224
|
+
--key NAME Recommendation key for feedback logging (e.g. permissionDeny)
|
|
225
|
+
--status VALUE Feedback status: accepted, rejected, deferred
|
|
226
|
+
--effect VALUE Feedback effect: positive, neutral, negative
|
|
227
|
+
--notes TEXT Short notes to store with a feedback event
|
|
228
|
+
--source NAME Source label for feedback event (default: manual-cli)
|
|
229
|
+
--score-delta N Optional observed score delta tied to the outcome
|
|
180
230
|
--snapshot Save a normalized snapshot artifact under .claude/claudex-setup/snapshots/
|
|
181
231
|
--lite Show a short top-3 quick scan with one clear next command
|
|
182
232
|
--dry-run Preview apply without writing files
|
|
@@ -203,6 +253,8 @@ const HELP = `
|
|
|
203
253
|
npx claudex-setup apply --profile power-user --only claude-md,hooks
|
|
204
254
|
npx claudex-setup governance --json
|
|
205
255
|
npx claudex-setup benchmark --out benchmark.md
|
|
256
|
+
npx claudex-setup feedback
|
|
257
|
+
npx claudex-setup feedback --key permissionDeny --status accepted --effect positive --score-delta 12
|
|
206
258
|
npx claudex-setup --json --threshold 60
|
|
207
259
|
npx claudex-setup setup --auto
|
|
208
260
|
npx claudex-setup interactive
|
|
@@ -439,6 +491,41 @@ async function main() {
|
|
|
439
491
|
console.log(' Insights request timed out. Run locally: npx claudex-setup');
|
|
440
492
|
});
|
|
441
493
|
return; // keep process alive for http
|
|
494
|
+
} else if (normalizedCommand === 'feedback') {
|
|
495
|
+
if (parsed.feedbackKey) {
|
|
496
|
+
if (!parsed.feedbackStatus) {
|
|
497
|
+
console.error('\n Error: feedback logging requires --status when --key is provided.\n');
|
|
498
|
+
process.exit(1);
|
|
499
|
+
}
|
|
500
|
+
const artifact = recordRecommendationOutcome(options.dir, {
|
|
501
|
+
key: parsed.feedbackKey,
|
|
502
|
+
status: parsed.feedbackStatus,
|
|
503
|
+
effect: parsed.feedbackEffect || 'neutral',
|
|
504
|
+
notes: parsed.feedbackNotes || '',
|
|
505
|
+
source: parsed.feedbackSource || 'manual-cli',
|
|
506
|
+
scoreDelta: parsed.feedbackScoreDelta !== null ? Number(parsed.feedbackScoreDelta) : null,
|
|
507
|
+
});
|
|
508
|
+
const summary = getRecommendationOutcomeSummary(options.dir);
|
|
509
|
+
if (options.json) {
|
|
510
|
+
console.log(JSON.stringify({ artifact, summary }, null, 2));
|
|
511
|
+
} else {
|
|
512
|
+
console.log('');
|
|
513
|
+
console.log(` Feedback recorded for ${parsed.feedbackKey}`);
|
|
514
|
+
console.log(` Artifact: ${artifact.relativePath}`);
|
|
515
|
+
console.log('');
|
|
516
|
+
console.log(formatRecommendationOutcomeSummary(options.dir));
|
|
517
|
+
console.log('');
|
|
518
|
+
}
|
|
519
|
+
} else {
|
|
520
|
+
if (options.json) {
|
|
521
|
+
console.log(JSON.stringify(getRecommendationOutcomeSummary(options.dir), null, 2));
|
|
522
|
+
} else {
|
|
523
|
+
console.log('');
|
|
524
|
+
console.log(formatRecommendationOutcomeSummary(options.dir));
|
|
525
|
+
console.log('');
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
process.exit(0);
|
|
442
529
|
} else if (normalizedCommand === 'augment' || normalizedCommand === 'suggest-only') {
|
|
443
530
|
const report = await analyzeProject({ ...options, mode: normalizedCommand });
|
|
444
531
|
const snapshot = options.snapshot ? writeSnapshotArtifact(options.dir, normalizedCommand, report, {
|
package/content/launch-posts.md
CHANGED
|
@@ -1,159 +1,226 @@
|
|
|
1
|
-
# Launch Posts —
|
|
1
|
+
# Launch Posts — Proof-Backed Distribution Assets
|
|
2
|
+
|
|
3
|
+
**Status:** Complete — every asset below is anchored in measured proof, a canonical artifact, or a verified runtime surface
|
|
4
|
+
**Date:** 2026-04-03
|
|
5
|
+
|
|
6
|
+
## Shared Proof Anchors
|
|
7
|
+
|
|
8
|
+
Use these links as the canonical sources behind public claims:
|
|
9
|
+
|
|
10
|
+
- Proof artifact index: https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
11
|
+
- CLAUDEX self-dogfood trace: https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/claudex-self-dogfood-proof-trace-2026-04-03.md
|
|
12
|
+
- VTCLE case study: https://github.com/DnaFin/claudex/blob/main/research/case-study-vtcle-2026-04-03.md
|
|
13
|
+
- Social case study: https://github.com/DnaFin/claudex/blob/main/research/case-study-social-2026-04-03.md
|
|
14
|
+
- Polymiro case study: https://github.com/DnaFin/claudex/blob/main/research/case-study-polymiro-2026-04-03.md
|
|
15
|
+
- Public proof metrics source: https://github.com/DnaFin/claudex/blob/main/research/claudex-proof-metrics-source-2026-04-03.md
|
|
16
|
+
|
|
17
|
+
Measured-result boundary to preserve:
|
|
18
|
+
|
|
19
|
+
- before/after scores were measured with `claudex-setup@1.10.3` on `2026-04-03`
|
|
20
|
+
- current npm latest is `1.16.0`
|
|
21
|
+
- current product surface is `85 checks`
|
|
2
22
|
|
|
3
23
|
## Post 1: Reddit r/ClaudeAI
|
|
4
24
|
|
|
5
|
-
**Title:** I built a
|
|
25
|
+
**Title:** I built a CLI that audits your Claude Code setup — 85 checks, measured on 4 real repos
|
|
6
26
|
|
|
7
27
|
**Body:**
|
|
8
|
-
|
|
28
|
+
I built a zero-dependency CLI that audits how well a repo is set up for Claude Code.
|
|
9
29
|
|
|
10
|
-
|
|
30
|
+
It checks `85` things across `CLAUDE.md`, hooks, commands, agents, skills, MCP config, permissions, diagrams, and verification loops.
|
|
11
31
|
|
|
12
|
-
|
|
32
|
+
Measured on `2026-04-03` with `claudex-setup@1.10.3`:
|
|
33
|
+
- CLAUDEX: `62 -> 90`
|
|
34
|
+
- VTCLE: `46 -> 64`
|
|
35
|
+
- Social: `40 -> 48`
|
|
36
|
+
- Polymiro: `35 -> 48`
|
|
37
|
+
|
|
38
|
+
```bash
|
|
13
39
|
npx claudex-setup
|
|
14
40
|
```
|
|
15
41
|
|
|
16
|
-
|
|
42
|
+
It starts trust-first:
|
|
43
|
+
- audit first
|
|
44
|
+
- plan / suggest-only before writes
|
|
45
|
+
- apply only what you approve
|
|
46
|
+
- rollback artifacts for every applied batch
|
|
17
47
|
|
|
18
|
-
Zero dependencies. No API keys. Runs
|
|
48
|
+
Zero dependencies. No API keys. Runs local.
|
|
19
49
|
|
|
20
50
|
GitHub: https://github.com/DnaFin/claudex-setup
|
|
21
51
|
|
|
22
|
-
|
|
52
|
+
Proof and case studies:
|
|
53
|
+
- https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
54
|
+
- https://github.com/DnaFin/claudex/blob/main/research/case-study-vtcle-2026-04-03.md
|
|
55
|
+
- https://github.com/DnaFin/claudex/blob/main/research/case-study-social-2026-04-03.md
|
|
56
|
+
- https://github.com/DnaFin/claudex/blob/main/research/case-study-polymiro-2026-04-03.md
|
|
57
|
+
|
|
58
|
+
Would love feedback on what checks or rollout surfaces are still missing.
|
|
59
|
+
|
|
60
|
+
**Evidence anchor:** proof artifact index + 3 external case studies + current proof source
|
|
23
61
|
|
|
24
62
|
---
|
|
25
63
|
|
|
26
64
|
## Post 2: Reddit r/ChatGPTCoding
|
|
27
65
|
|
|
28
|
-
**Title:**
|
|
66
|
+
**Title:** Most Claude Code repos are missing the safety layer, not the model
|
|
29
67
|
|
|
30
68
|
**Body:**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
The interesting problem with Claude Code is not "can it write code?".
|
|
70
|
+
It's "is the repo actually set up so Claude can work safely and predictably?".
|
|
71
|
+
|
|
72
|
+
I built `claudex-setup` to audit that surface:
|
|
73
|
+
- `85` checks
|
|
74
|
+
- zero dependencies
|
|
75
|
+
- local-only by default
|
|
76
|
+
- trust-first flow: audit -> plan -> apply -> rollback
|
|
77
|
+
|
|
78
|
+
Measured on 4 real repos:
|
|
79
|
+
- FastAPI repo: `46 -> 64`
|
|
80
|
+
- React Native repo: `40 -> 48`
|
|
81
|
+
- Python/Docker repo: `35 -> 48`
|
|
82
|
+
- research engine repo: `62 -> 90`
|
|
83
|
+
|
|
84
|
+
```bash
|
|
42
85
|
npx claudex-setup
|
|
43
86
|
```
|
|
44
87
|
|
|
45
|
-
|
|
88
|
+
The most common misses were not exotic:
|
|
89
|
+
- no deny rules
|
|
90
|
+
- no secrets protection
|
|
91
|
+
- no mermaid architecture
|
|
92
|
+
- no hooks registered in settings
|
|
93
|
+
|
|
94
|
+
Proof:
|
|
95
|
+
https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
46
96
|
|
|
47
|
-
|
|
97
|
+
**Evidence anchor:** measured before/after traces + common gap summary from public proof set
|
|
48
98
|
|
|
49
99
|
---
|
|
50
100
|
|
|
51
101
|
## Post 3: Dev.to Article
|
|
52
102
|
|
|
53
|
-
**Title:**
|
|
103
|
+
**Title:** What 4 Real Repos Taught Me About Claude Code Readiness
|
|
54
104
|
|
|
55
105
|
**Body (excerpt):**
|
|
56
|
-
I
|
|
106
|
+
I tested `claudex-setup` on 4 real repos and the pattern was clear:
|
|
57
107
|
|
|
58
|
-
|
|
108
|
+
- the best teams still miss permission deny rules
|
|
109
|
+
- mature repos often have hooks in files but not actually registered
|
|
110
|
+
- non-standard settings formats are a real adoption trap
|
|
111
|
+
- shared `settings.json` matters more than personal local overrides
|
|
59
112
|
|
|
60
|
-
|
|
113
|
+
Measured on `2026-04-03` with `claudex-setup@1.10.3`:
|
|
114
|
+
- CLAUDEX: `62 -> 90`
|
|
115
|
+
- VTCLE: `46 -> 64`
|
|
116
|
+
- Social: `40 -> 48`
|
|
117
|
+
- Polymiro: `35 -> 48`
|
|
61
118
|
|
|
62
|
-
|
|
119
|
+
The product today is strongest as:
|
|
63
120
|
|
|
64
|
-
|
|
121
|
+
`audit -> plan -> safe apply -> governance -> benchmark`
|
|
65
122
|
|
|
66
|
-
|
|
123
|
+
Not a code generator. Not an MCP installer. A trust layer for Claude Code repos.
|
|
67
124
|
|
|
68
|
-
|
|
125
|
+
Proof packet:
|
|
126
|
+
https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
69
127
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
7. **XML tags** — `<constraints>`, `<validation>` in CLAUDE.md = unambiguous instructions.
|
|
73
|
-
|
|
74
|
-
8. **Custom agents** — Security reviewer, test writer — specialized subagents for focused tasks.
|
|
75
|
-
|
|
76
|
-
9. **Skills** — Domain-specific workflows that load on demand, not every session.
|
|
77
|
-
|
|
78
|
-
10. **MCP servers** — Connect Claude to your database, ticket system, Slack.
|
|
79
|
-
|
|
80
|
-
I packaged this into a CLI that checks your project:
|
|
81
|
-
```
|
|
82
|
-
npx claudex-setup
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Full catalog: https://github.com/DnaFin/claudex-setup
|
|
128
|
+
**Evidence anchor:** proof artifact index + case-study docs + current proof source
|
|
86
129
|
|
|
87
130
|
---
|
|
88
131
|
|
|
89
132
|
## Post 4: Twitter/X Thread
|
|
90
133
|
|
|
91
134
|
**Tweet 1:**
|
|
92
|
-
I
|
|
93
|
-
|
|
94
|
-
Most projects use less than 5% of what Claude Code can do.
|
|
135
|
+
I built a zero-dependency CLI that audits Claude Code readiness across `85` checks.
|
|
95
136
|
|
|
96
|
-
|
|
137
|
+
Measured on 4 real repos:
|
|
138
|
+
- `62 -> 90`
|
|
139
|
+
- `46 -> 64`
|
|
140
|
+
- `40 -> 48`
|
|
141
|
+
- `35 -> 48`
|
|
97
142
|
|
|
98
|
-
npx claudex-setup
|
|
143
|
+
`npx claudex-setup`
|
|
99
144
|
|
|
100
|
-
|
|
145
|
+
Proof: github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
101
146
|
|
|
102
147
|
**Tweet 2:**
|
|
103
|
-
The
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
- Testing framework
|
|
109
|
-
- Project architecture
|
|
148
|
+
The most common misses were boring and important:
|
|
149
|
+
- no deny rules
|
|
150
|
+
- no secrets protection
|
|
151
|
+
- no mermaid diagram
|
|
152
|
+
- no hooks registered in settings
|
|
110
153
|
|
|
111
|
-
|
|
154
|
+
It is much more "trust layer" than "AI magic".
|
|
112
155
|
|
|
113
156
|
**Tweet 3:**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
157
|
+
What it does well today:
|
|
158
|
+
- audit first
|
|
159
|
+
- suggest / plan before writes
|
|
160
|
+
- apply selectively
|
|
161
|
+
- emit rollback artifacts
|
|
162
|
+
- benchmark on isolated copy
|
|
119
163
|
|
|
120
164
|
**Tweet 4:**
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
CLAUDE.md instructions = ~80% compliance
|
|
124
|
-
Hooks = 100% enforcement
|
|
165
|
+
Best result so far:
|
|
166
|
+
- CLAUDEX self-dogfood: `62 -> 90`
|
|
125
167
|
|
|
126
|
-
|
|
168
|
+
Best external proof:
|
|
169
|
+
- VTCLE: `46 -> 64`
|
|
127
170
|
|
|
128
|
-
|
|
171
|
+
Case studies:
|
|
172
|
+
- github.com/DnaFin/claudex/blob/main/research/case-study-vtcle-2026-04-03.md
|
|
173
|
+
- github.com/DnaFin/claudex/blob/main/research/case-study-social-2026-04-03.md
|
|
174
|
+
- github.com/DnaFin/claudex/blob/main/research/case-study-polymiro-2026-04-03.md
|
|
129
175
|
|
|
130
176
|
**Tweet 5:**
|
|
131
|
-
|
|
177
|
+
Measured results were captured on `claudex-setup@1.10.3` on `2026-04-03`.
|
|
178
|
+
Current npm latest is `1.16.0`, so exact scores can move slightly, but the proof packet is explicit about that boundary.
|
|
132
179
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
Scores 0-100. Shows what's missing. Auto-fixes with `setup`.
|
|
136
|
-
|
|
137
|
-
Free. Open source. Zero dependencies.
|
|
138
|
-
|
|
139
|
-
https://github.com/DnaFin/claudex-setup
|
|
180
|
+
**Evidence anchor:** proof artifact index + per-repo traces
|
|
140
181
|
|
|
141
182
|
---
|
|
142
183
|
|
|
143
184
|
## Post 5: Hacker News (Show HN)
|
|
144
185
|
|
|
145
|
-
**Title:** Show HN: claudex-setup
|
|
186
|
+
**Title:** Show HN: claudex-setup — audit Claude Code readiness with 85 checks
|
|
146
187
|
|
|
147
188
|
**Body:**
|
|
148
|
-
I built a CLI
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
189
|
+
I built a CLI that audits how well a repo is set up for Claude Code.
|
|
190
|
+
|
|
191
|
+
This is not a code-quality linter and not an MCP installer.
|
|
192
|
+
It focuses on Claude workflow quality:
|
|
193
|
+
- `CLAUDE.md`
|
|
194
|
+
- hooks
|
|
195
|
+
- commands
|
|
196
|
+
- agents
|
|
197
|
+
- skills
|
|
198
|
+
- MCP config
|
|
199
|
+
- permissions / deny rules
|
|
200
|
+
- diagrams
|
|
201
|
+
- verification loops
|
|
202
|
+
|
|
203
|
+
Core workflow:
|
|
204
|
+
- `npx claudex-setup`
|
|
205
|
+
- `npx claudex-setup suggest-only`
|
|
206
|
+
- `npx claudex-setup plan`
|
|
207
|
+
- `npx claudex-setup apply`
|
|
208
|
+
- `npx claudex-setup benchmark`
|
|
209
|
+
|
|
210
|
+
Measured on 4 real repos on `2026-04-03` with `claudex-setup@1.10.3`:
|
|
211
|
+
- CLAUDEX: `62 -> 90`
|
|
212
|
+
- VTCLE: `46 -> 64`
|
|
213
|
+
- Social: `40 -> 48`
|
|
214
|
+
- Polymiro: `35 -> 48`
|
|
215
|
+
|
|
216
|
+
Trust decisions that mattered:
|
|
217
|
+
- zero dependencies
|
|
218
|
+
- audit before write
|
|
219
|
+
- rollback artifacts
|
|
220
|
+
- cross-platform Node hooks
|
|
221
|
+
- explicit proof packets instead of vague claims
|
|
222
|
+
|
|
223
|
+
Proof packet:
|
|
224
|
+
https://github.com/DnaFin/claudex/blob/main/research/proof-artifacts/README.md
|
|
225
|
+
|
|
226
|
+
**Evidence anchor:** proof artifact index + current npm proof source
|