claude-devkit-cli 1.1.1 → 1.2.2
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 +60 -60
- package/package.json +1 -1
- package/src/commands/init.js +3 -3
- package/src/commands/upgrade.js +20 -3
- package/src/lib/installer.js +6 -6
- package/templates/.claude/CLAUDE.md +5 -5
- package/templates/.claude/commands/{challenge.md → mf-challenge.md} +2 -2
- package/templates/.claude/commands/{commit.md → mf-commit.md} +1 -1
- package/templates/.claude/commands/{fix.md → mf-fix.md} +1 -1
- package/templates/.claude/commands/{plan.md → mf-plan.md} +2 -2
- package/templates/.claude/commands/{review.md → mf-review.md} +1 -1
- package/templates/.claude/commands/{test.md → mf-test.md} +1 -1
- package/templates/docs/WORKFLOW.md +23 -23
package/README.md
CHANGED
|
@@ -63,16 +63,16 @@ npx claude-devkit-cli init .
|
|
|
63
63
|
claude
|
|
64
64
|
|
|
65
65
|
# 3. Create your first spec and test plan
|
|
66
|
-
/plan "describe your feature here"
|
|
66
|
+
/mf-plan "describe your feature here"
|
|
67
67
|
|
|
68
68
|
# 4. Write code, then test
|
|
69
|
-
/test
|
|
69
|
+
/mf-test
|
|
70
70
|
|
|
71
71
|
# 5. Review before merging
|
|
72
|
-
/review
|
|
72
|
+
/mf-review
|
|
73
73
|
|
|
74
74
|
# 6. Commit
|
|
75
|
-
/commit
|
|
75
|
+
/mf-commit
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
That's it. The CLI auto-detects your project type and configures everything.
|
|
@@ -136,12 +136,12 @@ your-project/
|
|
|
136
136
|
│ │ ├── sensitive-guard.sh ← Blocks access to secrets
|
|
137
137
|
│ │ └── self-review.sh ← Quality checklist on stop
|
|
138
138
|
│ └── commands/
|
|
139
|
-
│ ├── plan.md
|
|
140
|
-
│ ├── challenge.md
|
|
141
|
-
│ ├── test.md
|
|
142
|
-
│ ├── fix.md
|
|
143
|
-
│ ├── review.md
|
|
144
|
-
│ └── commit.md
|
|
139
|
+
│ ├── mf-plan.md ← /mf-plan command
|
|
140
|
+
│ ├── mf-challenge.md ← /mf-challenge command
|
|
141
|
+
│ ├── mf-test.md ← /mf-test command
|
|
142
|
+
│ ├── mf-fix.md ← /mf-fix command
|
|
143
|
+
│ ├── mf-review.md ← /mf-review command
|
|
144
|
+
│ └── mf-commit.md ← /mf-commit command
|
|
145
145
|
├── scripts/
|
|
146
146
|
│ └── build-test.sh ← Universal test runner
|
|
147
147
|
└── docs/
|
|
@@ -196,21 +196,21 @@ This removes hooks, commands, settings, and build-test.sh. It preserves `CLAUDE.
|
|
|
196
196
|
> When: Building something new — no existing code or spec.
|
|
197
197
|
|
|
198
198
|
```
|
|
199
|
-
1. /plan "description of the feature"
|
|
199
|
+
1. /mf-plan "description of the feature"
|
|
200
200
|
→ Generates spec + test plan. Review both.
|
|
201
201
|
|
|
202
202
|
2. Implement code in chunks.
|
|
203
|
-
After each chunk: /test
|
|
203
|
+
After each chunk: /mf-test
|
|
204
204
|
Repeat until green.
|
|
205
205
|
|
|
206
|
-
3. /review (before merge)
|
|
206
|
+
3. /mf-review (before merge)
|
|
207
207
|
|
|
208
|
-
4. /commit
|
|
208
|
+
4. /mf-commit
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
**Example:**
|
|
212
212
|
```
|
|
213
|
-
/plan "User authentication with email/password login, password reset via email, and session management with 24h expiry"
|
|
213
|
+
/mf-plan "User authentication with email/password login, password reset via email, and session management with 24h expiry"
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
### Update Existing Feature
|
|
@@ -220,14 +220,14 @@ This removes hooks, commands, settings, and build-test.sh. It preserves `CLAUDE.
|
|
|
220
220
|
```
|
|
221
221
|
1. Edit the spec first: docs/specs/<feature>.md
|
|
222
222
|
|
|
223
|
-
2. /plan docs/specs/<feature>.md
|
|
223
|
+
2. /mf-plan docs/specs/<feature>.md
|
|
224
224
|
→ Updates the test plan with new/modified/removed cases.
|
|
225
225
|
|
|
226
226
|
3. Implement the code change.
|
|
227
|
-
/test
|
|
227
|
+
/mf-test
|
|
228
228
|
Fix until green.
|
|
229
229
|
|
|
230
|
-
4. /review → /commit
|
|
230
|
+
4. /mf-review → /mf-commit
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
### Bug Fix
|
|
@@ -235,15 +235,15 @@ This removes hooks, commands, settings, and build-test.sh. It preserves `CLAUDE.
|
|
|
235
235
|
> When: Something is broken.
|
|
236
236
|
|
|
237
237
|
```
|
|
238
|
-
1. /fix "description of the bug"
|
|
238
|
+
1. /mf-fix "description of the bug"
|
|
239
239
|
→ Writes failing test → fixes code → runs full suite.
|
|
240
240
|
|
|
241
|
-
2. /commit
|
|
241
|
+
2. /mf-commit
|
|
242
242
|
```
|
|
243
243
|
|
|
244
244
|
**Example:**
|
|
245
245
|
```
|
|
246
|
-
/fix "Search returns no results when query contains apostrophes like O'Brien"
|
|
246
|
+
/mf-fix "Search returns no results when query contains apostrophes like O'Brien"
|
|
247
247
|
```
|
|
248
248
|
|
|
249
249
|
### Remove Feature
|
|
@@ -258,20 +258,20 @@ This removes hooks, commands, settings, and build-test.sh. It preserves `CLAUDE.
|
|
|
258
258
|
3. bash scripts/build-test.sh (run full suite)
|
|
259
259
|
Fix cascading breaks.
|
|
260
260
|
|
|
261
|
-
4. /commit
|
|
261
|
+
4. /mf-commit
|
|
262
262
|
```
|
|
263
263
|
|
|
264
264
|
---
|
|
265
265
|
|
|
266
266
|
## 5. Commands Reference
|
|
267
267
|
|
|
268
|
-
### /plan — Generate Spec + Test Plan
|
|
268
|
+
### /mf-plan — Generate Spec + Test Plan
|
|
269
269
|
|
|
270
270
|
**Usage:**
|
|
271
271
|
```
|
|
272
|
-
/plan docs/specs/auth.md # Mode A: from existing spec
|
|
273
|
-
/plan "user authentication with OAuth2" # Mode B: from description
|
|
274
|
-
/plan docs/specs/auth.md (after spec edit) # Mode C: update existing plan
|
|
272
|
+
/mf-plan docs/specs/auth.md # Mode A: from existing spec
|
|
273
|
+
/mf-plan "user authentication with OAuth2" # Mode B: from description
|
|
274
|
+
/mf-plan docs/specs/auth.md (after spec edit) # Mode C: update existing plan
|
|
275
275
|
```
|
|
276
276
|
|
|
277
277
|
**Modes:**
|
|
@@ -304,13 +304,13 @@ Priorities: **P0** (must have), **P1** (should have), **P2** (nice to have).
|
|
|
304
304
|
- Spec: `docs/specs/<feature>.md`
|
|
305
305
|
- Test plan: `docs/test-plans/<feature>.md`
|
|
306
306
|
|
|
307
|
-
### /challenge — Adversarial Plan Review
|
|
307
|
+
### /mf-challenge — Adversarial Plan Review
|
|
308
308
|
|
|
309
309
|
**Usage:**
|
|
310
310
|
```
|
|
311
|
-
/challenge docs/test-plans/auth.md # challenge a test plan
|
|
312
|
-
/challenge docs/specs/auth.md # challenge a spec
|
|
313
|
-
/challenge "user authentication" # challenge by feature name
|
|
311
|
+
/mf-challenge docs/test-plans/auth.md # challenge a test plan
|
|
312
|
+
/mf-challenge docs/specs/auth.md # challenge a spec
|
|
313
|
+
/mf-challenge "user authentication" # challenge by feature name
|
|
314
314
|
```
|
|
315
315
|
|
|
316
316
|
**How it works (7 phases):**
|
|
@@ -377,19 +377,19 @@ Priorities: **P0** (must have), **P1** (should have), **P2** (nice to have).
|
|
|
377
377
|
6. Skip style/formatting — substance only
|
|
378
378
|
|
|
379
379
|
**When to use:**
|
|
380
|
-
- After `/plan`, before coding — for complex features
|
|
380
|
+
- After `/mf-plan`, before coding — for complex features
|
|
381
381
|
- Features involving auth, payments, data pipelines, multi-service integration
|
|
382
382
|
- NOT needed for simple CRUD, small bug fixes, or trivial features
|
|
383
383
|
|
|
384
384
|
**Token cost:** 15-30k (uses parallel subagents, doesn't bloat main context)
|
|
385
385
|
|
|
386
|
-
### /test — Write + Run Tests
|
|
386
|
+
### /mf-test — Write + Run Tests
|
|
387
387
|
|
|
388
388
|
**Usage:**
|
|
389
389
|
```
|
|
390
|
-
/test # test all changes vs base branch
|
|
391
|
-
/test src/api/users.ts # test specific file
|
|
392
|
-
/test "user authentication" # test specific feature
|
|
390
|
+
/mf-test # test all changes vs base branch
|
|
391
|
+
/mf-test src/api/users.ts # test specific file
|
|
392
|
+
/mf-test "user authentication" # test specific feature
|
|
393
393
|
```
|
|
394
394
|
|
|
395
395
|
**How it works:**
|
|
@@ -409,11 +409,11 @@ Priorities: **P0** (must have), **P1** (should have), **P2** (nice to have).
|
|
|
409
409
|
|
|
410
410
|
**What NOT to test:** Private/internal methods, framework behavior, trivial getters/setters, implementation details.
|
|
411
411
|
|
|
412
|
-
### /fix — Test-First Bug Fix
|
|
412
|
+
### /mf-fix — Test-First Bug Fix
|
|
413
413
|
|
|
414
414
|
**Usage:**
|
|
415
415
|
```
|
|
416
|
-
/fix "description of the bug"
|
|
416
|
+
/mf-fix "description of the bug"
|
|
417
417
|
```
|
|
418
418
|
|
|
419
419
|
**How it works:**
|
|
@@ -427,12 +427,12 @@ Priorities: **P0** (must have), **P1** (should have), **P2** (nice to have).
|
|
|
427
427
|
|
|
428
428
|
**Multiple bugs:** Triages by severity, fixes one at a time, commits each separately.
|
|
429
429
|
|
|
430
|
-
### /review — Pre-Merge Quality Gate
|
|
430
|
+
### /mf-review — Pre-Merge Quality Gate
|
|
431
431
|
|
|
432
432
|
**Usage:**
|
|
433
433
|
```
|
|
434
|
-
/review # review all changes vs base branch
|
|
435
|
-
/review src/auth/ # review specific directory
|
|
434
|
+
/mf-review # review all changes vs base branch
|
|
435
|
+
/mf-review src/auth/ # review specific directory
|
|
436
436
|
```
|
|
437
437
|
|
|
438
438
|
**How it works:**
|
|
@@ -461,11 +461,11 @@ Priorities: **P0** (must have), **P1** (should have), **P2** (nice to have).
|
|
|
461
461
|
- Never auto-fixes code — report only
|
|
462
462
|
- Checks spec-test alignment: code changed → spec/tests also changed? Vague requirements without metrics ("fast", "secure") get flagged with a suggestion to add concrete numbers
|
|
463
463
|
|
|
464
|
-
### /commit — Smart Git Commit
|
|
464
|
+
### /mf-commit — Smart Git Commit
|
|
465
465
|
|
|
466
466
|
**Usage:**
|
|
467
467
|
```
|
|
468
|
-
/commit
|
|
468
|
+
/mf-commit
|
|
469
469
|
```
|
|
470
470
|
|
|
471
471
|
**How it works:**
|
|
@@ -749,7 +749,7 @@ Skip sections that don't apply. Match depth to feature complexity.
|
|
|
749
749
|
|
|
750
750
|
### Test Plan Format
|
|
751
751
|
|
|
752
|
-
Generated by `/plan` at `docs/test-plans/<feature-name>.md`:
|
|
752
|
+
Generated by `/mf-plan` at `docs/test-plans/<feature-name>.md`:
|
|
753
753
|
|
|
754
754
|
```markdown
|
|
755
755
|
# Test Plan: <Feature Name>
|
|
@@ -817,8 +817,8 @@ Create new `.md` files in `.claude/commands/`:
|
|
|
817
817
|
# .claude/commands/deploy.md
|
|
818
818
|
|
|
819
819
|
Run the deployment pipeline:
|
|
820
|
-
1. /review
|
|
821
|
-
2. /commit
|
|
820
|
+
1. /mf-review
|
|
821
|
+
2. /mf-commit
|
|
822
822
|
3. Run: bash scripts/deploy.sh $ARGUMENTS
|
|
823
823
|
4. Verify deployment health: curl -f https://api.example.com/health
|
|
824
824
|
```
|
|
@@ -831,20 +831,20 @@ Then use: `/deploy staging`
|
|
|
831
831
|
|
|
832
832
|
| Activity | Tokens | Frequency |
|
|
833
833
|
|----------|--------|-----------|
|
|
834
|
-
| `/test` (incremental, 1-3 files) | 5–10k | Every code chunk |
|
|
835
|
-
| `/fix` (single bug) | 3–5k | As needed |
|
|
836
|
-
| `/commit` | 2–4k | Every commit |
|
|
837
|
-
| `/review` (diff-based) | 10–20k | Before merge |
|
|
838
|
-
| `/plan` (new feature) | 20–40k | Start of feature |
|
|
839
|
-
| `/challenge` (adversarial review) | 15–30k | After /plan, complex features |
|
|
834
|
+
| `/mf-test` (incremental, 1-3 files) | 5–10k | Every code chunk |
|
|
835
|
+
| `/mf-fix` (single bug) | 3–5k | As needed |
|
|
836
|
+
| `/mf-commit` | 2–4k | Every commit |
|
|
837
|
+
| `/mf-review` (diff-based) | 10–20k | Before merge |
|
|
838
|
+
| `/mf-plan` (new feature) | 20–40k | Start of feature |
|
|
839
|
+
| `/mf-challenge` (adversarial review) | 15–30k | After /mf-plan, complex features |
|
|
840
840
|
| Full audit (manual prompt) | 100k+ | Before release |
|
|
841
841
|
|
|
842
842
|
### Minimizing Token Usage
|
|
843
843
|
|
|
844
|
-
- **Test incrementally.** `/test` after each small chunk uses 5-10k. Waiting until everything is done then running `/test` on a large diff uses 50k+.
|
|
845
|
-
- **Use filters.** `/test src/auth/login.ts` is cheaper than `/test` on the whole project.
|
|
846
|
-
- **Skip `/plan` for tiny changes.** Under 5 lines with no behavior change? Just `/test` and `/commit`.
|
|
847
|
-
- **Use `/review` only before merge.** Not after every commit.
|
|
844
|
+
- **Test incrementally.** `/mf-test` after each small chunk uses 5-10k. Waiting until everything is done then running `/mf-test` on a large diff uses 50k+.
|
|
845
|
+
- **Use filters.** `/mf-test src/auth/login.ts` is cheaper than `/mf-test` on the whole project.
|
|
846
|
+
- **Skip `/mf-plan` for tiny changes.** Under 5 lines with no behavior change? Just `/mf-test` and `/mf-commit`.
|
|
847
|
+
- **Use `/mf-review` only before merge.** Not after every commit.
|
|
848
848
|
|
|
849
849
|
---
|
|
850
850
|
|
|
@@ -871,7 +871,7 @@ Then use: `/deploy staging`
|
|
|
871
871
|
|
|
872
872
|
### Wrong base branch
|
|
873
873
|
|
|
874
|
-
**Symptom:** `/test` or `/review` compares against wrong branch.
|
|
874
|
+
**Symptom:** `/mf-test` or `/mf-review` compares against wrong branch.
|
|
875
875
|
|
|
876
876
|
**Check:**
|
|
877
877
|
```bash
|
|
@@ -901,19 +901,19 @@ export FILE_GUARD_EXCLUDE="*.generated.swift,*.pb.go,*.min.js,*.snap"
|
|
|
901
901
|
## 12. FAQ
|
|
902
902
|
|
|
903
903
|
**Q: Do I need specs for every tiny change?**
|
|
904
|
-
A: No. Changes under 5 lines with no behavior change can skip the spec. Just `/test` and `/commit`. The spec-first rule is for meaningful behavior changes.
|
|
904
|
+
A: No. Changes under 5 lines with no behavior change can skip the spec. Just `/mf-test` and `/mf-commit`. The spec-first rule is for meaningful behavior changes.
|
|
905
905
|
|
|
906
906
|
**Q: Can I use mocks in tests?**
|
|
907
907
|
A: Only for external services you can't run locally (third-party APIs, email services). Never mock your own code or database just to make tests pass faster.
|
|
908
908
|
|
|
909
909
|
**Q: What if Claude writes a test that tests the wrong thing?**
|
|
910
|
-
A: This usually means the spec is ambiguous. Clarify the spec first, then re-run `/test`. Good specs produce good tests.
|
|
910
|
+
A: This usually means the spec is ambiguous. Clarify the spec first, then re-run `/mf-test`. Good specs produce good tests.
|
|
911
911
|
|
|
912
912
|
**Q: Can I use this with other AI coding tools?**
|
|
913
913
|
A: The commands and hooks are Claude Code-specific. The specs, test plans, workflow, and `build-test.sh` work with any tool or manual workflow.
|
|
914
914
|
|
|
915
|
-
**Q: When should I use `/challenge`?**
|
|
916
|
-
A: After `/plan`, for complex features involving authentication, payments, data pipelines, or multi-service integration. It spawns parallel hostile reviewers that find security holes, failure modes, and false assumptions BEFORE you write code. Skip it for simple CRUD or small features — the overhead isn't worth it.
|
|
915
|
+
**Q: When should I use `/mf-challenge`?**
|
|
916
|
+
A: After `/mf-plan`, for complex features involving authentication, payments, data pipelines, or multi-service integration. It spawns parallel hostile reviewers that find security holes, failure modes, and false assumptions BEFORE you write code. Skip it for simple CRUD or small features — the overhead isn't worth it.
|
|
917
917
|
|
|
918
918
|
**Q: How do I do a full coverage audit?**
|
|
919
919
|
A: This is intentionally not a command (it's expensive and rare). When needed, prompt Claude directly: "Audit test coverage for feature X against docs/test-plans/X.md. Identify gaps and write missing tests."
|
package/package.json
CHANGED
package/src/commands/init.js
CHANGED
|
@@ -164,7 +164,7 @@ export async function initCommand(path, opts) {
|
|
|
164
164
|
console.log(' .claude/CLAUDE.md — Project rules (review and customize)');
|
|
165
165
|
console.log(' .claude/settings.json — Hook configuration');
|
|
166
166
|
console.log(' .claude/hooks/ — 6 guards (file, path, glob, comment, sensitive, self-review)');
|
|
167
|
-
console.log(' .claude/commands/ — /plan, /challenge, /test, /fix, /review, /commit');
|
|
167
|
+
console.log(' .claude/commands/ — /mf-plan, /mf-challenge, /mf-test, /mf-fix, /mf-review, /mf-commit');
|
|
168
168
|
console.log(' scripts/build-test.sh — Universal test runner');
|
|
169
169
|
console.log(' docs/WORKFLOW.md — Workflow reference');
|
|
170
170
|
log.blank();
|
|
@@ -176,8 +176,8 @@ export async function initCommand(path, opts) {
|
|
|
176
176
|
console.log('Next steps:');
|
|
177
177
|
console.log(' 1. Review .claude/CLAUDE.md — ensure project info is correct');
|
|
178
178
|
console.log(' 2. Write your first spec: docs/specs/<feature>.md');
|
|
179
|
-
console.log(' 3. Generate test plan: /plan docs/specs/<feature>.md');
|
|
180
|
-
console.log(' 4. Start coding + testing: /test');
|
|
179
|
+
console.log(' 3. Generate test plan: /mf-plan docs/specs/<feature>.md');
|
|
180
|
+
console.log(' 4. Start coding + testing: /mf-test');
|
|
181
181
|
log.blank();
|
|
182
182
|
|
|
183
183
|
if (warnings > 0) {
|
package/src/commands/upgrade.js
CHANGED
|
@@ -83,10 +83,25 @@ export async function upgradeCommand(path, opts) {
|
|
|
83
83
|
updated++;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
//
|
|
86
|
+
// Remove files in manifest that no longer exist in kit
|
|
87
|
+
let removed = 0;
|
|
87
88
|
for (const file of Object.keys(manifest.files)) {
|
|
88
89
|
if (!allFiles.includes(file)) {
|
|
89
|
-
|
|
90
|
+
const filePath = resolve(targetDir, file);
|
|
91
|
+
if (!opts.dryRun) {
|
|
92
|
+
try {
|
|
93
|
+
const { unlink } = await import('node:fs/promises');
|
|
94
|
+
await unlink(filePath);
|
|
95
|
+
delete manifest.files[file];
|
|
96
|
+
removed++;
|
|
97
|
+
log.del(file);
|
|
98
|
+
} catch {
|
|
99
|
+
log.warn(`${file} — no longer in kit (could not delete)`);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
log.del(`${file} (would remove)`);
|
|
103
|
+
removed++;
|
|
104
|
+
}
|
|
90
105
|
}
|
|
91
106
|
}
|
|
92
107
|
|
|
@@ -100,7 +115,9 @@ export async function upgradeCommand(path, opts) {
|
|
|
100
115
|
|
|
101
116
|
// Summary
|
|
102
117
|
log.blank();
|
|
103
|
-
|
|
118
|
+
const parts = [`Updated ${updated}`, `added ${added}`, `removed ${removed}`, `unchanged ${unchanged}`];
|
|
119
|
+
if (skippedCustomized > 0) parts.push(`skipped ${skippedCustomized} customized`);
|
|
120
|
+
log.pass(parts.join(', ') + '.');
|
|
104
121
|
|
|
105
122
|
if (skippedCustomized > 0) {
|
|
106
123
|
log.warn(`${skippedCustomized} customized file(s) skipped. Run with --force to overwrite.`);
|
package/src/lib/installer.js
CHANGED
|
@@ -20,12 +20,12 @@ export const COMPONENTS = {
|
|
|
20
20
|
'.claude/hooks/sensitive-guard.sh',
|
|
21
21
|
],
|
|
22
22
|
commands: [
|
|
23
|
-
'.claude/commands/plan.md',
|
|
24
|
-
'.claude/commands/challenge.md',
|
|
25
|
-
'.claude/commands/test.md',
|
|
26
|
-
'.claude/commands/fix.md',
|
|
27
|
-
'.claude/commands/review.md',
|
|
28
|
-
'.claude/commands/commit.md',
|
|
23
|
+
'.claude/commands/mf-plan.md',
|
|
24
|
+
'.claude/commands/mf-challenge.md',
|
|
25
|
+
'.claude/commands/mf-test.md',
|
|
26
|
+
'.claude/commands/mf-fix.md',
|
|
27
|
+
'.claude/commands/mf-review.md',
|
|
28
|
+
'.claude/commands/mf-commit.md',
|
|
29
29
|
],
|
|
30
30
|
config: [
|
|
31
31
|
'.claude/settings.json',
|
|
@@ -13,12 +13,12 @@ Every change follows this cycle: **SPEC → TEST PLAN → CODE + TESTS → BUILD
|
|
|
13
13
|
|
|
14
14
|
| Trigger | Commands | Details |
|
|
15
15
|
|---------|----------|---------|
|
|
16
|
-
| New feature | `/plan` → `/challenge` (optional) → code in chunks → `/test` each chunk | Start with spec or description |
|
|
17
|
-
| Update feature | Update spec first → `/plan` → code → `/test` | Spec changes before code changes |
|
|
18
|
-
| Bug fix | `/fix "description"` | Test-first: write failing test → fix → green |
|
|
16
|
+
| New feature | `/mf-plan` → `/mf-challenge` (optional) → code in chunks → `/mf-test` each chunk | Start with spec or description |
|
|
17
|
+
| Update feature | Update spec first → `/mf-plan` → code → `/mf-test` | Spec changes before code changes |
|
|
18
|
+
| Bug fix | `/mf-fix "description"` | Test-first: write failing test → fix → green |
|
|
19
19
|
| Remove feature | Mark spec as removed → delete code + tests → build pass | Run full suite after removal |
|
|
20
|
-
| Pre-merge check | `/review` | Diff-based quality gate |
|
|
21
|
-
| Commit changes | `/commit` | Secret scan + conventional commit |
|
|
20
|
+
| Pre-merge check | `/mf-review` | Diff-based quality gate |
|
|
21
|
+
| Commit changes | `/mf-commit` | Secret scan + conventional commit |
|
|
22
22
|
|
|
23
23
|
For detailed workflow steps, templates, and decision trees, see `docs/WORKFLOW.md`.
|
|
24
24
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
Adversarial review — spawn hostile reviewers to break the plan before coding.
|
|
2
2
|
|
|
3
3
|
## Input
|
|
4
4
|
|
|
@@ -195,7 +195,7 @@ Reviewers: N lenses
|
|
|
195
195
|
Findings: X total → Y accepted, Z rejected
|
|
196
196
|
Severity: N Critical, N High, N Medium
|
|
197
197
|
Files modified: [list]
|
|
198
|
-
Next: /test to implement, or /plan to regenerate if major changes.
|
|
198
|
+
Next: /mf-test to implement, or /mf-plan to regenerate if major changes.
|
|
199
199
|
```
|
|
200
200
|
|
|
201
201
|
If a reviewer returns > 7 findings, take only top 7 by severity. If a reviewer fails, proceed with remaining reviewers.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
Generate spec + test plan from description or existing spec.
|
|
2
2
|
|
|
3
3
|
## Determine mode
|
|
4
4
|
|
|
@@ -116,7 +116,7 @@ Write to `docs/test-plans/<feature-name>.md`:
|
|
|
116
116
|
## Phase 4: Summary
|
|
117
117
|
|
|
118
118
|
Show: test case counts (P0/P1/P2), implementation order, estimated scope.
|
|
119
|
-
Next steps: "Use `/test` after each chunk. For complex plans, run `/challenge` first."
|
|
119
|
+
Next steps: "Use `/mf-test` after each chunk. For complex plans, run `/mf-challenge` first."
|
|
120
120
|
|
|
121
121
|
## Naming Convention
|
|
122
122
|
|
|
@@ -11,24 +11,24 @@
|
|
|
11
11
|
When: Building something that doesn't exist yet (no code, no spec).
|
|
12
12
|
|
|
13
13
|
```
|
|
14
|
-
Step 1 → /plan "description of feature"
|
|
14
|
+
Step 1 → /mf-plan "description of feature"
|
|
15
15
|
Generates: docs/specs/<feature>.md (spec)
|
|
16
16
|
docs/test-plans/<feature>.md (test plan)
|
|
17
17
|
Answers validation questions about assumptions.
|
|
18
18
|
Review both before proceeding.
|
|
19
19
|
|
|
20
|
-
Step 2 → (Optional) /challenge docs/test-plans/<feature>.md
|
|
20
|
+
Step 2 → (Optional) /mf-challenge docs/test-plans/<feature>.md
|
|
21
21
|
Adversarial review: spawns hostile reviewers to find flaws.
|
|
22
22
|
Recommended for complex features, auth, data pipelines.
|
|
23
23
|
Skip for simple CRUD or small features.
|
|
24
24
|
|
|
25
25
|
Step 3 → Implement in chunks. After each chunk:
|
|
26
|
-
/test
|
|
26
|
+
/mf-test
|
|
27
27
|
Repeat until chunk is green.
|
|
28
28
|
|
|
29
|
-
Step 4 → /review (before merge)
|
|
29
|
+
Step 4 → /mf-review (before merge)
|
|
30
30
|
|
|
31
|
-
Step 5 → /commit
|
|
31
|
+
Step 5 → /mf-commit
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
### Update Existing Feature
|
|
@@ -39,14 +39,14 @@ When: Changing behavior, adding options, refactoring logic.
|
|
|
39
39
|
Step 1 → Update spec FIRST: docs/specs/<feature>.md
|
|
40
40
|
Describe what's changing and why.
|
|
41
41
|
|
|
42
|
-
Step 2 → /plan docs/specs/<feature>.md
|
|
42
|
+
Step 2 → /mf-plan docs/specs/<feature>.md
|
|
43
43
|
Updates the test plan with new/modified/removed test cases.
|
|
44
44
|
|
|
45
45
|
Step 3 → Implement code changes.
|
|
46
|
-
/test
|
|
46
|
+
/mf-test
|
|
47
47
|
Fix until green.
|
|
48
48
|
|
|
49
|
-
Step 4 → /review → /commit
|
|
49
|
+
Step 4 → /mf-review → /mf-commit
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### Bug Fix
|
|
@@ -54,10 +54,10 @@ Step 4 → /review → /commit
|
|
|
54
54
|
When: Something is broken and needs fixing.
|
|
55
55
|
|
|
56
56
|
```
|
|
57
|
-
Step 1 → /fix "description of the bug"
|
|
57
|
+
Step 1 → /mf-fix "description of the bug"
|
|
58
58
|
Writes failing test → fixes code → confirms green → runs full suite.
|
|
59
59
|
|
|
60
|
-
Step 2 → /commit
|
|
60
|
+
Step 2 → /mf-commit
|
|
61
61
|
|
|
62
62
|
Optional → If the bug reveals an undocumented edge case, update the spec.
|
|
63
63
|
```
|
|
@@ -75,7 +75,7 @@ Step 2 → Delete production code and related test code.
|
|
|
75
75
|
Step 3 → Run full test suite: bash scripts/build-test.sh
|
|
76
76
|
Fix any cascading breakage.
|
|
77
77
|
|
|
78
|
-
Step 4 → /commit
|
|
78
|
+
Step 4 → /mf-commit
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
---
|
|
@@ -86,20 +86,20 @@ Use this to decide which workflow to follow:
|
|
|
86
86
|
|
|
87
87
|
```
|
|
88
88
|
Is this a brand new feature (no existing spec or code)?
|
|
89
|
-
├─ Yes → New Feature workflow. Start with /plan.
|
|
89
|
+
├─ Yes → New Feature workflow. Start with /mf-plan.
|
|
90
90
|
│ └─ Is the feature complex (auth, data pipeline, multi-service)?
|
|
91
|
-
│ ├─ Yes → Run /challenge after /plan, before coding.
|
|
92
|
-
│ └─ No → Skip /challenge, go straight to implementation.
|
|
91
|
+
│ ├─ Yes → Run /mf-challenge after /mf-plan, before coding.
|
|
92
|
+
│ └─ No → Skip /mf-challenge, go straight to implementation.
|
|
93
93
|
└─ No
|
|
94
94
|
├─ Is this a bug fix?
|
|
95
|
-
│ ├─ Yes → Bug Fix workflow. Start with /fix.
|
|
95
|
+
│ ├─ Yes → Bug Fix workflow. Start with /mf-fix.
|
|
96
96
|
│ └─ No
|
|
97
97
|
│ ├─ Are you removing/deprecating code?
|
|
98
98
|
│ │ ├─ Yes → Remove Feature workflow.
|
|
99
99
|
│ │ └─ No → Update Feature workflow. Start by editing the spec.
|
|
100
100
|
│ │
|
|
101
101
|
│ └─ Is the change very small (< 5 lines, behavior unchanged)?
|
|
102
|
-
│ └─ Yes → Skip spec update. Just /test and /commit.
|
|
102
|
+
│ └─ Yes → Skip spec update. Just /mf-test and /mf-commit.
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
---
|
|
@@ -170,16 +170,16 @@ Files to delete: [list]
|
|
|
170
170
|
|
|
171
171
|
| Workflow | Estimated Tokens | When |
|
|
172
172
|
|----------|-----------------|------|
|
|
173
|
-
| `/test` (incremental) | 5–10k | Daily, after each code chunk |
|
|
174
|
-
| `/fix` (single bug) | 3–5k | As bugs arise |
|
|
175
|
-
| `/commit` | 2–4k | Each commit |
|
|
176
|
-
| `/review` (diff-based) | 10–20k | Before merge |
|
|
177
|
-
| `/plan` (new feature) | 20–40k | Start of new feature |
|
|
178
|
-
| `/challenge` (adversarial) | 15–30k | After /plan, for complex features |
|
|
173
|
+
| `/mf-test` (incremental) | 5–10k | Daily, after each code chunk |
|
|
174
|
+
| `/mf-fix` (single bug) | 3–5k | As bugs arise |
|
|
175
|
+
| `/mf-commit` | 2–4k | Each commit |
|
|
176
|
+
| `/mf-review` (diff-based) | 10–20k | Before merge |
|
|
177
|
+
| `/mf-plan` (new feature) | 20–40k | Start of new feature |
|
|
178
|
+
| `/mf-challenge` (adversarial) | 15–30k | After /mf-plan, for complex features |
|
|
179
179
|
| Full audit (manual) | 100k+ | Before release, quarterly |
|
|
180
180
|
|
|
181
181
|
**Rule of thumb:** Daily work uses templates + `/test` → low token cost.
|
|
182
|
-
Save `/plan` and full audits for significant milestones.
|
|
182
|
+
Save `/mf-plan` and full audits for significant milestones.
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|