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.
@@ -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
- **Phase scope honest summary**:
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 — `opusplan` for cost-conscious SDLC, or `claude-opus-4-6` for full flagship.
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 (opusplan or flagship) rather than per-turn auto-selection.
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
- > - **[o] OpusPlan** *(recommended for cost-conscious SDLC):* Pins `model: "opusplan"`. Opus plans (Shift+Tab), Sonnet executes. Both 200K, Max-bundled. No API credit drain (#390).
251
- > - **[f] Flagship full** *(recommended for complex / high-stakes):* Pins `model: "claude-opus-4-6"`. Opus 4.6 max everywhere. Max-bundled (auto-upgrades to 1M on Max plans).
252
- > - **[l] Latest** *(opt-in bleeding-edge):* Pins `model: "claude-opus-4-8"`. Effort: always max (#395).
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/f/l]`
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 `o` (opusplan):** Edit `.claude/settings.json` and add:
256
+ **If the user answers `s` (Sonnet 5 + Fable):** Edit `.claude/settings.json` and add:
259
257
 
260
258
  ```json
261
259
  {
262
- "model": "opusplan",
263
- "advisorModel": "claude-opus-4-6",
260
+ "model": "sonnet",
261
+ "advisorModel": "fable",
262
+ "effortLevel": "high",
264
263
  "env": {
265
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
266
- "CLAUDE_CODE_EFFORT_LEVEL": "max"
264
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
267
265
  }
268
266
  }
269
267
  ```
270
268
 
271
- Tell the user: "Opus reasons during Plan Mode (Shift+Tab), Sonnet executes. Both Max-bundled at 200K no API credit drain. The Opus advisor auto-compensates for Sonnet's lighter reasoning at key decision points. Cross-model reviews still run at GPT-5.5 xhigh. Requires CC v2.1.170+ — run `! claude update` if needed."
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 `f` (flagship):** Edit `.claude/settings.json` and add:
271
+ **If the user answers `o` (opusplan):** Edit `.claude/settings.json` and add:
274
272
 
275
273
  ```json
276
274
  {
277
- "model": "claude-opus-4-6",
278
- "advisorModel": "fable",
275
+ "model": "opusplan",
276
+ "advisorModel": "claude-opus-4-8",
279
277
  "env": {
280
- "CLAUDE_CODE_EFFORT_LEVEL": "max",
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.6 max everywhere with Fable 5 advisor. Fable auto-consults at key decision points (architecture, complexity, blast-radius). On Max plans, Opus auto-upgrades to 1M context the autocompact override prevents early compaction at ~76K. Requires CC v2.1.170+ — run `! claude update` if needed."
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 `l` (latest):** Edit `.claude/settings.json` and add:
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-8",
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: "Always max effort on all Claude models (#395) with Fable 5 advisor. Fable auto-consults at key decision points. Requires CC v2.1.170+ — run `! claude update` if needed. Escape hatch: change `model` back to `claude-opus-4-6` or remove to fall back to auto-mode."
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` block) from `.claude/settings.json`, or run `/model` and pick "Default (recommended)".
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 (flagship only), consider `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=60` — compact early to stay fast.
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 `[o]`, `[f]`, or `[l]`), ask once:**
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:** Flagship, OpusPlan, and Latest 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.
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
@@ -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
- Parse CHANGELOG entries between the user's installed version and latest. Present a clear summary:
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.82.0
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
- - [1.58.0] ground-truth gate for E2E benchmark (#96 Phase 2) — `tests/e2e/ground-truth.sh` runs `npm test` post-sim; final score capped at 5 if tests fail. Catches "agent followed protocol but produced broken code"
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 Step 7.7 fires on match.
130
- - **With `check-only`**: Run Step 7.7 in detection-only mode — report any dead plugin registrations, but do NOT prompt and do NOT mutate `~/.claude/settings.json`. Then say "You're up to date! (version X.X.X)" and stop.
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 max + 1M, OK with no auto-selection
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-6"`. Ask `[a/S]`, write only `advisorModel` if accepted.
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