agentic-sdlc-wizard 1.80.0 → 1.82.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.
@@ -13,7 +13,7 @@
13
13
  "name": "sdlc-wizard",
14
14
  "source": ".",
15
15
  "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
16
- "version": "1.80.0",
16
+ "version": "1.82.0",
17
17
  "author": {
18
18
  "name": "Stefan Ayala"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdlc-wizard",
3
- "version": "1.80.0",
3
+ "version": "1.82.0",
4
4
  "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
5
5
  "author": {
6
6
  "name": "Stefan Ayala",
@@ -0,0 +1,217 @@
1
+ # AI Setup Lanes
2
+
3
+ Three recommended AI coding setups for this repo. Setups A and B are complete triads: **planner → driver → reviewer**. Setup C is a lightweight driver-only lane for operational grunt work.
4
+
5
+ This is **guidance, not a hard rule**. Maintainer override is always allowed.
6
+
7
+ ## Setup A — Claude Premium
8
+
9
+ | Role | Model |
10
+ |------|-------|
11
+ | **Advisor** | Fable 5 (via `advisorModel: "fable"` in project settings — auto-consults at key decisions) |
12
+ | **Driver** | Opus 4.6 max |
13
+ | **Reviewer** | Codex (GPT-5.5) xhigh |
14
+ | **Escalation** | + Fable 5 review (security, releases, wide-blast architecture only) |
15
+
16
+ Quality-first lane. Fable 5 advises automatically at key decision points (architecture, complexity, blast-radius) via native `advisorModel` (v2.1.170+), Opus 4.6 max implements (stable, Max-bundled), GPT-5.5 xhigh reviews (cross-family, free on ChatGPT sub, catches blind spots Fable can't see in its own work). Escalate to Fable review for the ~5% of PRs where stakes justify it.
17
+
18
+ **Effort levels:** Opus driver at `max` (standing default). Fable advisor runs at its own effort level server-side. If switching driver to Fable temporarily (fallback), use `/effort high` — Fable `high` already exceeds prior models at `max`. Unset `CLAUDE_CODE_EFFORT_LEVEL` env var if it forces `max`.
19
+
20
+ ## Setup B — Claude Saver (OpusPlan)
21
+
22
+ | Role | Model |
23
+ |------|-------|
24
+ | **Planner** | Opus 4.6 max (via Plan Mode — Shift+Tab) |
25
+ | **Advisor** | Opus 4.6 (via `advisorModel: "claude-opus-4-6"` — compensates for Sonnet driver) |
26
+ | **Driver** | Sonnet (latest, auto execute mode) |
27
+ | **Reviewer** | Codex (GPT-5.5) xhigh |
28
+
29
+ Cost-efficient lane using CC's native `opusplan` alias. Opus reasons during Plan Mode (Shift+Tab), Sonnet executes. Both 200K context, Max-bundled — no API credit drain. Pin `model: "opusplan"` + `advisorModel: "claude-opus-4-6"` + `CLAUDE_CODE_EFFORT_LEVEL=max` in project settings. The Opus advisor auto-compensates for Sonnet's lighter reasoning at key decision points. GPT-5.5 xhigh is the cross-model reviewer.
30
+
31
+ ## When to Use Setup A
32
+
33
+ Reach for Premium when the change can damage a consumer repo or has high blast radius:
34
+
35
+ - Architecture or methodology changes
36
+ - Tagged release prep
37
+ - Installer behavior (`cli/`, `init`, `setup-wizard`)
38
+ - Destructive file operations
39
+ - Package publishing
40
+ - Generated repo modifications (template changes)
41
+ - CI / release automation
42
+ - Security-sensitive behavior
43
+ - Anything that could damage a consumer repo
44
+
45
+ ## When to Use Setup B
46
+
47
+ Setup B is sufficient for routine work where a Sonnet driver can ship with a strong reviewer:
48
+
49
+ - Routine implementation
50
+ - Documentation
51
+ - Examples
52
+ - Tests
53
+ - Normal CLI changes (non-installer)
54
+ - Low-risk methodology edits
55
+ - Mechanical refactors
56
+
57
+ ## Setup C — Claude Lite
58
+
59
+ | Role | Model | Notes |
60
+ |------|-------|-------|
61
+ | **Planner** | You (the user) | Task is pre-planned, no model reasoning needed |
62
+ | **Driver** | Sonnet 4.6 | Same model as Setup B driver — Max-bundled, no extra model to manage |
63
+ | **Reviewer** | None | Blast radius too low for cross-model overhead |
64
+
65
+ The "just do the thing" lane. No TDD enforcement, no cross-model review, no planning phase. You already know what to do — you just need a fast, cheap pair of hands.
66
+
67
+ ## When to Use Setup C
68
+
69
+ Setup C is for work where SDLC discipline overhead exceeds the value:
70
+
71
+ - Run a script with basic intelligence
72
+ - Deploy to staging (prod deploys need Setup A's discipline — human gate + rollback plan)
73
+ - Config updates, env var changes
74
+ - File moves, renames, bulk operations
75
+ - Repo maintenance (dependency bumps, lockfile refreshes)
76
+ - Simple administrative tasks across repos like `~/afterhours`
77
+ - Anything where blast radius is low and you need speed, not depth
78
+
79
+ **Not Lite — escalate to A or B:** env vars that touch secrets or credentials, dependency bumps with security advisories, destructive bulk ops (rm -rf, drop table), migrations, prod-like shared staging, anything security-sensitive. If you're unsure, it's not Lite.
80
+
81
+ ## What Setup C explicitly skips
82
+
83
+ - No TDD (no test-first for running a deploy script)
84
+ - No cross-model review (not worth the cost or time for grunt work)
85
+ - No planning phase (you are the planner)
86
+ - No effort escalation (Sonnet standard is plenty)
87
+
88
+ **The discipline of knowing when NOT to use discipline.** Documenting this lane tells users "here's when to switch off the heavy methodology" rather than silently tempting them to skip it. If the task turns out to be harder than expected, escalate to Setup B or A.
89
+
90
+ ## Final Review Policy
91
+
92
+ **Setups A and B end at GPT-5.5 xhigh as the cross-model reviewer.** Claude can't grade its own homework — the reviewer always belongs to a different lab with different blind spots. See [CLAUDE_CODE_SDLC_WIZARD.md → "Cross-Model Review (Codex)"](CLAUDE_CODE_SDLC_WIZARD.md) for the handoff protocol.
93
+
94
+ **Setup C has no reviewer** — the blast radius doesn't justify it. If you're unsure whether a task is truly Lite, it probably isn't. Escalate.
95
+
96
+ If GPT-5.5 isn't available on your OpenAI account, Codex auto-falls back to GPT-5.4 — still keep `model_reasoning_effort="xhigh"`. Lower reasoning misses subtle bugs that the reviewer is the last gate to catch.
97
+
98
+ ## Version Requirement
99
+
100
+ `advisorModel` in settings.json requires **Claude Code v2.1.170+**. Check your version with `claude --version`. If below v2.1.170, update from inside a CC session:
101
+
102
+ ```
103
+ ! claude update
104
+ ```
105
+
106
+ The `!` prefix runs shell commands inside your CC session — no need to exit and re-enter. After updating, restart the session for the advisor to activate.
107
+
108
+ Fable 5 as advisor also requires Fable 5 access for your organization/plan (free on Max through June 22, 2026).
109
+
110
+ ## When the Advisor Is Unavailable
111
+
112
+ If the advisor returns "Advisor unavailable," the server-side harness failed to initialize. No in-session action (`/model`, `/clear`) can recover it.
113
+
114
+ **Step 1 — restart the session.** Exit and run `claude` (not `--resume`). A fresh process re-initializes the server handshake. This resolves most advisor failures.
115
+
116
+ **Step 2 — if the API incident persists:**
117
+
118
+ - `/model fable` + `/effort high` for the planning phase, then `/model claude-opus-4-6` for implementation. Interactive — stays on your Max subscription.
119
+ - Or proceed with Opus only and let the Codex xhigh PR gate catch issues.
120
+
121
+ **Last resort (scripted/CI only):**
122
+
123
+ - `claude --model fable --effort high -p "$(cat <file>)"` — headless mode bills API credits, not your Max subscription.
124
+
125
+ Check [status.claude.com](https://status.claude.com) if the advisor fails across multiple fresh sessions.
126
+
127
+ Whichever path you use, the cross-model PR review gate still applies.
128
+
129
+ ## Credit-Spend Warning
130
+
131
+ Setups A and B use Opus 4.6 max for at least the planner — that's the expensive half. On Max-plan subscriptions, **Premium can burn the 5-hour cap faster than Saver** because Opus 4.6 max drives implementation too. If you're hitting the cap mid-session:
132
+
133
+ - Drop to Setup B for the remainder of the day
134
+ - Or drop to Setup C for grunt work that doesn't need Opus reasoning
135
+ - Or use Sonnet directly for the final mechanical edits, then run the GPT-5.5 reviewer over the whole diff at the end
136
+
137
+ **Setup C uses Sonnet** — same model as Setup B's driver, Max-bundled. One less model to manage.
138
+
139
+ The reviewer (GPT-5.5 xhigh) is billed against your OpenAI account, separately. Watch both bills.
140
+
141
+ ## Autocompact Thresholds
142
+
143
+ For recommended `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` values per context window and task shape, see [CLAUDE_CODE_SDLC_WIZARD.md → Autocompact Tuning](CLAUDE_CODE_SDLC_WIZARD.md#autocompact-tuning).
144
+
145
+ ## How Billing Works — 1M Context, Max Plan, and the June 15 Split
146
+
147
+ A common question: **"does the `[1m]` model alias get billed differently? Does it pull from my Max plan or from API credits?"**
148
+
149
+ The short answer: **Setup A uses Fable advisor + Opus driver (both Max-bundled in interactive sessions). Setup B is fully Max-bundled via opusplan + Opus advisor.** Here's the detail.
150
+
151
+ ### 1M context is free on Max — no API premium
152
+
153
+ [Anthropic 2026-03-13](https://claude.com/blog/1m-context-ga): 1M context is GA at standard $5/$25 per million tokens for Opus 4.6 (also 4.7, 4.8). No long-context multiplier. **No beta header required**, requests over 200K tokens just work.
154
+
155
+ For Claude Code on Max / Team / Enterprise plans, **1M context is included automatically** with no extra usage allocation. Whether you set `claude-opus-4-6` or `claude-opus-4-6[1m]` doesn't change *what* you're billed — both pull from the same per-token budget on your subscription. The `[1m]` suffix just makes the alias explicit so it sticks across alias-resolution changes; functionally Opus 4.6 in Claude Code today *is* the 1M-context model on a Max plan.
156
+
157
+ (Pro plan is the exception: Pro users need "Enable usage credits" turned on in their Claude account settings to use 1M context. Max / Team / Enterprise have it on by default.)
158
+
159
+ ### The June 15, 2026 billing split
160
+
161
+ [Anthropic moved a slice of usage off the subscription](https://codersera.com/blog/anthropic-june-2026-billing-change-claude-code/) onto a separate metered credit pool that bills at full API rates:
162
+
163
+ | Surface | Billing as of June 15, 2026 |
164
+ |---|---|
165
+ | **Interactive Claude Code in terminal** (you typing into Claude Code right now) | **Stays on Max subscription** — unchanged |
166
+ | Claude.ai web / desktop / mobile chat | Stays on Max subscription |
167
+ | Claude Cowork | Stays on Max subscription |
168
+ | `claude -p` (headless / `--print`) | **Moves to separate credit pool**, billed at API rates |
169
+ | Claude Agent SDK | Moves to separate credit pool |
170
+ | Claude Code GitHub Actions | Moves to separate credit pool |
171
+ | Third-party apps via Agent SDK | Moves to separate credit pool |
172
+
173
+ Credit allocations: Pro $20/mo, Max 5x $100/mo, Max 20x $200/mo. **No rollover.**
174
+
175
+ ### What this means for the lanes
176
+
177
+ - **Setup A — Premium (Fable advisor + Opus driver):** Fable 5 advisor via `advisorModel: "fable"` in project settings — interactive session, Max-bundled. Opus 4.6 max driver on Max. GPT-5.5 xhigh reviewer on ChatGPT subscription.
178
+ - **Setup B — Saver (OpusPlan):** **fully Max-bundled.** `opusplan` uses Opus (plan mode) + Sonnet (execute mode), both at 200K context — no `[1m]` variants, no credit drain. This is why Setup B now recommends `opusplan` instead of the old `sonnet[1m]` pin (#390).
179
+ - **⚠️ Avoid `sonnet[1m]`:** Sonnet with 1M context draws from your usage credits pool ($3/$15 per Mtok), NOT your Max subscription. The `/model` picker shows this explicitly. Plain `sonnet` (200K) or `opusplan` stays on Max.
180
+ - **Reviewer (GPT-5.5 xhigh) in both lanes:** billed against your OpenAI account, completely separate from Anthropic.
181
+ - **CI loops that use `claude -p` post-June-15:** these now bill against the separate Anthropic credit pool, not your Max subscription. The wizard's CI shepherd loops (E2E scoring, weekly-update jobs) are local-only on the maintainer's machine and stay on Max; consumer-repo CI integrations may need to budget the new credit pool.
182
+
183
+ ### Caveat: Setup B's cost-saving has conditions
184
+
185
+ The savings argument for Setup B is "Sonnet driver is cheaper than Opus driver per turn." **That's true at standard 200K context.** If your Sonnet driver needs to load >200K tokens (large diff, multi-file refactor, monorepo audit), the bill quietly flips:
186
+
187
+ | Mode | Per-token rate | Pool |
188
+ |---|---|---|
189
+ | Setup A — Opus 4.6 1M | $5/$25 per Mtok | **Max subscription** |
190
+ | Setup B — Sonnet 4.6 standard | $3/$15 per Mtok | **Max subscription** |
191
+ | Setup B — Sonnet 4.6 1M | $3/$15 per Mtok | **Credits pool** |
192
+
193
+ So **for context-heavy work that crosses 200K, Setup A on Max is actually cheaper than Setup B on credits** — because Setup A's Opus stays on the Max pool while Setup B's Sonnet 1M draws down a separately-metered $100/mo (Max 5x) or $200/mo (Max 20x) credit budget.
194
+
195
+ **Practical guidance:**
196
+
197
+ - **Subscription-first mindset (recommended):** Use Setup A unless you're confident the Sonnet driver in Setup B stays under 200K context. The Opus 4.6 max planner+driver combo lives entirely on Max — no credit-pool drawdown.
198
+ - **Setup B is a real cost win only when:** the driver task fits in ≤ 200K (routine implementation, single-file work, small refactors, docs). Use B specifically for those, not as a blanket choice.
199
+ - **Watch the picker.** When you swap to Sonnet 1M, Claude Code shows "Draws from usage credits" explicitly. That's your billing flip signal — choose Opus 1M instead if you want to stay on Max.
200
+
201
+ ### Bottom line
202
+
203
+ If you're using Claude Code interactively (you, in your terminal, doing `/sdlc` work), **both lanes ride your existing Max subscription**, and the `[1m]` alias is the same billable budget as plain `claude-opus-4-6`. No extra charges for the 1M context. The June 15 split only affects programmatic / headless / CI use of Claude Code.
204
+
205
+ Watch the headless surface if you've automated `claude -p` calls in your project — those now bill differently as of June 15, 2026.
206
+
207
+ ## Maintainer Override
208
+
209
+ **Override at any time.** A blanket setup choice doesn't replace judgment per change. If you're touching CI but the change is a one-line typo, Setup B is fine. If you're touching docs but the section is the wizard's safety-critical hook ordering, Setup A is the call.
210
+
211
+ The wizard does not enforce setup lane selection — it documents the recommended default per change shape. Whatever ships is your call.
212
+
213
+ ## See Also
214
+
215
+ - [`CLAUDE_CODE_SDLC_WIZARD.md`](CLAUDE_CODE_SDLC_WIZARD.md) — Full wizard doc, including Stability tier opt-in for the wider model choice
216
+ - [`README.md` § Choosing Your Model](README.md#choosing-your-model) — Model selection philosophy
217
+ - [`AGENTS.md`](AGENTS.md) — Codex/reviewer guidelines used in both lanes
package/CHANGELOG.md CHANGED
@@ -4,6 +4,50 @@ All notable changes to the SDLC Wizard.
4
4
 
5
5
  > **Note:** This changelog is for humans to read. Don't manually apply these changes - just run the wizard ("Check for SDLC wizard updates") and it handles everything automatically.
6
6
 
7
+ ## [1.82.0] - 2026-06-11
8
+
9
+ ### Added
10
+
11
+ - **"Reading Usage Signals" subsection** in Token Efficiency section. Maps community-observed session signals (subagent-heavy, >150K context, 8+ hour sessions) to SDLC actions per setup lane. Marked as community-observed, not official CC docs.
12
+
13
+ - **Advisor fallback procedure** in AI_SETUP_LANES.md. Escalation ladder: restart session → Fable driver fallback → `-p` last resort (with billing caveat). Documented after advisor was unavailable for a full session during API incident (2026-06-11).
14
+
15
+ - **Fable effort guidance** in Setup A description. Opus stays at `max`; Fable at `high` (exceeds prior models at `max`). Unset `CLAUDE_CODE_EFFORT_LEVEL` env var if switching driver to Fable temporarily.
16
+
17
+ - **Autocompact Thresholds cross-reference** in AI_SETUP_LANES.md. Numbers-free pointer to wizard doc to prevent dual-source drift.
18
+
19
+ ### Fixed
20
+
21
+ - **Stale `/usage` row** in Monitor Costs table. Was "Session total: USD, API time, code changes" — now accurately describes plan usage limits and per-category breakdown (skill, subagent, plugin, MCP server). Added `/status` row (settings panel) to prevent future confusion.
22
+
23
+ - **`/usage` mention in SKILL.md** Context Management section. Folded into existing auto-compact bullet within 20K char budget.
24
+
25
+ ### Why
26
+
27
+ - Token-burn spike (1.36M costly tokens vs ~86K median) in session 98d6c7b0 surfaced that the wizard's usage guidance was stale and didn't help diagnose the cause. The Monitor Costs table described `/usage` incorrectly, and no wizard prose mapped usage signals to SDLC actions. The advisor fallback procedure is a direct lesson from the same session where the Fable advisor was unavailable for the entire duration.
28
+
29
+ ## [1.81.0] - 2026-06-10
30
+
31
+ ### Changed
32
+
33
+ - **Native `advisorModel` support (CC v2.1.170+).** Setup A (Premium) now uses `advisorModel: "fable"` in project settings instead of manual `Agent(model: "fable")` subagent spawning. Fable 5 auto-consults at key decision points (architecture, complexity, blast-radius). Setup B (Saver) gains `advisorModel: "claude-opus-4-6"` — Opus advisor compensates for Sonnet driver's lighter reasoning.
34
+
35
+ - **Settings are project-level by default.** The setup skill writes `model` + `advisorModel` to `.claude/settings.json` (project-scoped, committed, shared with team). After writing, asks if user also wants `advisorModel` in global `~/.claude/settings.json`. Never nukes global settings without consent.
36
+
37
+ - **Update skill gains Step 7.8 (advisorModel migration).** Detects projects with a model pin but no `advisorModel` and suggests the right advisor pairing. Version-gated to CC v2.1.170+.
38
+
39
+ - **CLI init.js smart-merge handles `advisorModel`.** Same pattern as `model` — only set if missing, preserve on `--force`.
40
+
41
+ - **This repo dogfoods Setup A.** Project settings now include `model: "claude-opus-4-6"` + `advisorModel: "fable"`.
42
+
43
+ - **Documented `! claude update` tip** for users needing v2.1.170+ — the `!` prefix runs shell commands inside a CC session without exiting.
44
+
45
+ ### Why
46
+
47
+ - The advisor tool (API beta `advisor-tool-2026-03-01`) graduated to native CC support as `advisorModel` in v2.1.170+. Native advisor is strictly better than manual subagent spawning: automatic consultation at key decision points, no headless billing risk, persists across sessions via settings.json, and integrates with CC's settings precedence (project > global).
48
+
49
+ - Project-level settings prevent the wizard from overwriting a multi-project user's global model config. Settings precedence: Managed > CLI flags > Local > Project > User (global). Writing project-level means each repo picks its own lane independently.
50
+
7
51
  ## [1.80.0] - 2026-06-09
8
52
 
9
53
  ### Changed
@@ -249,13 +249,12 @@ When Anthropic provides official plugins or tools that handle something:
249
249
 
250
250
  Claude Code's **effort level** controls how much thinking the model does before responding. Higher effort = deeper reasoning but more tokens.
251
251
 
252
- > ⚠️ **On Opus 4.6 max, effort below `xhigh` breaks SDLC compliance in practice.** Inherited from 4.7, Opus 4.6 max respects effort levels *strictly* — at `high` or below it scopes work tighter (shallow reasoning, skipped TDD, no self-review) rather than going above-and-beyond. Treat the table below accordingly: **`max` is the recommended default, `xhigh` is the floor**, `high` or below is for trivial grep/search subagents only.
252
+ > ⚠️ **SDLC requires `max` effort on all Claude models.** Below max = degraded reasoning, shallow TDD, weak self-review. Persist via env var: `CLAUDE_CODE_EFFORT_LEVEL=max` (CC docs: `effortLevel: "max"` in settings.json is **session-only and silently ignored** the env var is the only way to persist it).
253
253
 
254
254
  | Level | When to Use | How to Set |
255
255
  |-------|-------------|------------|
256
- | `high` or below | **Not for SDLC work on Opus 4.6 max.** Only for trivial grep/search subagents or one-shot questions that don't require planning | `effort: high` in a specific subagent frontmatter only |
257
- | `xhigh` | **Floor for SDLC work on Opus 4.6 max.** Long-running tasks, repeated tool calls, deep exploration. Claude Code defaults to this on Opus 4.7+ | `/effort xhigh` or set in skill frontmatter |
258
- | `max` | **Recommended default for Opus 4.6 max SDLC work.** Multi-file changes, architecture decisions, debugging, cross-model reviews, any task touching wizard/skill/CI code | `/effort max` (session only — resets next session) |
256
+ | `max` | **Required for all SDLC work.** Claude: max. OpenAI/Codex: xhigh (their highest). | `CLAUDE_CODE_EFFORT_LEVEL=max` in settings env block |
257
+ | `high` or below | **Not for SDLC work.** Only for trivial grep/search subagents | `effort: high` in a specific subagent frontmatter only |
259
258
 
260
259
  **Strict effort behavior (Opus 4.7+, carried forward in 4.8 — and why 4.6 max is the wizard's pick):**
261
260
  - **`xhigh` was introduced in 4.7** — sits between `high` and `max`, designed for coding and agentic work (30+ minute tasks with token budgets in the millions)
@@ -267,11 +266,11 @@ Claude Code's **effort level** controls how much thinking the model does before
267
266
 
268
267
  **Why `high` was the previous default:** Claude Code uses **adaptive thinking** to dynamically allocate reasoning budget per turn. On Pro and Max plans, the default effort level was **medium (85)**, which causes the model to under-allocate reasoning on complex multi-step tasks — leading to shallow analysis, missed edge cases, and "lazy" outputs. This was [confirmed by Anthropic engineer Boris Cherny](https://github.com/anthropics/claude-code/issues/42796) and is documented at [code.claude.com](https://code.claude.com/docs/en/model-config). API, Team, and Enterprise plans default to high effort and are not affected.
269
268
 
270
- **Don't rely on the CC default — set effort yourself.** Anthropic's [2026-04-23 post-mortem](https://www.anthropic.com/engineering/april-23-postmortem) is independent third-party evidence that CC has flipped reasoning_effort defaults across versions (high → medium → xhigh/high). The default has changed before and will change again. The wizard's `model-effort-check.sh` hook nudges to `xhigh`/`max` at session start specifically because the in-product default is not load-bearing — it can shift release-to-release without notice. Set `/effort max` explicitly every session you do SDLC work, and treat any "I assumed the default was X" reasoning as a bug.
269
+ **Don't rely on the CC default — set effort yourself.** Anthropic's [2026-04-23 post-mortem](https://www.anthropic.com/engineering/april-23-postmortem) is independent third-party evidence that CC has flipped reasoning_effort defaults across versions (high → medium → xhigh/high). The default has changed before and will change again. The wizard's `model-effort-check.sh` hook warns on anything below `max` at session start. Set `CLAUDE_CODE_EFFORT_LEVEL=max` in your settings env block, and treat any "I assumed the default was X" reasoning as a bug.
271
270
 
272
- The `/sdlc` skill sets `effort: high` in its frontmatter as a baseline, overriding the medium default on every SDLC invocation. **On Opus 4.6 max, run `/effort max` at session start** — the frontmatter is a floor, not a ceiling, and `max` is where SDLC-compliant work actually happens on 4.6.
271
+ The `/sdlc` skill sets `effort: max` in its frontmatter, overriding the medium default on every SDLC invocation. This matches the wizard's v1.80.0 contract: Opus 4.6 max is the recommended flagship, and `max` is where SDLC-compliant work actually happens on 4.6.
273
272
 
274
- **Nuclear option — disable adaptive thinking entirely:** Set `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` in your environment or settings.json `env` block. This forces a fixed reasoning budget per turn instead of letting the model dynamically allocate. Use this if you observe persistent quality issues even with `effort: high`. See [Claude Code model config docs](https://code.claude.com/docs/en/model-config) for details.
273
+ **Nuclear option — disable adaptive thinking entirely:** Set `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1` in your environment or settings.json `env` block. This forces a fixed reasoning budget per turn instead of letting the model dynamically allocate. Use this if you observe persistent quality issues even at `max` effort. See [Claude Code model config docs](https://code.claude.com/docs/en/model-config) for details.
275
274
 
276
275
  **When to escalate to `max`:**
277
276
  - You hit LOW confidence on your approach — deeper thinking may find clarity
@@ -282,27 +281,27 @@ The `/sdlc` skill sets `effort: high` in its frontmatter as a baseline, overridi
282
281
 
283
282
  **How it works:**
284
283
  - `/effort max` changes effort for the current session only (resets next session)
285
- - `effort: high` in SKILL.md frontmatter persists — every `/sdlc` invocation uses `high`
284
+ - `effort: max` in SKILL.md frontmatter persists — every `/sdlc` invocation uses `max`
286
285
  - You can also type `ultrathink` in any prompt for a single high-effort turn
287
286
 
288
- **Cost note:** `max` uses significantly more tokens than `high`. Use it when the problem justifies it, not as a default.
287
+ **Cost note:** `max` uses more tokens than lower efforts. Always `max` on all Claude models (#395). Token burn is higher on 4.7/4.8 than 4.6 — that's why 4.6 is the wizard's flagship.
289
288
 
290
289
  > See also: the **Effort** column in the [Confidence Check table](#confidence-check-required) below for per-confidence-level guidance on when to escalate to `max`.
291
290
 
292
291
  ### Anti-Laziness Guidance for CLAUDE.md
293
292
 
294
- If you notice Claude Code producing shallow outputs despite `effort: high`, add these instructions to your project's `CLAUDE.md`. These target the **specific mechanisms** behind quality degradation — adaptive thinking and effort levels — rather than vague directives:
293
+ If you notice Claude Code producing shallow outputs despite `effort: max`, add these instructions to your project's `CLAUDE.md`. These target the **specific mechanisms** behind quality degradation — adaptive thinking and effort levels — rather than vague directives:
295
294
 
296
295
  ```markdown
297
296
  ## Quality Anchoring
298
- - This project uses effort: high via SDLC skill frontmatter. Do not reduce reasoning depth.
297
+ - This project uses effort: max via SDLC skill frontmatter. Do not reduce reasoning depth.
299
298
  - Adaptive thinking may under-allocate your thinking budget on complex tasks. When working on
300
299
  multi-file changes, architecture decisions, or debugging: reason through the full problem
301
300
  before acting, even if the system prompt suggests taking the "simplest approach first."
302
301
  - If you catch yourself skipping steps, re-read the task requirements and verify completeness.
303
302
  ```
304
303
 
305
- **Why this works:** Claude Code's hidden system prompt includes "Go straight to the point. Try the simplest approach first." This is good for simple queries but causes the model to under-invest in reasoning on complex SDLC tasks. The instructions above don't fight the system prompt — they provide task-specific context that justifies deeper reasoning. Note that CLAUDE.md instructions can be partially overridden by the system prompt, so `effort: high` in skill frontmatter remains the primary defense.
304
+ **Why this works:** Claude Code's hidden system prompt includes "Go straight to the point. Try the simplest approach first." This is good for simple queries but causes the model to under-invest in reasoning on complex SDLC tasks. The instructions above don't fight the system prompt — they provide task-specific context that justifies deeper reasoning. Note that CLAUDE.md instructions can be partially overridden by the system prompt, so `effort: max` in skill frontmatter remains the primary defense.
306
305
 
307
306
  ---
308
307
 
@@ -393,6 +392,34 @@ New built-in commands available to use alongside the wizard:
393
392
 
394
393
  **Tip**: `/simplify` pairs well with the self-review phase. Run it after implementation as an additional quality check.
395
394
 
395
+ ### Advisor Model (v2.1.170+)
396
+
397
+ **What changed**: `advisorModel` in settings.json configures a stronger model that Claude Code automatically consults at key decision points — before committing to an approach, when stuck on recurring errors, or before declaring a task done. Replaces manual `Agent(model: "fable")` subagent spawning for planning.
398
+
399
+ **Three ways to enable:**
400
+
401
+ | Method | Scope | Persists? |
402
+ |--------|-------|-----------|
403
+ | `"advisorModel": "fable"` in `.claude/settings.json` | Project | Yes (committed, shared with team) |
404
+ | `/advisor fable` | User (global `~/.claude/settings.json`) | Yes (all projects) |
405
+ | `--advisor fable` CLI flag | Session | No |
406
+
407
+ **Recommended pairings:**
408
+
409
+ | Driver | Advisor | Lane |
410
+ |--------|---------|------|
411
+ | Opus 4.6 (`claude-opus-4-6`) | Fable (`"fable"`) | Setup A — Premium |
412
+ | Sonnet via opusplan | Opus (`"claude-opus-4-6"`) | Setup B — Saver |
413
+ | Opus 4.8 (`claude-opus-4-8`) | Fable (`"fable"`) | Latest tier |
414
+
415
+ **Settings precedence:** Managed > CLI flags > Local (`.claude/settings.local.json`) > Project (`.claude/settings.json`) > User (`~/.claude/settings.json`). The wizard writes project-level by default — never nukes global settings. Setup skill Step 9.5 asks if you also want global.
416
+
417
+ **Important:** Fable does NOT appear in the `/advisor` interactive picker. Set it via `/advisor fable`, `--advisor fable`, or `advisorModel: "fable"` in settings.json.
418
+
419
+ **Billing:** Advisor queries in interactive sessions are Max-bundled (same pool as the driver). The advisor does not trigger headless/credit-pool billing.
420
+
421
+ **To update:** Run `! claude update` from inside a CC session to get v2.1.170+. The `!` prefix runs shell commands inline — no need to exit.
422
+
396
423
  ### Skill Frontmatter Fields (v2.1.80+)
397
424
 
398
425
  Skills support these frontmatter fields:
@@ -401,14 +428,14 @@ Skills support these frontmatter fields:
401
428
  |-------|---------|---------|
402
429
  | `name` | Skill name (matches `/command`) | `name: sdlc` |
403
430
  | `description` | Trigger description for auto-invocation | `description: Full SDLC workflow...` |
404
- | `effort` | Set reasoning effort level | `effort: high` |
431
+ | `effort` | Set reasoning effort level | `effort: max` |
405
432
  | `paths` | Restrict skill to specific file patterns | `paths: ["src/**/*.ts", "tests/**"]` |
406
433
  | `context` | Context mode (`fork` = isolated subagent) | `context: fork` |
407
434
  | `argument-hint` | Hint for `$ARGUMENTS` placeholder | `argument-hint: [task description]` |
408
435
  | `disable-model-invocation` | Prevent skill from being auto-invoked by model | `disable-model-invocation: true` |
409
436
 
410
437
  **Key fields explained:**
411
- - **`effort: high`** — The wizard's `/sdlc` skill uses this to ensure Claude gives full attention. `max` is available but costs significantly more tokens.
438
+ - **`effort: max`** — The wizard's `/sdlc` skill uses this to ensure Claude gives full attention at the recommended effort level for Opus 4.6 max (v1.80.0+).
412
439
  - **`paths:`** — Limits when a skill activates based on files being worked on. Useful for language-specific or directory-specific skills.
413
440
  - **`context: fork`** — Runs the skill in an isolated subagent context. The subagent gets its own context window, so it won't pollute the main conversation. Useful for review skills or analysis that should run independently.
414
441
 
@@ -481,7 +508,7 @@ When a cached prompt prefix is re-served after idle pruning, downstream thinking
481
508
 
482
509
  **Workaround**: if you hit suspicious shallow reasoning mid-session — especially after a long idle gap — start a fresh session with `claude --continue` to reset cache state. The wizard's PreCompact hook gates manual `/compact` precisely because compacting at bad seams can also pull thinking blocks out of context.
483
510
 
484
- **Detection signal**: the wizard's `model-effort-check.sh` already loud-warns below `xhigh`. Combine with token-spike anomaly detection (ROADMAP #220) once shipped.
511
+ **Detection signal**: the wizard's `model-effort-check.sh` loud-warns below `max`. Combine with token-spike anomaly detection (ROADMAP #220) once shipped.
485
512
 
486
513
  ### Prompt brevity caps can compound across turns (post-mortem 2026-04-23)
487
514
 
@@ -967,14 +994,16 @@ Override the default auto-compact threshold with environment variables. These ar
967
994
  | `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Trigger compaction at this % of context capacity (1-100) | ~95% |
968
995
  | `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Override context capacity in tokens (useful for 1M models) | Model default |
969
996
 
970
- **Opt-in (issue #198):** The SDLC Wizard CLI ships `.claude/settings.json` with **no** `model` or `env` pin so Claude Code's auto-mode stays enabled. The setup skill's Step 9.5 asks whether to opt into `"model": "opus[1m]"` + `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` (tuned for the 1M window compacts at ~300K). Default answer is **No**. Pinning the model at the top level tells Claude Code you've explicitly chosen a model and turns off per-turn model auto-selection — a real tradeoff, so we ask. Power users who want guaranteed Opus 4.6 max + 1M context answer yes.
997
+ **Opt-in (issue #198):** The SDLC Wizard CLI ships `.claude/settings.json` with **no** `model`, `advisorModel`, or `env` pin so Claude Code's auto-mode stays enabled. The setup skill's Step 9.5 offers four choices: `[N]` no pin, `[o]` opusplan + Opus advisor, `[f]` flagship Opus 4.6 + Fable advisor, `[l]` latest Opus 4.8 + Fable advisor. Default is **No**. Pinning the model turns off per-turn auto-selection — a real tradeoff, so we ask.
971
998
 
972
- To opt in by hand, edit `.claude/settings.json`:
999
+ To opt in by hand, edit `.claude/settings.json` (flagship example):
973
1000
 
974
1001
  ```json
975
1002
  {
976
- "model": "opus[1m]",
1003
+ "model": "claude-opus-4-6",
1004
+ "advisorModel": "fable",
977
1005
  "env": {
1006
+ "CLAUDE_CODE_EFFORT_LEVEL": "max",
978
1007
  "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
979
1008
  }
980
1009
  }
@@ -1036,40 +1065,33 @@ Claude Code supports both 200K and 1M context windows. **`opus[1m]` is an opt-in
1036
1065
 
1037
1066
  **Autocompact pairing (important):** If you opt into `opus[1m]`, also set `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` — otherwise CC's default autocompact fires at ~76K and destroys the headroom you're paying for. Step 9.5 writes both together when you opt in.
1038
1067
 
1039
- ### Mixed-Mode Tier (Sonnet coder + Opus reviewer, roadmap #233)
1040
-
1041
- For trivial / blank / config-only / CRUD-style repos, full Opus 4.6 max on every turn is overkill on the coder leg. The **mixed-mode tier** pins `model: "sonnet[1m]"` for in-session work while keeping the cross-model review layer (Codex / external reviewer) at the flagship — so the reviewer still catches what Sonnet missed.
1042
-
1043
- **The split:**
1044
-
1045
- | Layer | Mixed-mode tier | Flagship tier |
1046
- |-------|----------------|---------------|
1047
- | Coder (in-session CC) | `model: "sonnet[1m]"` | `model: "opus[1m]"` |
1048
- | Cross-model reviewer (Codex etc.) | gpt-5.5 xhigh (or Opus 4.6 max via Bash for an in-family second opinion) | gpt-5.5 xhigh (or Opus 4.6 max via Bash for an in-family second opinion) |
1049
- | Effort floor (CC session) | xhigh; max preferred | xhigh; max preferred |
1050
-
1051
- The reviewer always stays at flagship — the whole point of mixed-mode is that adversarial review catches Sonnet's blind spots, so weakening the review leg defeats the savings.
1052
-
1053
- **When mixed-mode is the right call:**
1054
- - Repo is small (LOC < 10K), few tests (< 30), few hooks (< 5), few workflows (< 5), no `.env` / secrets handling
1055
- - You're on API billing (not Max subscription) and 2× cost on simple repos actually matters
1056
- - Tasks are predominantly mechanical — typo fixes, config tweaks, small CRUD endpoints
1057
- - You're running the SDLC Wizard's setup flow against a sibling repo where the coder doesn't need flagship reasoning
1068
+ ### OpusPlan Tier (Opus planner + Sonnet driver, #395)
1058
1069
 
1059
- **When to stay flagship:**
1060
- - Stakes-flagged repo: anywhere `.env` / `secrets/` / `credentials/` exists. Force flagship even if LOC is tiny — leaks are catastrophic
1061
- - Architecture work, debugging non-obvious bugs, security review, anything where the *coder's* judgment matters as much as the reviewer's
1062
- - Long shepherd sessions (plan → TDD → review → CI loop) — they cross 100K tokens regularly and Opus 4.6 max fits the window better in a single thread
1070
+ For cost-conscious SDLC work, CC's native `opusplan` alias gives you Opus reasoning during Plan Mode (Shift+Tab) and Sonnet execution — both at 200K, Max-bundled, no API credit drain.
1063
1071
 
1064
- **Auto-detection:** the setup wizard runs `cli/lib/repo-complexity.js` against the target repo and suggests the tier. Stakes flag (`.env` / `secrets/`) forces complex regardless of size. The user always picks the final answer — the heuristic is a hint, not a gate.
1072
+ | Layer | OpusPlan tier | Flagship tier |
1073
+ |-------|--------------|---------------|
1074
+ | Planner | Opus 4.6 max (Plan Mode) | Opus 4.6 max |
1075
+ | Driver | Sonnet 4.6 (execute mode) | Opus 4.6 max |
1076
+ | Reviewer | GPT-5.5 xhigh | GPT-5.5 xhigh |
1077
+ | Effort | max (via `CLAUDE_CODE_EFFORT_LEVEL` env var) | max |
1065
1078
 
1066
- **How to opt in (manual):**
1079
+ **How to opt in:**
1067
1080
  ```json
1068
1081
  {
1069
- "model": "sonnet[1m]"
1082
+ "model": "opusplan",
1083
+ "env": {
1084
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
1085
+ "CLAUDE_CODE_EFFORT_LEVEL": "max"
1086
+ }
1070
1087
  }
1071
1088
  ```
1072
- Don't add `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` — Sonnet's 1M window has different compaction characteristics than Opus's; let upstream defaults ride until we benchmark.
1089
+
1090
+ **⚠️ Avoid `sonnet[1m]`** — Sonnet with 1M context draws from usage credits ($3/$15 per Mtok), not your Max subscription (#390). Plain `sonnet` (200K) or `opusplan` stays on Max.
1091
+
1092
+ **When to use OpusPlan:** routine SDLC work, simple repos, cost-conscious sessions. Press Shift+Tab before architecture/blast-radius decisions to get Opus reasoning.
1093
+
1094
+ **When to stay Flagship:** stakes-flagged repos, architecture work, security review, long shepherd sessions.
1073
1095
 
1074
1096
  **Prove-It Gate (#233 acceptance criterion):** mixed-mode ships only if pair-tested on 3+ simple repos shows Sonnet-coder + Opus-reviewer produces ≥ same SDLC scores as full-Opus baseline. The first version of the heuristic ships v1.38.0; pair-test results land in CHANGELOG before recommending mixed-mode as the default for any tier.
1075
1097
 
@@ -1089,7 +1111,7 @@ The wizard's flagship recommendation is Opus 4.6 max (see "Choosing Your Model"
1089
1111
 
1090
1112
  **Tradeoffs (be honest):**
1091
1113
  - **Documented 40-60× cache token jump** vs 4.7 at HIGH effort ([AI Weekly](https://aiweekly.co/alerts/claude-opus-48-thinking-burns-900k-tokens-per-turn) — up to 900K cache tokens per turn). Burns Max 5-hour limits 2-3× faster than 4.6
1092
- - **`max` effort is *worse* than `high` on 4.8** per [Andon Labs Vending-Bench](https://andonlabs.com/blog/opus-4-8-vending-bench) ("Max reasoning is not the best reasoning effort") context fills faster
1114
+ - **Earlier field signal suggested xhigh over max on 4.8** per [Andon Labs Vending-Bench](https://andonlabs.com/blog/opus-4-8-vending-bench), but wizard standard is now `max` on all Claude models (#395)
1093
1115
  - Active GitHub regressions still open: false-greens ([#63861](https://github.com/anthropics/claude-code/issues/63861)), 2-3× token burn ([#64961](https://github.com/anthropics/claude-code/issues/64961)), 46K tokens for simple coding turn ([#64153](https://github.com/anthropics/claude-code/issues/64153)), dropped constraints ([#65932](https://github.com/anthropics/claude-code/issues/65932))
1094
1116
  - [Tech.yahoo review](https://tech.yahoo.com/ai/claude/articles/claude-opus-4-8-review-130106963.html): "Anthropic deliberately made Opus's new tokenizer less efficient" — not a transient bug, structural pricing change
1095
1117
  - Anthropic-supported until ≥ May 28, 2027 (longer runway than 4.6)
@@ -1099,24 +1121,16 @@ The wizard's flagship recommendation is Opus 4.6 max (see "Choosing Your Model"
1099
1121
  Edit `~/.claude/settings.json`:
1100
1122
  ```json
1101
1123
  {
1124
+ "model": "claude-opus-4-8",
1102
1125
  "env": {
1103
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-8",
1104
- "CLAUDE_CODE_SUBAGENT_MODEL": "claude-opus-4-8"
1105
- },
1106
- "model": "opus[1m]"
1126
+ "CLAUDE_CODE_EFFORT_LEVEL": "max"
1127
+ }
1107
1128
  }
1108
1129
  ```
1109
1130
 
1110
- The `opus[1m]` alias resolves through the env vars, so this combination pins `claude-opus-4-8[1m]` (1M context) everywhere.
1131
+ On Max plans, Opus auto-upgrades to 1M context. No `[1m]` suffix needed.
1111
1132
 
1112
- **Project-scoped (single repo):**
1113
- ```json
1114
- {
1115
- "model": "claude-opus-4-8[1m]"
1116
- }
1117
- ```
1118
-
1119
- **Effort tuning for 4.8:** field signal recommends `xhigh` instead of `max` on 4.8 — the strict-effort behavior overcorrects at `max`. Keep `max` for 4.6, drop to `xhigh` if running 4.8.
1133
+ **Effort tuning for 4.8:** always `max`. Earlier field signal suggested xhigh on 4.8 but the wizard standard is max on all Claude models (#395).
1120
1134
 
1121
1135
  **Escape hatch:** flip the env vars back to `claude-opus-4-6` to return to the wizard's recommended default. Or remove them entirely to fall back to Claude Code auto-mode.
1122
1136
 
@@ -2271,7 +2285,7 @@ TodoWrite([
2271
2285
  { content: "DRY check: Is logic duplicated elsewhere?", status: "pending", activeForm: "Checking for duplication" },
2272
2286
  { content: "Self-review: run /code-review", status: "pending", activeForm: "Running code review" },
2273
2287
  { content: "Security review (if warranted)", status: "pending", activeForm: "Checking security implications" },
2274
- { content: "Cross-model review (if configured — see below)", status: "pending", activeForm: "Running cross-model review" },
2288
+ { content: "Cross-model review (REQUIRED for high-stakes)", status: "pending", activeForm: "Running cross-model review" },
2275
2289
  // CI FEEDBACK LOOP (After local tests pass)
2276
2290
  { content: "Commit and push to remote", status: "pending", activeForm: "Pushing to remote" },
2277
2291
  { content: "Watch CI - fix failures, iterate until green (max 2x)", status: "pending", activeForm: "Watching CI" },
@@ -2340,9 +2354,9 @@ Before presenting approach, STATE your confidence:
2340
2354
 
2341
2355
  | Level | Meaning | Action | Effort |
2342
2356
  |-------|---------|--------|--------|
2343
- | HIGH (90%+) | Know exactly what to do | Present approach, proceed after approval | `high` (default) |
2344
- | MEDIUM (60-89%) | Solid approach, some uncertainty | Present approach, highlight uncertainties | `high` (default) |
2345
- | LOW (<60%) | Not sure | ASK USER before proceeding | **Run `/effort xhigh` now** — don't wait |
2357
+ | HIGH (90%+) | Know exactly what to do | Present approach, proceed after approval | `max` (default) |
2358
+ | MEDIUM (60-89%) | Solid approach, some uncertainty | Present approach, highlight uncertainties | `max` (default) |
2359
+ | LOW (<60%) | Not sure | ASK USER before proceeding | **Run `/effort max` now** — don't wait |
2346
2360
  | FAILED 2x | Something's wrong | STOP. ASK USER immediately | **Run `/effort max` now** — you're burning cycles at lower effort |
2347
2361
  | CONFUSED | Can't diagnose why something is failing | STOP. Describe what you tried, ask for help | **Run `/effort max` now** — stop spinning |
2348
2362
 
@@ -2372,10 +2386,10 @@ PLANNING → DOCS → TDD RED → TDD GREEN → Tests Pass → Self-Review
2372
2386
  4. Issues below 80 are likely false positives — skip unless obviously valid
2373
2387
  5. Address issues by going back through the proper SDLC loop
2374
2388
 
2375
- ## Cross-Model Review (If Configured)
2389
+ ## Cross-Model Review (REQUIRED for High-Stakes)
2376
2390
 
2377
2391
  **When to run:** High-stakes changes (auth, payments, data handling), releases/publishes (version bumps, CHANGELOG, npm publish), complex refactors, research-heavy work.
2378
- **When to skip:** Trivial changes (typo fixes, config tweaks), time-sensitive hotfixes, risk < review cost.
2392
+ **When to skip (log justification):** Trivial changes (typo fixes, config tweaks), time-sensitive hotfixes, risk < review cost.
2379
2393
 
2380
2394
  **Prerequisites:** Codex CLI installed (`npm i -g @openai/codex`), OpenAI API key set.
2381
2395
 
@@ -2486,7 +2500,7 @@ Self-review passes → handoff.json (round 1, PENDING_REVIEW)
2486
2500
 
2487
2501
  **Tool-agnostic:** The value is adversarial diversity (different model, different blind spots), not the specific tool. Any competing AI reviewer works.
2488
2502
 
2489
- **Full protocol:** See the "Cross-Model Review Loop (Optional)" section below for key flags and reasoning effort guidance.
2503
+ **Full protocol:** See the "Cross-Model Review Loop" section below for key flags and reasoning effort guidance.
2490
2504
 
2491
2505
  ### Release Review Focus
2492
2506
 
@@ -3027,7 +3041,7 @@ If deployment fails or post-deploy verification catches issues:
3027
3041
 
3028
3042
  **SDLC.md:**
3029
3043
  ```markdown
3030
- <!-- SDLC Wizard Version: 1.80.0 -->
3044
+ <!-- SDLC Wizard Version: 1.82.0 -->
3031
3045
  <!-- Setup Date: [DATE] -->
3032
3046
  <!-- Completed Steps: step-0.1, step-0.2, step-0.4, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
3033
3047
  <!-- Git Workflow: [PRs or Solo] -->
@@ -3677,10 +3691,21 @@ Practical techniques to reduce token consumption without sacrificing quality.
3677
3691
 
3678
3692
  | Tool | What It Shows | When to Use |
3679
3693
  |------|---------------|-------------|
3680
- | `/usage` | Session total: USD, API time, code changes (aliases: `/cost`, `/stats`) | After a session to review spend |
3694
+ | `/usage` | Session cost, plan usage limits, and per-category breakdown (skill, subagent, plugin, MCP server). Aliases: `/cost`, `/stats` | After heavy subagent work, before/after workflow runs, when approaching rate limits |
3695
+ | `/status` | Settings panel — version, model, account, connectivity | Confirm setup before starting work |
3681
3696
  | `/context` | What's consuming context window space | When hitting context limits |
3682
3697
  | Status line | Real-time `cost.total_cost_usd` + token counts | Continuous monitoring |
3683
3698
 
3699
+ ### Reading Usage Signals
3700
+
3701
+ These signals are community-observed behavior on paid plans (Max/Team) — not in official CC docs. They are independent dimensions, not a single breakdown. A single session can contribute to all three. Run `/usage` to see the per-category breakdown.
3702
+
3703
+ | Signal | What It Means | SDLC Action |
3704
+ |--------|---------------|-------------|
3705
+ | **Subagent-heavy** | Each subagent runs its own context. The advisor is a separate server-side consultation (full transcript forwarded, different token profile). Explore agents, full Agent delegates, and workflow agents each spawn separate contexts. | Expected in Setup A (Fable advisor fires per-decision). If unexpectedly high: use `subagent_type: "Explore"` for search (lighter), reserve full agents for implementation. |
3706
+ | **>150K context** | Sessions staying large between compactions. | **Context-window dependent.** On 1M (Setup A): >150K is expected at 30% compact threshold — the real question is whether the task needed 1M headroom. On 200K (Setup B/C): lower `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` toward 75%. `/compact` between planning and implementation. |
3707
+ | **8+ hour sessions** | Long-running sessions accumulate stale context. | `/clear` between unrelated tasks. Split multi-feature work into separate sessions. After committing a PR, start fresh. Background `/loop` sessions count toward this — audit which are still needed. |
3708
+
3684
3709
  ### Reduce Consumption
3685
3710
 
3686
3711
  | Technique | Savings | How |
@@ -3787,7 +3812,7 @@ Claude: [fetches via gh api, discusses with you interactively]
3787
3812
 
3788
3813
  This is optional - skip if you prefer fresh reviews only.
3789
3814
 
3790
- ### Cross-Model Review Loop (Optional)
3815
+ ### Cross-Model Review Loop (REQUIRED for High-Stakes)
3791
3816
 
3792
3817
  Use an independent AI model from a different company as a code reviewer. The author can't grade their own homework — a model with different training data and different biases catches blind spots the authoring model misses.
3793
3818
 
@@ -4164,7 +4189,7 @@ Every wizard step has a unique ID for tracking:
4164
4189
  | `step-9` | SDLC/TESTING/ARCH docs | 1.0.0 |
4165
4190
  | `question-git-workflow` | Git workflow preference | 1.2.0 |
4166
4191
  | `step-update-notify` | Optional: CI update notification | 1.13.0 |
4167
- | `step-cross-model-review` | Optional: Cross-model review loop | 1.16.0 |
4192
+ | `step-cross-model-review` | Cross-model review (REQUIRED for high-stakes) | 1.16.0 |
4168
4193
  | `step-update-wizard` | /update-wizard smart update skill | 1.18.0 |
4169
4194
 
4170
4195
  When checking for updates, Claude compares user's completed steps against this registry.
@@ -4472,7 +4497,7 @@ The wizard watches the **Anthropic API changelog** — not just Claude Code CLI
4472
4497
 
4473
4498
  When that issue is open, the session-start hook nudges you. The session (not the workflow) does the deep research + adoption via the full SDLC loop. This mirrors the "local shepherd" pattern used for CI fixes: cheap Action-layer detection + session-time analysis beats expensive Action-layer LLM calls.
4474
4499
 
4475
- The gap this closes: the advisor tool (API beta, `advisor-tool-2026-03-01`) shipped and was missed for several days before manual discovery. Detector would have flagged it on the next weekly tick.
4500
+ The gap this closes: the advisor tool (API beta, `advisor-tool-2026-03-01`) shipped and was missed for several days before manual discovery. Detector would have flagged it on the next weekly tick. **Update (v1.81.0):** The API beta graduated to native CC support as `advisorModel` in settings.json (v2.1.170+). See [Advisor Model (v2.1.170+)](#advisor-model-v21170) above.
4476
4501
 
4477
4502
  **Complementary native skills worth knowing:**
4478
4503
 
package/README.md CHANGED
@@ -113,7 +113,7 @@ Layer 1: PHILOSOPHY
113
113
  | **Pre-tool TDD hooks** | Before source edits, a hook reminds Claude to write tests first. CI scoring checks whether it actually followed TDD |
114
114
  | **Self-evolving loop** | Weekly/monthly external research + local CI shepherd loop — you approve, the system gets better |
115
115
 
116
- ## Optional: Cross-Model Review (Codex)
116
+ ## Cross-Model Review (Codex) — REQUIRED for High-Stakes
117
117
 
118
118
  Claude can't grade its own homework. Have a **different AI from a different company** review Claude's work — different training, different blind spots, different biases. We use OpenAI's Codex CLI, and it's **three commands to set up**:
119
119
 
@@ -136,7 +136,7 @@ codex exec -c 'model_reasoning_effort="xhigh"' -s danger-full-access \
136
136
 
137
137
  **Always append `< /dev/null`** when running `codex exec` from a non-interactive parent (background, hooks, CI, Claude Code Bash tool). Without it, codex blocks on stdin reads even when the prompt is an argument — the process sits at S/0% CPU indefinitely with a 0-byte `-o` output file. Validated on codex-cli 0.130.0 / macOS 14, 2026-05-15.
138
138
 
139
- `xhigh` reasoning is **non-negotiable** — lower settings miss subtle bugs. See [CLAUDE_CODE_SDLC_WIZARD.md](CLAUDE_CODE_SDLC_WIZARD.md#cross-model-review-loop-optional) for the full protocol (handoff format, round-2 dialogue loop, preflight docs). Real-world: this catches P0/P1 issues in 2-3 out of 10 reviews that Claude's self-review rated as clean.
139
+ `xhigh` reasoning is **non-negotiable** — lower settings miss subtle bugs. See [CLAUDE_CODE_SDLC_WIZARD.md](CLAUDE_CODE_SDLC_WIZARD.md#cross-model-review-loop-required-for-high-stakes) for the full protocol (handoff format, round-2 dialogue loop, preflight docs). Real-world: this catches P0/P1 issues in 2-3 out of 10 reviews that Claude's self-review rated as clean.
140
140
 
141
141
  ## Choosing Your Model
142
142
 
@@ -168,25 +168,37 @@ Six independent sources converging on the same conclusion: **4.6 is the only Opu
168
168
 
169
169
  ### Latest tier — Opus 4.8 (opt-in)
170
170
 
171
- If you want the newest benchmarks and you're comfortable with the token-burn tradeoff, pick `[l] Latest` in the setup wizard. Recommended effort is `xhigh`, not `max`, on 4.8 Andon Labs' data is explicit that `max` on 4.8 is worse than `xhigh`. The [`Latest tier — Opus 4.8`](CLAUDE_CODE_SDLC_WIZARD.md) section has the full opt-in instructions.
171
+ If you want the newest benchmarks and you're comfortable with the token-burn tradeoff, pick `[l] Latest` in the setup wizard. Always `max` effort on all Claude models (#395). The [`Latest tier — Opus 4.8`](CLAUDE_CODE_SDLC_WIZARD.md) section has the full opt-in instructions.
172
172
 
173
173
  ### Switch any time
174
174
 
175
175
  ```bash
176
- /model claude-opus-4-6[1m] # wizard's recommended flagship (default in v1.80.0+)
177
- /model claude-opus-4-8[1m] # Anthropic's latest, opt-in via Latest tier
178
- /model opus[1m] # whatever your env-var resolves to (alias)
176
+ /model claude-opus-4-6 # wizard's recommended flagship (default in v1.80.0+)
177
+ /model opusplan # Opus plans (Shift+Tab), Sonnet executes both Max-bundled
178
+ /model claude-opus-4-8 # Anthropic's latest, opt-in via Latest tier
179
179
  ```
180
180
 
181
181
  Or pin in `.claude/settings.json`:
182
182
 
183
183
  ```json
184
- { "model": "claude-opus-4-6[1m]" }
184
+ { "model": "claude-opus-4-6", "env": { "CLAUDE_CODE_EFFORT_LEVEL": "max" } }
185
185
  ```
186
186
 
187
- Or sweep all your projects from one place by setting `ANTHROPIC_DEFAULT_OPUS_MODEL` in `~/.claude/settings.json` — the `opus[1m]` alias resolves through it, so flipping one env var switches every repo at once.
187
+ Or sweep all your projects by setting `ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-6` in `~/.claude/settings.json`.
188
188
 
189
- Effort tuning is independent of model choice. `max` is the wizard's default *paired with 4.6*; `xhigh` is the floor. Adjust per session with `/effort max`. On 4.8, drop effort to `xhigh` per field evidence.
189
+ Effort: **always `max`** on all Claude models. Persist it: set `CLAUDE_CODE_EFFORT_LEVEL=max` in your settings env block (CC docs: `effortLevel: "max"` in settings.json is session-only and silently ignored). OpenAI/Codex: `xhigh` (their highest).
190
+
191
+ ### Three Setup Lanes
192
+
193
+ The wizard defines three AI coding setups in [`AI_SETUP_LANES.md`](AI_SETUP_LANES.md):
194
+
195
+ | Lane | Advisor | Driver | Reviewer | Escalation |
196
+ |------|---------|--------|----------|------------|
197
+ | **A — Premium** | Fable 5 (advisorModel) | Opus 4.6 max | GPT-5.5 xhigh | + Fable review (security/release/architecture) |
198
+ | **B — Saver** | Opus 4.6 (advisorModel) | Sonnet | GPT-5.5 xhigh | None |
199
+ | **C — Lite** | None | Sonnet | None | None |
200
+
201
+ Setup C's whole point: **the discipline of knowing when NOT to use discipline.** When blast radius is low and you just need fast cheap hands, skip the SDLC overhead.
190
202
 
191
203
  **A note on `[1m]` and billing.** The `[1m]` suffix is the 1M-context alias. As of [March 2026](https://claude.com/blog/1m-context-ga), 1M context is GA at standard pricing — **no long-context surcharge, no premium tier, no API-only restriction.** Interactive Claude Code sessions on Max / Team / Enterprise plans include 1M context automatically; whether you set `claude-opus-4-6` or `claude-opus-4-6[1m]`, you're billed against the same per-token Max budget at $5/$25 per million tokens. (Pro users need "Enable usage credits" turned on once.) The [June 15, 2026 billing split](https://codersera.com/blog/anthropic-june-2026-billing-change-claude-code/) moved *headless* surfaces — `claude -p`, Agent SDK, GitHub Actions, third-party apps — off the Max subscription onto a separate metered credit pool. Interactive Claude Code in your terminal stays on Max. Full details in [`AI_SETUP_LANES.md` § How Billing Works](AI_SETUP_LANES.md#how-billing-works--1m-context-max-plan-and-the-june-15-split).
192
204
 
package/cli/init.js CHANGED
@@ -83,6 +83,10 @@ function mergeSettings(existingPath, templatePath, force) {
83
83
  existing.model = template.model;
84
84
  }
85
85
 
86
+ if (template.advisorModel && (!('advisorModel' in existing) || force)) {
87
+ existing.advisorModel = template.advisorModel;
88
+ }
89
+
86
90
  // Merge cleanupPeriodDays (ROADMAP #225): only set the template default when
87
91
  // the user has not chosen a value. NEVER overwrite under --force — retention
88
92
  // policy is a user preference (they may want >30 for long pauses, or <30 for
@@ -532,16 +536,50 @@ function buildUpdateRecommendation(updateInfo, customizedCount) {
532
536
  return lines;
533
537
  }
534
538
 
539
+ function settingsHooksMatch(srcPath, destPath) {
540
+ try {
541
+ const src = JSON.parse(fs.readFileSync(srcPath, 'utf8'));
542
+ const dest = JSON.parse(fs.readFileSync(destPath, 'utf8'));
543
+ for (const [event, entries] of Object.entries(src.hooks || {})) {
544
+ if (!dest.hooks || !dest.hooks[event]) return false;
545
+ const templateEntry = entries[0];
546
+ if (!templateEntry || !templateEntry.hooks) continue;
547
+ for (const th of templateEntry.hooks) {
548
+ if (!th.command) continue;
549
+ const marker = WIZARD_HOOK_MARKERS.find((m) => th.command.includes(m));
550
+ if (!marker) continue;
551
+ // Verify marker present AND type matches. We intentionally skip matcher/if
552
+ // comparison — those are customizable per-project (the wizard's own settings
553
+ // use different if guards than the consumer template).
554
+ const found = dest.hooks[event].some(
555
+ (de) => de.hooks && de.hooks.some(
556
+ (h) => h.command && h.command.includes(marker) && h.type === (th.type || 'command')
557
+ )
558
+ );
559
+ if (!found) return false;
560
+ }
561
+ }
562
+ return true;
563
+ } catch (_) {
564
+ return false;
565
+ }
566
+ }
567
+
535
568
  function checkFile(srcPath, destPath, relativeDest, shouldBeExecutable) {
536
569
  if (!fs.existsSync(destPath)) {
537
570
  return { file: relativeDest, status: 'MISSING' };
538
571
  }
539
572
  const srcHash = crypto.createHash('sha256').update(fs.readFileSync(srcPath)).digest('hex');
540
573
  const destHash = crypto.createHash('sha256').update(fs.readFileSync(destPath)).digest('hex');
541
- const result = {
542
- file: relativeDest,
543
- status: srcHash === destHash ? 'MATCH' : 'CUSTOMIZED',
544
- };
574
+ let fileStatus;
575
+ if (srcHash === destHash) {
576
+ fileStatus = 'MATCH';
577
+ } else if (relativeDest === '.claude/settings.json' && settingsHooksMatch(srcPath, destPath)) {
578
+ fileStatus = 'MATCH';
579
+ } else {
580
+ fileStatus = 'CUSTOMIZED';
581
+ }
582
+ const result = { file: relativeDest, status: fileStatus };
545
583
 
546
584
  if (shouldBeExecutable) {
547
585
  try {
@@ -256,7 +256,9 @@ if [ -f "$PROJECT_DIR/.github/workflows/weekly-update.yml" ] && \
256
256
  fi
257
257
 
258
258
  # Claude Code version check (non-blocking, best-effort)
259
- if command -v claude > /dev/null 2>&1 && command -v npm > /dev/null 2>&1; then
259
+ # Gate on CLAUDE_PROJECT_DIR only Claude Code sets this. Without it, we're
260
+ # running under Codex/OpenCode where a CC update nudge is misleading (#375).
261
+ if [ -n "${CLAUDE_PROJECT_DIR:-}" ] && command -v claude > /dev/null 2>&1 && command -v npm > /dev/null 2>&1; then
260
262
  CC_LOCAL=$(claude --version 2>/dev/null | grep -o '[0-9][0-9.]*' | head -1) || true
261
263
  if [ -n "$CC_LOCAL" ]; then
262
264
  CC_LATEST=$(npm view @anthropic-ai/claude-code version 2>/dev/null) || true
@@ -1,67 +1,67 @@
1
1
  #!/bin/bash
2
2
  # SessionStart hook — effort/model nudge.
3
3
  #
4
- # Behavior (per ROADMAP #217):
5
- # effort=max -> silent (preferred default, above floor)
6
- # effort=xhigh -> silent (minimum floor on Opus 4.6 max)
7
- # effort=high|medium|low (or unset) -> LOUD WARNING:
8
- # Opus 4.6 max needs xhigh floor for SDLC compliance (TDD, self-review, deep reasoning).
9
- # Recommends `/effort max`. Also reminds about recommended model `claude-opus-4-6[1m]`.
4
+ # Behavior (#395 update):
5
+ # CLAUDE_CODE_EFFORT_LEVEL env var takes precedence over effortLevel in settings.
6
+ # CC docs: max is session-only in settings.json — only the env var persists it.
7
+ # Opus 4.6 supports: low, medium, high, max (NO xhigh falls back to high).
10
8
  #
11
- # CC does not expose the current model to hooks, so the model nudge is emitted as
12
- # guidance for Claude to compare against its own system prompt.
9
+ # effort=max -> silent (only acceptable level)
10
+ # anything else -> LOUD WARNING
13
11
  #
14
12
  # Non-blocking: always exits 0.
15
13
 
16
- RECOMMENDED_MODEL="claude-opus-4-6[1m]"
14
+ RECOMMENDED_MODEL="claude-opus-4-6"
17
15
 
18
- # Token-bloat fix: when both project + plugin register this hook, plugin yields.
19
16
  HOOK_DIR="${BASH_SOURCE[0]%/*}"
20
17
  [ "$HOOK_DIR" = "${BASH_SOURCE[0]}" ] && HOOK_DIR="."
21
18
  # shellcheck disable=SC1091
22
19
  source "$HOOK_DIR/_find-sdlc-root.sh"
23
20
  dedupe_plugin_or_project "${BASH_SOURCE[0]}" || { cat > /dev/null; exit 0; }
24
21
 
25
- # Drain stdin (SessionStart sends JSON but model field isn't in it)
26
22
  cat > /dev/null
27
23
 
28
24
  if ! command -v jq > /dev/null 2>&1; then
29
25
  exit 0
30
26
  fi
31
27
 
32
- effort=""
33
- project_dir="${CLAUDE_PROJECT_DIR:-.}"
34
- for f in "$project_dir/.claude/settings.local.json" "$project_dir/.claude/settings.json" "$HOME/.claude/settings.json"; do
35
- if [ -f "$f" ]; then
36
- val=$(jq -r '.effortLevel // empty' "$f" 2>/dev/null)
37
- if [ -n "$val" ]; then
38
- effort="$val"
39
- break
28
+ # Env var takes precedence (CC docs: only way to persist max)
29
+ effort="${CLAUDE_CODE_EFFORT_LEVEL:-}"
30
+ settings_max=0
31
+
32
+ if [ -z "$effort" ]; then
33
+ project_dir="${CLAUDE_PROJECT_DIR:-.}"
34
+ for f in "$project_dir/.claude/settings.local.json" "$project_dir/.claude/settings.json" "$HOME/.claude/settings.json"; do
35
+ if [ -f "$f" ]; then
36
+ val=$(jq -r '.effortLevel // empty' "$f" 2>/dev/null)
37
+ if [ -n "$val" ]; then
38
+ effort="$val"
39
+ [ "$val" = "max" ] && settings_max=1
40
+ break
41
+ fi
40
42
  fi
41
- fi
42
- done
43
+ done
44
+ fi
43
45
 
44
- # At or above floor silent.
45
- case "$effort" in
46
- max|xhigh)
47
- exit 0
48
- ;;
49
- esac
46
+ # Only env-var max is truly silent.
47
+ if [ "$effort" = "max" ] && [ "$settings_max" -eq 0 ]; then
48
+ exit 0
49
+ fi
50
50
 
51
- # Below floor OR unset LOUD warning.
52
- # Note: test_model_effort_size_cap asserts output < 500 chars. Keep copy terse.
53
- if [ -z "$effort" ]; then
51
+ if [ "$settings_max" -eq 1 ] && [ -z "${CLAUDE_CODE_EFFORT_LEVEL:-}" ]; then
52
+ effort_display="max (settings-only CC ignores this)"
53
+ elif [ -z "$effort" ]; then
54
54
  effort_display="unset"
55
55
  else
56
56
  effort_display="$effort"
57
57
  fi
58
58
 
59
59
  echo "=============================================================================="
60
- echo " WARNING: effort '$effort_display' breaks SDLC compliance on Opus 4.6 max."
61
- echo " Below xhigh = shallow reasoning, skipped TDD, dropped self-review."
60
+ echo " WARNING: effort '$effort_display' SDLC requires max."
61
+ echo " Below max = degraded reasoning, shallow TDD, weak self-review."
62
62
  echo ""
63
- echo " Run: /effort max (preferred, full SDLC compliance)"
64
- echo " Or: /effort xhigh (minimum floor)"
63
+ echo " Run: /effort max"
64
+ echo " Persist: set CLAUDE_CODE_EFFORT_LEVEL=max in settings env block"
65
65
  echo ""
66
66
  echo " recommended model: $RECOMMENDED_MODEL (run: /model $RECOMMENDED_MODEL)"
67
67
  echo "=============================================================================="
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-sdlc-wizard",
3
- "version": "1.80.0",
3
+ "version": "1.82.0",
4
4
  "description": "SDLC enforcement for Claude Code — hooks, skills, and wizard setup in one command",
5
5
  "bin": {
6
6
  "sdlc-wizard": "cli/bin/sdlc-wizard.js"
@@ -11,6 +11,7 @@
11
11
  "hooks/",
12
12
  ".claude-plugin/",
13
13
  "CLAUDE_CODE_SDLC_WIZARD.md",
14
+ "AI_SETUP_LANES.md",
14
15
  "CHANGELOG.md"
15
16
  ],
16
17
  "keywords": [
@@ -2,7 +2,7 @@
2
2
  name: sdlc
3
3
  description: Full SDLC workflow for implementing features, fixing bugs, refactoring code, testing, releasing, publishing, and deploying. Use this skill when implementing, fixing, refactoring, testing, adding features, building new code, or releasing/publishing/deploying.
4
4
  argument-hint: [task description]
5
- effort: high
5
+ effort: max
6
6
  ---
7
7
  # SDLC Skill - Full Development Workflow
8
8
 
@@ -47,7 +47,7 @@ TodoWrite([
47
47
  { content: "Visual consistency check (if UI change)", status: "pending" },
48
48
  { content: "Self-review: run /code-review", status: "pending" },
49
49
  { content: "Security review (if warranted)", status: "pending" },
50
- { content: "Cross-model review (if configured)", status: "pending" },
50
+ { content: "Cross-model review (high-stakes)", status: "pending" },
51
51
  { content: "Scope guard: only changes related to task? No legacy/fallback code left?", status: "pending" },
52
52
  // CI SHEPHERD
53
53
  { content: "Commit and push to remote", status: "pending" },
@@ -96,9 +96,9 @@ State your confidence before presenting an approach:
96
96
 
97
97
  | Level | Meaning | Action | Effort |
98
98
  |-------|---------|--------|--------|
99
- | HIGH (90%+) | Know exactly what to do | Present, proceed after approval | `high` (default) |
100
- | MEDIUM (60-89%) | Solid approach, some uncertainty | Present, highlight uncertainties | `high` |
101
- | LOW (<60%) | Not sure | Research or try Codex; if still LOW, ASK USER | **`/effort xhigh` now** |
99
+ | HIGH (90%+) | Know exactly what to do | Present, proceed after approval | `max` (default) |
100
+ | MEDIUM (60-89%) | Solid approach, some uncertainty | Present, highlight uncertainties | `max` (default) |
101
+ | LOW (<60%) | Not sure | Research or try Codex; if still LOW, ASK USER | **`/effort max` now** |
102
102
  | FAILED 2x | Something's wrong | Codex for fresh perspective; if still stuck, STOP | **`/effort max` now** |
103
103
  | CONFUSED | Can't diagnose | Codex; if still confused, STOP and describe | **`/effort max` now** |
104
104
 
@@ -114,9 +114,11 @@ Native `/goal <condition>` (**v2.1.143+**). Haiku evaluator re-checks transcript
114
114
 
115
115
  ## Recommended Model
116
116
 
117
- **Opt-in: `claude-opus-4-6[1m]` (Opus 4.6 max + 1M context — wizard's flagship).** `/model claude-opus-4-6[1m]` at session start (issue #198). Top-level `model` pin disables CC auto-selection; pin only when you need 1M headroom. CC v2.1.154+. For 4.8 opt-in, see wizard "Latest tier".
117
+ **Recommended: `claude-opus-4-6` or `opusplan` (Opus 4.6 max — wizard's flagship).** Pin in settings or `/model claude-opus-4-6` at session start. `opusplan` uses Opus for Plan Mode (Shift+Tab) + Sonnet for execution both Max-bundled. Persist effort: `CLAUDE_CODE_EFFORT_LEVEL=max` in settings env block.
118
118
 
119
- **Pair with `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` when you opt in.** Without it, the default fires at ~76K on 1M. **Pick ONE — do NOT set both `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` AND `CLAUDE_CODE_AUTO_COMPACT_WINDOW=400000`** — they compound to 30% × 400K = 120K trigger ≈ 12% of 1M, fires almost immediately (#207). See wizard "Autocompact Tuning" for details.
119
+ **If pinning `claude-opus-4-6`:** pair with `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30` default compacts too early at ~76K on 1M. **Do not set this for `opusplan`** — 200K context, 30% = 60K too aggressive.
120
+
121
+ **Advisor (v2.1.170+):** Flagship → `advisorModel: "fable"`. OpusPlan → `advisorModel: "claude-opus-4-6"`. Set during `/setup-wizard` Step 9.5.
120
122
 
121
123
  ## Self-Review Loop
122
124
 
@@ -128,9 +130,9 @@ PLANNING → DOCS → TDD RED → GREEN → Tests Pass → Self-Review
128
130
 
129
131
  The loop goes back to PLANNING, not TDD RED. Run `/code-review`; issues at confidence ≥ 80 are real, < 80 are likely false positives. Found issues → ask "Want a plan to fix?" → new plan → docs → TDD → review.
130
132
 
131
- ## Cross-Model Review (If Configured)
133
+ ## Cross-Model Review (REQUIRED for High-Stakes)
132
134
 
133
- **When to run:** high-stakes changes (auth, payments, data), releases/publishes, complex refactors. **When to skip:** trivial changes, time-sensitive hotfixes, risk < review cost. **Prerequisites:** Codex CLI (`npm i -g @openai/codex`) + OpenAI API key. **Reviewer at flagship tier (#233):** even when project pins `sonnet[1m]`, reviewer runs `gpt-5.5` / Opus 4.6 max — adversarial diversity is the point.
135
+ **When to run:** high-stakes changes (auth, payments, data), releases/publishes, complex refactors. **When to skip (log justification):** trivial, hotfixes, risk < review cost. **Prerequisites:** Codex CLI (`npm i -g @openai/codex`) + OpenAI API key. **Reviewer at flagship tier (#233):** even on `opusplan` (Sonnet driver), reviewer runs `gpt-5.5` xhigh — adversarial diversity is the point.
134
136
 
135
137
  PROTOCOL is universal across domains; only `review_instructions` and `verification_checklist` change.
136
138
 
@@ -265,7 +267,7 @@ Don't fix only the symptom. Add a gate so it can't happen again. Example: PR #14
265
267
 
266
268
  - `/compact` between planning and implementation (plan preserved in summary)
267
269
  - `/clear` between unrelated tasks; after 2+ failed corrections (context polluted)
268
- - Auto-compact fires at ~95% capacity
270
+ - Auto-compact fires at ~95%; `/usage` shows what's driving token spend
269
271
  - After committing a PR, `/clear` before next feature
270
272
  - `--bare` mode (v2.1.81+) skips ALL hooks/skills/LSP/plugins. Scripted headless only — never normal development.
271
273
  - Custom subagents (`.claude/agents/`) run autonomously and return results. Skills guide behavior; agents do work. Use for parallel tasks or fresh context. Examples: `sdlc-reviewer`, `ci-debug`, `test-writer`.
@@ -228,9 +228,9 @@ Present suggestions and let the user confirm.
228
228
 
229
229
  ### Step 9.5: Context Window + Mixed-Mode Configuration (Opt-In)
230
230
 
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 (Sonnet for cheap tasks, Opus for hard ones) and the upstream autocompact threshold. Power users can opt into a pin during setup; mixed-mode users (Sonnet coder + Opus reviewer) can pin Sonnet here too.
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.
232
232
 
233
- **Why this is opt-in (issue #198):** A top-level `"model"` in `settings.json` tells Claude Code "the user has explicitly chosen a model" and disables auto-mode for the session. That is a real tradeoff — pinning is only worth it when you actually need the 1M headroom or you've decided mixed-mode tier-splitting is better than per-turn auto-selection.
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.
234
234
 
235
235
  **Run the complexity heuristic first (roadmap #233):**
236
236
 
@@ -246,50 +246,58 @@ The output is JSON: `{ tier: "simple" | "complex", score, signals }`. Use the re
246
246
  >
247
247
  > How do you want to configure the model for this repo?
248
248
  >
249
- > - **[N] No pin (default, recommended for most repos):** Leaves auto-mode enabled. Claude Code picks the model per turn. Compaction follows upstream defaults. Simplest, lowest friction.
250
- > - **[m] Mixed-mode** *(suggested for **simple** tier — roadmap #233):* Pins `model: "sonnet[1m]"` for the coder (Sonnet 4.6 with 1M context). The cross-model review layer (Codex / external reviewer) **always stays at the flagship** (Opus 4.6 max or gpt-5.5 xhigh) regardless. Saves cost/quota on simple repos; reviewer catches what Sonnet misses. Requires comfort with losing per-turn auto-selection.
251
- > - **[f] Flagship full** *(wizard's recommended default — suggested for complex / stakes-flagged):* Pins `model: "claude-opus-4-6[1m]"` + `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30`. 4.6 max is the only Opus/max combo that doesn't overthink (Andon Labs, Huryn, BSWEN, r/Claudeopus). Avoids 4.7+ tokenizer tax. Anthropic-supported until Feb 5, 2027. Requires CC v2.1.154+.
252
- > - **[l] Latest** *(opt-in for Anthropic's newest Opus):* Pins `model: "claude-opus-4-8[1m]"`. Ships SWE-Bench Pro / Terminal-Bench / dynamic-workflows gains. Tradeoff: 40-60× cache token jump at HIGH, active false-green / token-burn regressions. Drop to `xhigh` (4.8's `max` is worse than `xhigh`).
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).
253
253
  >
254
- > `[N/m/f/l]`
254
+ > `[N/o/f/l]`
255
255
 
256
256
  **If the user answers `N` (default):** Make no edits to `.claude/settings.json`. Auto-mode stays on. Done.
257
257
 
258
- **If the user answers `m` (mixed-mode):** Edit `.claude/settings.json` and add:
258
+ **If the user answers `o` (opusplan):** Edit `.claude/settings.json` and add:
259
259
 
260
260
  ```json
261
261
  {
262
- "model": "sonnet[1m]"
262
+ "model": "opusplan",
263
+ "advisorModel": "claude-opus-4-6",
264
+ "env": {
265
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
266
+ "CLAUDE_CODE_EFFORT_LEVEL": "max"
267
+ }
263
268
  }
264
269
  ```
265
270
 
266
- Do NOT add `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` for Sonnet Sonnet's 1M window has different compaction characteristics than Opus; let the upstream default ride. Tell the user explicitly: "Cross-model reviews still run at the flagship `codex exec -c 'model_reasoning_effort=\"xhigh\"'` (gpt-5.5) or any future Opus-tier reviewer. Mixed-mode is coder-only."
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."
267
272
 
268
- **If the user answers `f` (flagship):** Edit `.claude/settings.json` and add both fields at the top level:
273
+ **If the user answers `f` (flagship):** Edit `.claude/settings.json` and add:
269
274
 
270
275
  ```json
271
276
  {
272
- "model": "claude-opus-4-6[1m]",
277
+ "model": "claude-opus-4-6",
278
+ "advisorModel": "fable",
273
279
  "env": {
280
+ "CLAUDE_CODE_EFFORT_LEVEL": "max",
274
281
  "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
275
282
  }
276
283
  }
277
284
  ```
278
285
 
279
- Tell the user: "Pair this with `/effort max` — 4.6 is the only Opus version where `max` doesn't overthink. See [`README.md` § Choosing Your Model](../README.md#choosing-your-model) and `CLAUDE_CODE_SDLC_WIZARD.md` 'Latest tier Opus 4.8' for the full rationale + the opt-in alternative if you want Anthropic's newest model."
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."
280
287
 
281
288
  **If the user answers `l` (latest):** Edit `.claude/settings.json` and add:
282
289
 
283
290
  ```json
284
291
  {
285
- "model": "claude-opus-4-8[1m]",
292
+ "model": "claude-opus-4-8",
293
+ "advisorModel": "fable",
286
294
  "env": {
287
- "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "30"
295
+ "CLAUDE_CODE_EFFORT_LEVEL": "max"
288
296
  }
289
297
  }
290
298
  ```
291
299
 
292
- Tell the user: "Recommend dropping to `/effort xhigh` instead of `max` on 4.8 strict effort behavior overcorrects at `max`. You'll want this if you're chasing SWE-Bench Pro / Terminal-Bench 2.1 / dynamic-workflows wins; otherwise the wizard's `[f] Flagship` (4.6 max) is the safer pick. Escape hatch: change the `model` value back to `claude-opus-4-6[1m]` or remove the line to fall back to auto-mode."
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."
293
301
 
294
302
  Mention the escape hatch in all four cases:
295
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)".
@@ -298,6 +306,16 @@ Mention the escape hatch in all four cases:
298
306
 
299
307
  This is project-scoped and shared with the team via git.
300
308
 
309
+ **After writing project settings (for `[o]`, `[f]`, or `[l]`), ask once:**
310
+
311
+ > Also set `advisorModel` in your global `~/.claude/settings.json`?
312
+ > (Applies advisor to ALL your projects. Project-level always overrides.)
313
+ > `[y/N]`
314
+
315
+ 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
+
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.
318
+
301
319
  ### Step 10: Customize Hooks
302
320
 
303
321
  Update `tdd-pretool-check.sh` with the actual source directory (replace generic `/src/` pattern).
@@ -93,9 +93,11 @@ Parse CHANGELOG entries between the user's installed version and latest. Present
93
93
 
94
94
  ```
95
95
  Installed: 1.42.0
96
- Latest: 1.80.0
96
+ Latest: 1.82.0
97
97
 
98
98
  What changed:
99
+ - [1.82.0] Usage diagnostics: fix /usage row, Reading Usage Signals guide, advisor fallback procedure, Fable effort guidance, autocompact cross-reference.
100
+ - [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+.
99
101
  - [1.80.0] Flip default: Opus 4.6 max becomes recommended flagship; Opus 4.8 demoted to opt-in `[l] Latest` tier.
100
102
  - [1.79.0] Opus 4.6 Stability tier added as flagship alternative (now graduated to default in 1.80.0).
101
103
  - [1.78.0] Opus 4.7 → 4.8 model recommendation (#365) + min CC v2.1.154+.
@@ -176,8 +178,8 @@ Check user's `.claude/settings.json`:
176
178
  > Remove, keep, or decide later? `[r/k/l]`
177
179
 
178
180
  2. **Only one of the two fields matches** — treat as intentional customization. Do not prompt.
179
- 3. **`model: "sonnet[1m]"`** (mixed-mode tier, #233, v1.38.0+) explicit user choice. Mention in summary: "Detected mixed-mode tier (Sonnet coder + flagship reviewer). Cross-model review still uses Opus / gpt-5.5."
180
- 4. **Other `model` value** (`sonnet`, `opus`) — explicit user choice. Do not touch.
181
+ 3. **`model: "sonnet[1m]"`** ⚠️ warn: "sonnet[1m] draws from usage credits, not Max subscription (#390). Consider switching to `opusplan` (Opus plans, Sonnet executes, both Max-bundled) or plain `sonnet` (200K, Max-bundled)."
182
+ 4. **`model: "opusplan"`** or other value (`sonnet`, `opus`) — explicit user choice. Do not touch.
181
183
  5. **Neither field set** — already on new default.
182
184
 
183
185
  When removing: drop `model` (and `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` if `env` becomes empty). Never touch other keys.
@@ -224,35 +226,15 @@ If `cli/init.js` later adds wizard marketplace names, append verbatim.
224
226
  3. For every dead marketplace `<name>`, look for `enabledPlugins["sdlc-wizard@<name>"]` — also flag for removal.
225
227
  4. Repeat for **all** allowlist entries; collect the full set of dead pairs before prompting (multiple are common).
226
228
 
227
- **Cleanup (always ask, all-or-nothing per response):**
229
+ **Cleanup:** List all dead pairs, ask `[y/N]`. If yes: `cp ~/.claude/settings.json ~/.claude/settings.json.bak.$(date +%Y%m%dT%H%M%S)`, then single `jq` filter: `del(.enabledPlugins["sdlc-wizard@<name>"]) | del(.extraKnownMarketplaces["<name>"])` for each dead key. Write to temp, validate with `jq empty`, then `mv`. If no: skip.
228
230
 
229
- > Your `~/.claude/settings.json` references wizard plugin marketplaces that don't exist on disk:
230
- >
231
- > - `extraKnownMarketplaces.sdlc-wizard-local.source.path` → `<resolved-path>` (missing)
232
- > - `enabledPlugins["sdlc-wizard@sdlc-wizard-local"]` is `true`
233
- > - (list all dead pairs)
234
- >
235
- > Causes `Plugin directory does not exist` on every prompt in every CC session.
236
- >
237
- > Drop these entries from `~/.claude/settings.json`? `[y/N]`
238
-
239
- If yes:
240
- 1. **Backup with timestamp**: `cp ~/.claude/settings.json ~/.claude/settings.json.bak.$(date +%Y%m%dT%H%M%S)` (two cleanups same day don't overwrite each other).
241
- 2. **Single `jq` filter** dropping every dead marketplace + every dead `enabledPlugins` key in one pass: `jq 'del(.enabledPlugins["sdlc-wizard@sdlc-wizard-local"]) | del(.extraKnownMarketplaces["sdlc-wizard-local"]) | del(.enabledPlugins["sdlc-wizard@sdlc-wizard-wrap"]) | del(.extraKnownMarketplaces["sdlc-wizard-wrap"])'` — include only keys actually marked dead.
242
- 3. Write to a temp file, validate with `jq empty` (round-trip parse), then `mv`. Validation fails → restore from backup.
243
- 4. **Formatting note**: `jq` rewrites the whole file. Wizard does NOT preserve comments/trailing commas (CC's settings.json is strict JSON, so safe today). Tell the user.
244
-
245
- If no: skip silently. Some users have a recovery plan (re-enable, reinstall).
246
-
247
- **Idempotency:** rerunning Step 7.7 after a clean must be a no-op. Only marketplaces with allowlist match AND missing path qualify.
248
-
249
- **Scope guard:** only entries whose marketplace name matches the exact allowlist. Third-party plugin registrations (`legal@knowledge-work-plugins`, etc.) and unrelated `sdlc`-prefixed marketplaces (e.g. `danielscholl/claude-sdlc`) are never the wizard's business.
231
+ **Guards:** Idempotent (no-op after clean). Scope: only allowlist matches. Runs regardless of version match. `check-only`: detect only, no mutations.
250
232
 
251
- **Why update, not setup:** setup runs once at install; plugin paths are valid by definition. Dead registrations only appear later, when something disables/renames/deletes the plugin directory. Update is the natural seam.
233
+ ### Step 7.8: advisorModel Migration (v2.1.170+)
252
234
 
253
- **Runs regardless of version match:** Step 7.7 is global-settings hygiene, not file-update logic. Must run even when wizard version matches latest (per Step 3 match-branch). Gating Step 7.7 on version mismatch would silently leave the error firing forever.
235
+ 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.
254
236
 
255
- **`check-only` precedence:** if `check-only` is set (whether versions match or not), Step 7.7 runs in detection-only mode: report dead registrations, do NOT prompt, do NOT execute `jq`, do NOT touch `~/.claude/settings.json`. Check-only must never mutate state.
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.
256
238
 
257
239
  ### Step 8: Apply Selected Changes
258
240