agentic-sdlc-wizard 1.82.0 → 1.84.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/AI_SETUP_LANES.md +84 -74
- package/CHANGELOG.md +37 -0
- package/CLAUDE_CODE_SDLC_WIZARD.md +141 -92
- package/README.md +19 -29
- package/cli/init.js +3 -0
- package/cli/lib/repo-complexity.js +5 -5
- package/cli/templates/settings.json +23 -0
- package/hooks/codex-gate-check.sh +60 -0
- package/hooks/codex-review-stop-check.sh +67 -0
- package/hooks/hooks.json +19 -0
- package/hooks/model-effort-check.sh +22 -11
- package/hooks/tdd-pretool-check.sh +40 -1
- package/package.json +1 -1
- package/skills/sdlc/SKILL.md +25 -20
- package/skills/setup/SKILL.md +32 -32
- package/skills/update/SKILL.md +20 -13
package/skills/setup/SKILL.md
CHANGED
|
@@ -130,11 +130,7 @@ Default if no response: **A** (dual-maintain). Document the user's choice as a o
|
|
|
130
130
|
|
|
131
131
|
**If NO `AGENTS.md` exists**: skip this step silently. Phase (b) of #205 (offer to ALSO generate AGENTS.md alongside CLAUDE.md) is deferred — not in v1.42.0 scope.
|
|
132
132
|
|
|
133
|
-
**
|
|
134
|
-
- Phase (a) — DONE in v1.42.0: detection + decision surfacing only.
|
|
135
|
-
- Phase (b) — deferred: write/symlink AGENTS.md when generating CLAUDE.md fresh.
|
|
136
|
-
- Phase (c) — partial: this step IS the setup-skill update.
|
|
137
|
-
- Phase (d) — deferred: cross-document-consistency drift test.
|
|
133
|
+
**Scope**: phase (a) only — detection + surfacing (v1.42.0). Phases (b) symlink-write, (c) partial (this step), (d) drift test are deferred.
|
|
138
134
|
|
|
139
135
|
### Step 5: Generate SDLC.md
|
|
140
136
|
|
|
@@ -228,9 +224,11 @@ Present suggestions and let the user confirm.
|
|
|
228
224
|
|
|
229
225
|
### Step 9.5: Context Window + Mixed-Mode Configuration (Opt-In)
|
|
230
226
|
|
|
231
|
-
The CLI ships `cli/templates/settings.json` with **no** `model` or `env` pin by default. This preserves Claude Code's built-in model auto-selection. Power users can opt into a pin during setup — `
|
|
227
|
+
The CLI ships `cli/templates/settings.json` with **no** `model` or `env` pin by default. This preserves Claude Code's built-in model auto-selection. Power users can opt into a pin during setup — see `AI_SETUP_LANES.md` for the full lane comparison (Setup A: Sonnet 5 + Fable, recommended if pinning at all; Setup B: Opus 4.6 Stability, legacy flagship; Setup C: OpusPlan Hybrid).
|
|
232
228
|
|
|
233
|
-
**Why this is opt-in (issue #198):** A top-level `"model"` in `settings.json` disables auto-mode for the session. Pinning is only worth it when you want consistent model behavior
|
|
229
|
+
**Why this is opt-in (issue #198):** A top-level `"model"` in `settings.json` disables auto-mode for the session. Pinning is only worth it when you want consistent model behavior rather than per-turn auto-selection.
|
|
230
|
+
|
|
231
|
+
**Check for global `[1m]` model pin (#391):** Read `~/.claude/settings.json`. If `model` contains `[1m]`, warn: global pin forces 1M on every repo; headless surfaces bill against credits after June 15. Offer `[r] Remove / [k] Keep`. If `r`: delete the `model` key.
|
|
234
232
|
|
|
235
233
|
**Run the complexity heuristic first (roadmap #233):**
|
|
236
234
|
|
|
@@ -246,67 +244,67 @@ The output is JSON: `{ tier: "simple" | "complex", score, signals }`. Use the re
|
|
|
246
244
|
>
|
|
247
245
|
> How do you want to configure the model for this repo?
|
|
248
246
|
>
|
|
249
|
-
> - **[N] No pin (default):** Auto-mode. CC picks model per turn. Simplest.
|
|
250
|
-
> - **[
|
|
251
|
-
> - **[
|
|
252
|
-
> - **[
|
|
247
|
+
> - **[N] No pin (default):** Auto-mode. CC picks model per turn. Simplest, no advisor.
|
|
248
|
+
> - **[s] Sonnet 5 + Fable** *(Setup A — recommended if you want a pin):* Pins `model: "sonnet"`, `advisorModel: "fable"`. Native 1M context, no `[1m]` suffix needed. Beats Opus 4.6 on every coding benchmark at ~5x less Max quota per turn. Effort: `high`, escalate to `xhigh` for hard tasks.
|
|
249
|
+
> - **[o] OpusPlan Hybrid** *(Setup C — cost-conscious, still want Opus reasoning):* Pins `model: "opusplan"`. Opus 4.8 plans (Shift+Tab), Sonnet 5 executes. Max-bundled. No API credit drain (#390).
|
|
250
|
+
> - **[b] Opus 4.6 Stability** *(Setup B — legacy flagship, proven consistency for high-stakes/complex repos):* Pins `model: "claude-opus-4-6"`. Opus 4.6 max everywhere. Max-bundled (auto-upgrades to 1M on Max plans).
|
|
253
251
|
>
|
|
254
|
-
> `[N/o/
|
|
252
|
+
> `[N/s/o/b]`
|
|
255
253
|
|
|
256
254
|
**If the user answers `N` (default):** Make no edits to `.claude/settings.json`. Auto-mode stays on. Done.
|
|
257
255
|
|
|
258
|
-
**If the user answers `
|
|
256
|
+
**If the user answers `s` (Sonnet 5 + Fable):** Edit `.claude/settings.json` and add:
|
|
259
257
|
|
|
260
258
|
```json
|
|
261
259
|
{
|
|
262
|
-
"model": "
|
|
263
|
-
"advisorModel": "
|
|
260
|
+
"model": "sonnet",
|
|
261
|
+
"advisorModel": "fable",
|
|
262
|
+
"effortLevel": "high",
|
|
264
263
|
"env": {
|
|
265
|
-
"
|
|
266
|
-
"CLAUDE_CODE_EFFORT_LEVEL": "max"
|
|
264
|
+
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
|
|
267
265
|
}
|
|
268
266
|
}
|
|
269
267
|
```
|
|
270
268
|
|
|
271
|
-
Tell the user: "
|
|
269
|
+
Tell the user: "Sonnet 5 + Fable — the wizard's recommended pin (Setup A). Effort defaults to `high`, escalate via `/effort xhigh` for hard tasks. Requires CC v2.1.170+ — run `! claude update` if needed."
|
|
272
270
|
|
|
273
|
-
**If the user answers `
|
|
271
|
+
**If the user answers `o` (opusplan):** Edit `.claude/settings.json` and add:
|
|
274
272
|
|
|
275
273
|
```json
|
|
276
274
|
{
|
|
277
|
-
"model": "
|
|
278
|
-
"advisorModel": "
|
|
275
|
+
"model": "opusplan",
|
|
276
|
+
"advisorModel": "claude-opus-4-8",
|
|
279
277
|
"env": {
|
|
280
|
-
"
|
|
281
|
-
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
|
|
278
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-8"
|
|
282
279
|
}
|
|
283
280
|
}
|
|
284
281
|
```
|
|
285
282
|
|
|
286
|
-
Tell the user: "Opus 4.
|
|
283
|
+
Tell the user: "Opus 4.8 plans (Shift+Tab), Sonnet 5 executes — both Max-bundled, no API credit drain (Setup C). Set effort per-session with `/effort` rather than a shell-rc env var. Requires CC v2.1.170+ — run `! claude update` if needed."
|
|
287
284
|
|
|
288
|
-
**If the user answers `
|
|
285
|
+
**If the user answers `b` (Opus 4.6 Stability):** Edit `.claude/settings.json` and add:
|
|
289
286
|
|
|
290
287
|
```json
|
|
291
288
|
{
|
|
292
|
-
"model": "claude-opus-4-
|
|
289
|
+
"model": "claude-opus-4-6",
|
|
293
290
|
"advisorModel": "fable",
|
|
294
291
|
"env": {
|
|
295
|
-
"CLAUDE_CODE_EFFORT_LEVEL": "max"
|
|
292
|
+
"CLAUDE_CODE_EFFORT_LEVEL": "max",
|
|
293
|
+
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
|
|
296
294
|
}
|
|
297
295
|
}
|
|
298
296
|
```
|
|
299
297
|
|
|
300
|
-
Tell the user: "
|
|
298
|
+
Tell the user: "Opus 4.6 max everywhere with Fable advisor — legacy flagship (Setup B), still valid for proven consistency on high-stakes work. `max` is Opus 4.6's own sweet spot (no `xhigh` support), so a persistent env pin is fine here, unlike other models. Requires CC v2.1.170+ — run `! claude update` if needed."
|
|
301
299
|
|
|
302
300
|
Mention the escape hatch in all four cases:
|
|
303
|
-
- To opt out later: remove the `model` line (and optionally the `env`
|
|
301
|
+
- To opt out later: remove the `model` line (and optionally the `env`/`effortLevel` keys) from `.claude/settings.json`, or run `/model` and pick "Default (recommended)".
|
|
304
302
|
- To switch tiers later: edit `.claude/settings.json` and replace the `model` value, or re-run `/setup-wizard` Step 9.5.
|
|
305
|
-
- For CI pipelines with short tasks (
|
|
303
|
+
- For CI pipelines with short tasks (Setup B only), consider `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60` — compact early to stay fast.
|
|
306
304
|
|
|
307
305
|
This is project-scoped and shared with the team via git.
|
|
308
306
|
|
|
309
|
-
**After writing project settings (for `[
|
|
307
|
+
**After writing project settings (for `[s]`, `[o]`, or `[b]`), ask once:**
|
|
310
308
|
|
|
311
309
|
> Also set `advisorModel` in your global `~/.claude/settings.json`?
|
|
312
310
|
> (Applies advisor to ALL your projects. Project-level always overrides.)
|
|
@@ -314,10 +312,12 @@ This is project-scoped and shared with the team via git.
|
|
|
314
312
|
|
|
315
313
|
Default No. If yes, read `~/.claude/settings.json`, add/update only the `advisorModel` key (do NOT touch other keys), write back. This is the only global settings mutation in setup besides Step 7.7's dead plugin cleanup.
|
|
316
314
|
|
|
317
|
-
**Note:**
|
|
315
|
+
**Note:** Sonnet 5, OpusPlan, and Opus 4.6 Stability choices include an advisor model that auto-consults at key decision points. Requires CC v2.1.170+ — run `! claude update` from inside a CC session if needed.
|
|
318
316
|
|
|
319
317
|
### Step 10: Customize Hooks
|
|
320
318
|
|
|
319
|
+
If `.claude/hooks/` has fewer than 9 files, hooks were never installed — tell the user to run `npx agentic-sdlc-wizard@latest init` first (the wizard doc's hook code blocks are illustrative, not a full template set).
|
|
320
|
+
|
|
321
321
|
Update `tdd-pretool-check.sh` with the actual source directory (replace generic `/src/` pattern).
|
|
322
322
|
|
|
323
323
|
### Step 11: Verify Setup
|
package/skills/update/SKILL.md
CHANGED
|
@@ -89,18 +89,20 @@ Extract latest version from the first `## [X.X.X]` line.
|
|
|
89
89
|
|
|
90
90
|
### Step 3: Compare Versions and Show What Changed
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
**Resolve "latest installable" from npm registry (#405):** Compare the npm registry version (Step 1.5 cache) to the CHANGELOG heading version (Step 2). Use the **lower** of the two as "latest installable" — this prevents showing a version that isn't yet published to npm during the publish window. If CHANGELOG is ahead of npm, note: "v{changelog} is on GitHub but not yet published to npm; showing v{npm} as latest installable."
|
|
93
|
+
|
|
94
|
+
Parse CHANGELOG entries between the user's installed version and the resolved latest installable. Present a clear summary:
|
|
93
95
|
|
|
94
96
|
```
|
|
95
97
|
Installed: 1.42.0
|
|
96
|
-
Latest: 1.
|
|
98
|
+
Latest: 1.84.0
|
|
97
99
|
|
|
98
100
|
What changed:
|
|
101
|
+
- [1.84.0] Hook enforcement fix: cross-model review gate + TDD RED gate now actually block (#436); model-aware effort docs replace blanket max recommendation.
|
|
102
|
+
- [1.83.0] Model config batch: multi-model hook recommendation (#403), global [1m] pin detection (#391), version race fix (#405), effort config check (#384).
|
|
99
103
|
- [1.82.0] Usage diagnostics: fix /usage row, Reading Usage Signals guide, advisor fallback procedure, Fable effort guidance, autocompact cross-reference.
|
|
100
104
|
- [1.81.0] Native `advisorModel` support: Setup A gets Fable advisor, Setup B gets Opus advisor. Replaces manual subagent spawning. Requires CC v2.1.170+.
|
|
101
105
|
- [1.80.0] Flip default: Opus 4.6 max becomes recommended flagship; Opus 4.8 demoted to opt-in `[l] Latest` tier.
|
|
102
|
-
- [1.79.0] Opus 4.6 Stability tier added as flagship alternative (now graduated to default in 1.80.0).
|
|
103
|
-
- [1.78.0] Opus 4.7 → 4.8 model recommendation (#365) + min CC v2.1.154+.
|
|
104
106
|
- [1.77.0] release-dry-run.yml + cc-version-drift.yml (#350) + /goal SDLC gates (95% + DLC binding).
|
|
105
107
|
- [1.76.0] /goal /sdlc wrapper (#347) + CC v2.1.150 feature adoption + ROADMAP demand-signal gate (4 excise, 4 kill).
|
|
106
108
|
- [1.75.1] release-workflow fix — Node 22 → 24 (ships npm 11.x), dropped flaky `npm install -g` self-upgrade (hit MODULE_NOT_FOUND on v1.75.0 publish). Explicit npm-version guard.
|
|
@@ -115,19 +117,15 @@ What changed:
|
|
|
115
117
|
- [1.61.0] calibration scenarios for #96 Phase 3 PR 2 — `tests/e2e/scenarios/calibration-careful-read.md` (parsePrice with 5 edge-case formats) tests whether self-review catches missed requirements. Score delta between SDLC and naive agents on this scenario is a calibration signal for `lift-proof.sh`
|
|
116
118
|
- [1.60.0] wizard-installation lift-proof harness (#96 Phase 3 PR 1) — `tests/e2e/lift-proof.sh` runs same scenario on bare vs wizard-installed fixture, emits score delta. Closes the "does the wizard work?" question. Honestly zero-API (sim + eval on Max)
|
|
117
119
|
- [1.59.0] evaluator on Max via `claude --print` (#228) — `EVAL_USE_CLI=1` swaps `evaluate.sh`'s per-criterion judge transport from `curl` → API to `claude --print --output-format json`. local-shepherd.sh sets it by default, so the local path is honestly zero-API
|
|
118
|
-
|
|
119
|
-
- [1.57.0] de-coach E2E benchmark prompt (#96 Phase 1) — remove answer-key leakage that saturated benchmark scores at 10/10; new neutral task framing measures organic SDLC behavior
|
|
120
|
-
- [1.56.0] community feature-discovery fetcher (#207) — `tests/e2e/fetch-community.sh` pulls Reddit + HN; pipe to `scan-community.sh` to surface candidate /slash-commands
|
|
121
|
-
- [1.55.0–1.51.0] ROADMAP #231 weekly-update.yml dismantle (Phase 2 → Phase 4): five releases, each deleting a cron-API job in favor of manual local-Max replacements. End state: weekly-update.yml shrunk from ~1670 → 161 lines (-90%), zero API spend, only `check-updates` release detection survives.
|
|
122
|
-
... (older entries omitted — read the full CHANGELOG.md for anything pre-1.51.0)
|
|
120
|
+
... (older entries omitted — read the full CHANGELOG.md for anything pre-1.59.0)
|
|
123
121
|
```
|
|
124
122
|
|
|
125
123
|
Read the actual entries from the fetched CHANGELOG; don't paraphrase. The user wants to see exactly what shipped.
|
|
126
124
|
|
|
127
125
|
**If versions match:** Step 7.7 (global plugin-registration cleanup) is independent of wizard file versions — it must run even when the user is up-to-date. The `check-only` flag still gates whether cleanup is *applied*:
|
|
128
126
|
|
|
129
|
-
- **Without `check-only`**: Run Step 7.7 in normal mode (detect, prompt, apply) before stopping. Then say "You're up to date! (version X.X.X)" and stop. Do not run Steps 4–10; only
|
|
130
|
-
- **With `check-only`**: Run Step 7.7 in detection-only mode — report
|
|
127
|
+
- **Without `check-only`**: Run Step 7.7 and Step 7.9 in normal mode (detect, prompt, apply) before stopping. Then say "You're up to date! (version X.X.X)" and stop. Do not run Steps 4–10; only Steps 7.7 and 7.9 fire on match.
|
|
128
|
+
- **With `check-only`**: Run Step 7.7 and Step 7.9 in detection-only mode — report findings but do NOT prompt and do NOT mutate settings. Then say "You're up to date! (version X.X.X)" and stop.
|
|
131
129
|
|
|
132
130
|
**If user passed `check-only` and versions don't match:** Stop after showing what changed. Do not apply anything.
|
|
133
131
|
|
|
@@ -174,7 +172,7 @@ Check user's `.claude/settings.json`:
|
|
|
174
172
|
1. **`model: "opus[1m]"` AND `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE: "30"`** — likely the old wizard-installed pair, not an intentional choice. Ask:
|
|
175
173
|
> Your `.claude/settings.json` pins `model: "opus[1m]"` with `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30`. This pair was the wizard default in 1.31.0–1.33.x, but it disables Claude Code's auto-mode (issue #198).
|
|
176
174
|
> - **Remove the pin** (recommended) — keeps auto-mode enabled
|
|
177
|
-
> - **Keep the pin** — guaranteed Opus 4.6
|
|
175
|
+
> - **Keep the pin** — guaranteed 1M on whichever Opus `opus[1m]` currently resolves to (now Opus 4.8, not 4.6 — swap to `claude-opus-4-6` if you want 4.6 specifically), OK with no auto-selection
|
|
178
176
|
> Remove, keep, or decide later? `[r/k/l]`
|
|
179
177
|
|
|
180
178
|
2. **Only one of the two fields matches** — treat as intentional customization. Do not prompt.
|
|
@@ -234,7 +232,16 @@ If `cli/init.js` later adds wizard marketplace names, append verbatim.
|
|
|
234
232
|
|
|
235
233
|
If CC < v2.1.170: show "Run `! claude update` to upgrade" and skip. If `.claude/settings.json` already has `advisorModel` or no `model` pin: skip.
|
|
236
234
|
|
|
237
|
-
If `model` pin exists but no `advisorModel`, suggest: `claude-opus-4-6`/`claude-opus-4-8` → `advisorModel: "fable"`, `opusplan` → `advisorModel: "claude-opus-4-
|
|
235
|
+
If `model` pin exists but no `advisorModel`, suggest per driver: `sonnet`/`claude-opus-4-6`/`claude-opus-4-8` → `advisorModel: "fable"`, `opusplan` → `advisorModel: "claude-opus-4-8"`. Ask `[a/S]`, write only `advisorModel` if accepted.
|
|
236
|
+
|
|
237
|
+
### Step 7.9: Effort Configuration Check (#384)
|
|
238
|
+
|
|
239
|
+
Runs regardless of version match (like Step 7.7). `check-only`: report only. Effort is model-aware (v1.84.0+, see `AI_SETUP_LANES.md`), not blanket `max` — this step detects the anti-pattern, doesn't push everyone toward `max`.
|
|
240
|
+
|
|
241
|
+
1. Read `model` from the settings cascade to find the driver. No pin / `sonnet` / `opusplan` = Sonnet 5; `claude-opus-4-6` = Opus 4.6; `claude-opus-4-8` = Opus 4.8.
|
|
242
|
+
2. **Opus 4.6 driver:** `CLAUDE_CODE_EFFORT_LEVEL=max` in the project's `env` block → pass (silent; `max` is 4.6's actual sweet spot, no `xhigh`). If only `effortLevel: "max"` is set in `settings.json` (not the env var) → warn: CC ignores session-only `max` in settings, only the env var actually persists it — suggest moving it into the `env` block instead. Unset entirely or below `max` → suggest `/effort max` + that env entry.
|
|
243
|
+
3. **Sonnet 5 or Opus 4.8 driver:** `CLAUDE_CODE_EFFORT_LEVEL=max` set anywhere → warn. This is the exact incident that motivated this check: a stale `max` env var silently overrides `/effort xhigh` after switching off Opus 4.6. Recommend removing it and using `/effort` per-session instead. Unset → pass (silent).
|
|
244
|
+
4. Never suggest a shell-rc (`.zshrc`/`.bashrc`) export — only the project's `env` block, and only for Opus 4.6.
|
|
238
245
|
|
|
239
246
|
### Step 8: Apply Selected Changes
|
|
240
247
|
|