agentic-sdlc-wizard 1.83.0 → 1.85.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,9 @@ 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.
234
230
 
235
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.
236
232
 
@@ -248,67 +244,67 @@ The output is JSON: `{ tier: "simple" | "complex", score, signals }`. Use the re
248
244
  >
249
245
  > How do you want to configure the model for this repo?
250
246
  >
251
- > - **[N] No pin (default):** Auto-mode. CC picks model per turn. Simplest.
252
- > - **[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).
253
- > - **[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).
254
- > - **[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).
255
251
  >
256
- > `[N/o/f/l]`
252
+ > `[N/s/o/b]`
257
253
 
258
254
  **If the user answers `N` (default):** Make no edits to `.claude/settings.json`. Auto-mode stays on. Done.
259
255
 
260
- **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:
261
257
 
262
258
  ```json
263
259
  {
264
- "model": "opusplan",
265
- "advisorModel": "claude-opus-4-6",
260
+ "model": "sonnet",
261
+ "advisorModel": "fable",
262
+ "effortLevel": "high",
266
263
  "env": {
267
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
268
- "CLAUDE_CODE_EFFORT_LEVEL": "max"
264
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
269
265
  }
270
266
  }
271
267
  ```
272
268
 
273
- 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."
274
270
 
275
- **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:
276
272
 
277
273
  ```json
278
274
  {
279
- "model": "claude-opus-4-6",
280
- "advisorModel": "fable",
275
+ "model": "opusplan",
276
+ "advisorModel": "claude-opus-4-8",
281
277
  "env": {
282
- "CLAUDE_CODE_EFFORT_LEVEL": "max",
283
- "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
278
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-8"
284
279
  }
285
280
  }
286
281
  ```
287
282
 
288
- 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."
289
284
 
290
- **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:
291
286
 
292
287
  ```json
293
288
  {
294
- "model": "claude-opus-4-8",
289
+ "model": "claude-opus-4-6",
295
290
  "advisorModel": "fable",
296
291
  "env": {
297
- "CLAUDE_CODE_EFFORT_LEVEL": "max"
292
+ "CLAUDE_CODE_EFFORT_LEVEL": "max",
293
+ "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
298
294
  }
299
295
  }
300
296
  ```
301
297
 
302
- 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."
303
299
 
304
300
  Mention the escape hatch in all four cases:
305
- - 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)".
306
302
  - To switch tiers later: edit `.claude/settings.json` and replace the `model` value, or re-run `/setup-wizard` Step 9.5.
307
- - 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.
308
304
 
309
305
  This is project-scoped and shared with the team via git.
310
306
 
311
- **After writing project settings (for `[o]`, `[f]`, or `[l]`), ask once:**
307
+ **After writing project settings (for `[s]`, `[o]`, or `[b]`), ask once:**
312
308
 
313
309
  > Also set `advisorModel` in your global `~/.claude/settings.json`?
314
310
  > (Applies advisor to ALL your projects. Project-level always overrides.)
@@ -316,10 +312,12 @@ This is project-scoped and shared with the team via git.
316
312
 
317
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.
318
314
 
319
- **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.
320
316
 
321
317
  ### Step 10: Customize Hooks
322
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
+
323
321
  Update `tdd-pretool-check.sh` with the actual source directory (replace generic `/src/` pattern).
324
322
 
325
323
  ### Step 11: Verify Setup
@@ -95,17 +95,16 @@ Parse CHANGELOG entries between the user's installed version and the resolved la
95
95
 
96
96
  ```
97
97
  Installed: 1.42.0
98
- Latest: 1.83.0
98
+ Latest: 1.85.0
99
99
 
100
100
  What changed:
101
+ - [1.85.0] Post-ship retrospective fixes: CI Feedback Loop synced to SKILL.md's stronger version (NEVER AUTO-MERGE, read-logs-even-when-green, cross-model CI audit), CERTIFIED≠CI lesson, Policy Migration Inventory checklist, stale round-count correction (#437 hook-staleness fix follows separately).
102
+ - [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.
101
103
  - [1.83.0] Model config batch: multi-model hook recommendation (#403), global [1m] pin detection (#391), version race fix (#405), effort config check (#384).
102
104
  - [1.82.0] Usage diagnostics: fix /usage row, Reading Usage Signals guide, advisor fallback procedure, Fable effort guidance, autocompact cross-reference.
103
105
  - [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+.
104
106
  - [1.80.0] Flip default: Opus 4.6 max becomes recommended flagship; Opus 4.8 demoted to opt-in `[l] Latest` tier.
105
- - [1.79.0] Opus 4.6 Stability tier added as flagship alternative (now graduated to default in 1.80.0).
106
- - [1.78.0] Opus 4.7 → 4.8 model recommendation (#365) + min CC v2.1.154+.
107
107
  - [1.77.0] release-dry-run.yml + cc-version-drift.yml (#350) + /goal SDLC gates (95% + DLC binding).
108
- - [1.76.0] /goal /sdlc wrapper (#347) + CC v2.1.150 feature adoption + ROADMAP demand-signal gate (4 excise, 4 kill).
109
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.
110
109
  - [1.75.0] npm Trusted Publishing — `release.yml` swapped from `NPM_TOKEN` to OIDC. No more token rotation. Requires one-time publisher config on the npm package page.
111
110
  - [1.74.0] v1.43 salvage: #338 precedence preamble; #235ab `/insights`; codex `< /dev/null` stdin-hang fix; test env-isolation.
@@ -118,11 +117,7 @@ What changed:
118
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`
119
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)
120
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
121
- - [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"
122
- - [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
123
- - [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
124
- - [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.
125
- ... (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)
126
121
  ```
127
122
 
128
123
  Read the actual entries from the fetched CHANGELOG; don't paraphrase. The user wants to see exactly what shipped.
@@ -177,7 +172,7 @@ Check user's `.claude/settings.json`:
177
172
  1. **`model: "opus[1m]"` AND `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE: "30"`** — likely the old wizard-installed pair, not an intentional choice. Ask:
178
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).
179
174
  > - **Remove the pin** (recommended) — keeps auto-mode enabled
180
- > - **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
181
176
  > Remove, keep, or decide later? `[r/k/l]`
182
177
 
183
178
  2. **Only one of the two fields matches** — treat as intentional customization. Do not prompt.
@@ -237,16 +232,16 @@ If `cli/init.js` later adds wizard marketplace names, append verbatim.
237
232
 
238
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.
239
234
 
240
- 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.
241
236
 
242
237
  ### Step 7.9: Effort Configuration Check (#384)
243
238
 
244
- Runs regardless of version match (like Step 7.7). In `check-only` mode: report only, no mutations.
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`.
245
240
 
246
- 1. Check `CLAUDE_CODE_EFFORT_LEVEL` env var. If set to `max`: **pass** (silent this is the correct persistence path).
247
- 2. If env var is unset, check `effortLevel` in settings cascade (`.claude/settings.local.json` → `.claude/settings.json` → `~/.claude/settings.json`).
248
- 3. If `effortLevel` is `max` but `CLAUDE_CODE_EFFORT_LEVEL` env var is unset: warn that CC ignores session-only max in settings only the env var persists it. Suggest adding to the `env` block in `.claude/settings.json`.
249
- 4. If effort is unset or below `max`: warn "SDLC requires max effort" and suggest `/effort max` + env var persistence.
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.
250
245
 
251
246
  ### Step 8: Apply Selected Changes
252
247