claude-devkit-cli 1.3.0 → 1.3.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/package.json
CHANGED
|
@@ -173,11 +173,33 @@ Include 1-sentence rationale for each disposition. Be honest — don't reject va
|
|
|
173
173
|
|
|
174
174
|
Show adjudicated findings using the reviewer output format plus Disposition and Rationale fields.
|
|
175
175
|
|
|
176
|
-
Then
|
|
177
|
-
1. **"Apply all accepted"** — update the plan with all accepted fixes
|
|
178
|
-
2. **"Review each"** — walk through one by one, accept/reject/modify each
|
|
176
|
+
Then present the decision:
|
|
179
177
|
|
|
180
|
-
|
|
178
|
+
```
|
|
179
|
+
How to proceed with N accepted findings?
|
|
180
|
+
|
|
181
|
+
A) Apply all accepted — bulk-apply all fixes at once
|
|
182
|
+
Fit: N/10 | Trade-off: fast vs. no per-finding control
|
|
183
|
+
|
|
184
|
+
B) Review each — walk through one by one, accept/reject/modify
|
|
185
|
+
Fit: N/10 | Trade-off: precise control vs. slower
|
|
186
|
+
|
|
187
|
+
RECOMMENDATION: [A or B] — <reason based on finding count and severity>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Score Fit based on context: if most findings are High/Critical, recommend B (review each). If mostly Medium with clear fixes, recommend A.
|
|
191
|
+
|
|
192
|
+
If user picks B: for each finding, present:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Finding [C-1]: <title>
|
|
196
|
+
|
|
197
|
+
A) Accept — apply the suggested fix
|
|
198
|
+
B) Modify — accept with changes (describe your modification)
|
|
199
|
+
C) Reject — skip this finding
|
|
200
|
+
|
|
201
|
+
RECOMMENDATION: [A/B/C] — <based on your adjudication>
|
|
202
|
+
```
|
|
181
203
|
|
|
182
204
|
## Phase 7: Apply
|
|
183
205
|
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
Generate spec with acceptance scenarios from description or existing spec.
|
|
2
2
|
|
|
3
|
+
## Question Format
|
|
4
|
+
|
|
5
|
+
When presenting a question to the user with multiple options, ALWAYS use this structured format:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Q<N>: <Plain-language problem statement — what needs deciding and why>
|
|
9
|
+
|
|
10
|
+
A) <option> — <1-line rationale>
|
|
11
|
+
Fit: X/10 | Trade-off: <what you gain vs. lose>
|
|
12
|
+
|
|
13
|
+
B) <option> — <1-line rationale>
|
|
14
|
+
Fit: X/10 | Trade-off: <what you gain vs. lose>
|
|
15
|
+
|
|
16
|
+
C) <option> — <1-line rationale> (if applicable)
|
|
17
|
+
Fit: X/10 | Trade-off: <what you gain vs. lose>
|
|
18
|
+
|
|
19
|
+
RECOMMENDATION: [A/B/C] — <one-sentence reason>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Fit scoring calibration:**
|
|
23
|
+
- **9-10:** Covers the requirement fully, no meaningful downside.
|
|
24
|
+
- **7-8:** Solid choice, minor trade-offs that are acceptable for most projects.
|
|
25
|
+
- **5-6:** Workable but defers significant decisions or adds friction.
|
|
26
|
+
- **3-4:** Shortcut — gets past the question but creates debt.
|
|
27
|
+
- **1-2:** Placeholder only, must be revisited.
|
|
28
|
+
|
|
29
|
+
Rules:
|
|
30
|
+
- 2-4 options per question. Never more than 4.
|
|
31
|
+
- Every option must have a Fit score AND a Trade-off. No score without rationale.
|
|
32
|
+
- RECOMMENDATION is mandatory. Pick one. State why.
|
|
33
|
+
- If two options score within 1 point, flag it: "Close call — A and B are both strong. Leaning A because [reason]."
|
|
34
|
+
- Present all questions at once (not one-by-one) unless the answer to Q1 changes what Q2 should be.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
3
38
|
## Determine mode
|
|
4
39
|
|
|
5
40
|
Examine `$ARGUMENTS`:
|
|
@@ -78,7 +113,7 @@ Mode C does not run Phase 1 — it uses its own flow (see Mode C section).
|
|
|
78
113
|
| T6 | Splitting would duplicate >50% of context (entities, constraints) | DO NOT split |
|
|
79
114
|
|
|
80
115
|
"MUST" = mandatory split, inform user.
|
|
81
|
-
"SHOULD" = suggest split,
|
|
116
|
+
"SHOULD" = suggest split, present using **Question Format** with split vs. keep-together as options.
|
|
82
117
|
"DO NOT" = keep together, unless user requests split.
|
|
83
118
|
|
|
84
119
|
If splitting:
|
|
@@ -240,7 +275,22 @@ Before finalizing, scan the spec for gaps. Check BOTH the spec content AND the a
|
|
|
240
275
|
| Priority consistency | P0 story with only 1 happy path AS? |
|
|
241
276
|
| Constraint coverage | Which constraint has no AS verifying it? |
|
|
242
277
|
|
|
243
|
-
Identify the top 3-5 ambiguities (most impactful first).
|
|
278
|
+
Identify the top 3-5 ambiguities (most impactful first). Present each using the **Question Format** (see top of this file). Example:
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Q1: Auth strategy not specified — spec mentions "logged-in users" but no auth mechanism.
|
|
282
|
+
|
|
283
|
+
A) Session-based auth (cookie) — traditional, simple server-side
|
|
284
|
+
Fit: 8/10 | Trade-off: simple setup vs. harder to scale across services
|
|
285
|
+
|
|
286
|
+
B) JWT (stateless tokens) — API-friendly, no server session
|
|
287
|
+
Fit: 7/10 | Trade-off: scalable vs. token revocation complexity
|
|
288
|
+
|
|
289
|
+
C) Defer — add auth story later when auth requirements are clearer
|
|
290
|
+
Fit: 5/10 | Trade-off: unblocks now vs. may require spec rewrite later
|
|
291
|
+
|
|
292
|
+
RECOMMENDATION: A — single-service app, session auth is simplest path.
|
|
293
|
+
```
|
|
244
294
|
|
|
245
295
|
If 0 questions remain, you MUST state why — not just "spec is clear." Cite at minimum:
|
|
246
296
|
- **Edge cases checked:** which boundary conditions were considered and found covered.
|
|
@@ -375,6 +425,23 @@ Display to the user:
|
|
|
375
425
|
S-001, S-003
|
|
376
426
|
```
|
|
377
427
|
|
|
428
|
+
Present the decision using **Question Format**:
|
|
429
|
+
|
|
430
|
+
```
|
|
431
|
+
Q1: Apply these changes to <feature> spec?
|
|
432
|
+
|
|
433
|
+
A) Apply all — accept the full change report as shown
|
|
434
|
+
Fit: N/10 | Trade-off: fast vs. no per-item control
|
|
435
|
+
|
|
436
|
+
B) Review each — walk through changes one by one, accept/reject/modify
|
|
437
|
+
Fit: N/10 | Trade-off: precise control vs. slower
|
|
438
|
+
|
|
439
|
+
C) Reject all — discard and start over
|
|
440
|
+
Fit: N/10 | Trade-off: clean slate vs. loses work
|
|
441
|
+
|
|
442
|
+
RECOMMENDATION: [A or B] — <reason based on change count and complexity>
|
|
443
|
+
```
|
|
444
|
+
|
|
378
445
|
> **⛔ MUST wait for user confirmation before applying.**
|
|
379
446
|
> Do not show the report and apply in the same step.
|
|
380
447
|
> User has the right to reject or modify the change report.
|
|
@@ -46,17 +46,35 @@ COMMAND=$(extract_command "$INPUT") || exit 0
|
|
|
46
46
|
BLOCKED="(^|[ /])node_modules(/|$| )"
|
|
47
47
|
BLOCKED+="|(__pycache__)"
|
|
48
48
|
BLOCKED+="|\.git/(objects|refs)"
|
|
49
|
-
BLOCKED+="|(^|[ /])dist
|
|
50
|
-
BLOCKED+="|(^|[ /])build
|
|
49
|
+
BLOCKED+="|(^|[ /])dist/"
|
|
50
|
+
BLOCKED+="|(^|[ /])build/"
|
|
51
51
|
BLOCKED+="|\.next/"
|
|
52
52
|
BLOCKED+="|(^|[ /])vendor(/|$| )"
|
|
53
53
|
BLOCKED+="|(^|[ /])Pods(/|$| )"
|
|
54
54
|
BLOCKED+="|\.build/"
|
|
55
55
|
BLOCKED+="|DerivedData"
|
|
56
56
|
BLOCKED+="|\.gradle/"
|
|
57
|
-
BLOCKED+="|
|
|
57
|
+
BLOCKED+="|(^|[ /])target/"
|
|
58
58
|
BLOCKED+="|\.nuget"
|
|
59
59
|
BLOCKED+="|\.cache(/|$| )"
|
|
60
|
+
# Python
|
|
61
|
+
BLOCKED+="|(^|[ /])\.venv/"
|
|
62
|
+
BLOCKED+="|(^|[ /])venv/"
|
|
63
|
+
BLOCKED+="|\.mypy_cache/"
|
|
64
|
+
BLOCKED+="|\.pytest_cache/"
|
|
65
|
+
BLOCKED+="|\.ruff_cache/"
|
|
66
|
+
BLOCKED+="|\.egg-info(/|$| )"
|
|
67
|
+
# C# .NET (match .NET-specific subdirs to avoid false positives on generic bin/)
|
|
68
|
+
BLOCKED+="|(^|[ /])bin/(Debug|Release|net|x64|x86)"
|
|
69
|
+
BLOCKED+="|(^|[ /])obj/(Debug|Release|net)"
|
|
70
|
+
# Node.js frameworks
|
|
71
|
+
BLOCKED+="|\.nuxt/"
|
|
72
|
+
BLOCKED+="|\.svelte-kit/"
|
|
73
|
+
BLOCKED+="|\.parcel-cache/"
|
|
74
|
+
BLOCKED+="|\.turbo/"
|
|
75
|
+
BLOCKED+="|(^|[ /])out/(server|static|_next)"
|
|
76
|
+
# Ruby
|
|
77
|
+
BLOCKED+="|\.bundle/"
|
|
60
78
|
|
|
61
79
|
# Append project-specific patterns from env
|
|
62
80
|
if [[ -n "${PATH_GUARD_EXTRA:-}" ]]; then
|