agentic-sdlc-wizard 1.83.0 → 1.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/AI_SETUP_LANES.md +84 -74
- package/CHANGELOG.md +26 -0
- package/CLAUDE_CODE_SDLC_WIZARD.md +141 -92
- package/README.md +19 -29
- package/cli/init.js +3 -0
- package/cli/lib/repo-complexity.js +5 -5
- package/cli/templates/settings.json +23 -0
- package/hooks/codex-gate-check.sh +60 -0
- package/hooks/codex-review-stop-check.sh +67 -0
- package/hooks/hooks.json +19 -0
- package/hooks/model-effort-check.sh +21 -11
- package/hooks/tdd-pretool-check.sh +40 -1
- package/package.json +1 -1
- package/skills/sdlc/SKILL.md +25 -20
- package/skills/setup/SKILL.md +30 -32
- package/skills/update/SKILL.md +10 -15
|
@@ -249,30 +249,30 @@ 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
|
-
> ⚠️ **SDLC requires
|
|
252
|
+
> ⚠️ **SDLC requires model-appropriate effort, not a blanket setting.** Below the model's own sweet spot = degraded reasoning, shallow TDD, weak self-review. **Above** it (`max` on a model that only supports up to `xhigh`, or `max` on a model where it overthinks) wastes tokens for no quality gain — this is not a "more is always better" knob. See `AI_SETUP_LANES.md` for the current per-model recommendation.
|
|
253
253
|
|
|
254
|
-
|
|
|
255
|
-
|
|
256
|
-
| `
|
|
257
|
-
|
|
|
254
|
+
| Model | Recommended Effort | Why |
|
|
255
|
+
|-------|--------------------|-----|
|
|
256
|
+
| Sonnet 5 (recommended default) | `high`, escalate to `xhigh` for hard tasks | `xhigh` as a blanket default doubles cost for marginal gains per CodeRabbit testing; `high` is the tested sweet spot |
|
|
257
|
+
| Opus 4.8 (escalation only) | `xhigh` | `max` triggers excessive reasoning on 4.7/4.8 — documented 40-60x cache-token jump vs `high` (see "Opus 4.6 Stability" tier below) |
|
|
258
|
+
| Fable 5 (advisor) | `high` (its own designed default) | Adaptive thinking always on; `xhigh`/`max` mainly move the thinking-token budget with small marginal gain for review work |
|
|
259
|
+
| Opus 4.6 (Stability lane) | `max` | The one model where `max` doesn't overthink — no `xhigh` support at all (only low/medium/high/max) |
|
|
260
|
+
| OpenAI/Codex (cross-model reviewer) | `xhigh` (their highest) | Always — lower reasoning misses subtle bugs the reviewer exists to catch |
|
|
258
261
|
|
|
259
|
-
**Strict effort behavior (Opus 4.7+, carried forward in 4.8
|
|
262
|
+
**Strict effort behavior (Opus 4.7+, carried forward in 4.8):**
|
|
260
263
|
- **`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)
|
|
261
264
|
- **Claude Code defaults to `xhigh`** on Opus 4.7+ for all plans
|
|
262
265
|
- **Opus 4.7+ respects effort levels more strictly** than 4.6 — at lower levels it scopes work tighter instead of going above and beyond. If you see shallow reasoning, raise effort rather than prompting around it
|
|
263
266
|
- **`budget_tokens` is deprecated** on Opus 4.7+ — use adaptive thinking with effort instead
|
|
264
|
-
- **4.6 max is the wizard's flagship pick despite this:** community signal converges on 4.6 being the only Opus version where `max` effort tolerates without overthinking (Andon Labs Vending-Bench, Paweł Huryn's 4.7 guide, BSWEN effort decision guide, r/Claudeopus field reports). On 4.7 and 4.8, `max` triggers excessive reasoning that hits context limits faster and burns more tokens per turn — making the strict-effort behavior backfire. 4.6 max stays in the sweet spot. See [README → "Choosing Your Model"](../README.md#choosing-your-model) for the full evidence
|
|
265
267
|
- When running at `xhigh` or `max`, set a large `max_tokens` (64k+) so the model has room to think across subagents and tool calls
|
|
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
|
+
**Why `high` was the previous CC-wide default (now largely superseded by the table above):** 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.
|
|
268
270
|
|
|
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
|
|
271
|
+
**Don't rely on the CC default — set effort yourself, matched to your model.** 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. The default has changed before and will change again. The wizard's `model-effort-check.sh` hook warns when effort falls below the model-appropriate floor at session start. Set effort per-session with `/effort`, not a shell-rc or settings `env` block — persisting it that way silently overrides a later `/effort` change after you switch models (a real incident, documented in `SDLC.md`'s Lessons Learned).
|
|
270
272
|
|
|
271
|
-
|
|
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 the model-appropriate effort ceiling. See [Claude Code model config docs](https://code.claude.com/docs/en/model-config) for details.
|
|
272
274
|
|
|
273
|
-
**
|
|
274
|
-
|
|
275
|
-
**When to escalate to `max`:**
|
|
275
|
+
**When to escalate effort:**
|
|
276
276
|
- You hit LOW confidence on your approach — deeper thinking may find clarity
|
|
277
277
|
- You've failed the same thing twice — something non-obvious is wrong
|
|
278
278
|
- Architecture decisions with wide blast radius
|
|
@@ -280,28 +280,29 @@ The `/sdlc` skill sets `effort: max` in its frontmatter, overriding the medium d
|
|
|
280
280
|
- Cross-model review analysis (reading and evaluating external reviewer findings)
|
|
281
281
|
|
|
282
282
|
**How it works:**
|
|
283
|
-
- `/effort
|
|
284
|
-
- `effort
|
|
283
|
+
- `/effort <level>` changes effort for the current session only (resets next session)
|
|
284
|
+
- An `effort:` field in a skill's frontmatter persists across every invocation of that skill — the `/sdlc` skill deliberately does NOT set one, since the right effort depends on which model is driving, not which skill is running
|
|
285
285
|
- You can also type `ultrathink` in any prompt for a single high-effort turn
|
|
286
286
|
|
|
287
|
-
**Cost note:**
|
|
287
|
+
**Cost note:** higher effort uses more tokens. Match effort to your model per the table above — a blanket `max` wastes tokens on models where it overthinks, without any quality gain to show for it.
|
|
288
288
|
|
|
289
|
-
> See also: the **Effort** column in the [Confidence Check table](#confidence-check-required) below for per-confidence-level guidance on when to escalate
|
|
289
|
+
> See also: the **Effort** column in the [Confidence Check table](#confidence-check-required) below for per-confidence-level guidance on when to escalate.
|
|
290
290
|
|
|
291
291
|
### Anti-Laziness Guidance for CLAUDE.md
|
|
292
292
|
|
|
293
|
-
If you notice Claude Code producing shallow outputs
|
|
293
|
+
If you notice Claude Code producing shallow outputs at your model's recommended effort (see "Recommended Effort Level" above), 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:
|
|
294
294
|
|
|
295
295
|
```markdown
|
|
296
296
|
## Quality Anchoring
|
|
297
|
-
- This project
|
|
297
|
+
- This project sets effort per-session with /effort, matched to the active model
|
|
298
|
+
(see AI_SETUP_LANES.md). Do not reduce reasoning depth below that level.
|
|
298
299
|
- Adaptive thinking may under-allocate your thinking budget on complex tasks. When working on
|
|
299
300
|
multi-file changes, architecture decisions, or debugging: reason through the full problem
|
|
300
301
|
before acting, even if the system prompt suggests taking the "simplest approach first."
|
|
301
302
|
- If you catch yourself skipping steps, re-read the task requirements and verify completeness.
|
|
302
303
|
```
|
|
303
304
|
|
|
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
|
|
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 the per-session `/effort` level (not a skill-frontmatter field — the `/sdlc` skill deliberately omits one, since effort is model-aware) remains the primary defense; `hooks/model-effort-check.sh` nudges at session start if it drops below your model's floor.
|
|
305
306
|
|
|
306
307
|
---
|
|
307
308
|
|
|
@@ -408,9 +409,10 @@ New built-in commands available to use alongside the wizard:
|
|
|
408
409
|
|
|
409
410
|
| Driver | Advisor | Lane |
|
|
410
411
|
|--------|---------|------|
|
|
411
|
-
|
|
|
412
|
-
|
|
|
413
|
-
| Opus 4.8 (`claude-opus-4-8`) |
|
|
412
|
+
| Sonnet 5 (`sonnet`) | Fable (`"fable"`) | Setup A — default |
|
|
413
|
+
| Opus 4.6 (`claude-opus-4-6`) | Fable (`"fable"`) | Setup B — Stability |
|
|
414
|
+
| Sonnet via opusplan | Opus 4.8 (`"claude-opus-4-8"`) | Setup C — OpusPlan Hybrid |
|
|
415
|
+
| Opus 4.8 (`claude-opus-4-8`) | Fable (`"fable"`) | Escalation tier |
|
|
414
416
|
|
|
415
417
|
**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
418
|
|
|
@@ -428,14 +430,14 @@ Skills support these frontmatter fields:
|
|
|
428
430
|
|-------|---------|---------|
|
|
429
431
|
| `name` | Skill name (matches `/command`) | `name: sdlc` |
|
|
430
432
|
| `description` | Trigger description for auto-invocation | `description: Full SDLC workflow...` |
|
|
431
|
-
| `effort` | Set reasoning effort level | `effort:
|
|
433
|
+
| `effort` | Set reasoning effort level | `effort: high` |
|
|
432
434
|
| `paths` | Restrict skill to specific file patterns | `paths: ["src/**/*.ts", "tests/**"]` |
|
|
433
435
|
| `context` | Context mode (`fork` = isolated subagent) | `context: fork` |
|
|
434
436
|
| `argument-hint` | Hint for `$ARGUMENTS` placeholder | `argument-hint: [task description]` |
|
|
435
437
|
| `disable-model-invocation` | Prevent skill from being auto-invoked by model | `disable-model-invocation: true` |
|
|
436
438
|
|
|
437
439
|
**Key fields explained:**
|
|
438
|
-
- **`effort
|
|
440
|
+
- **`effort:`** — Use sparingly on skills that run under many different driver models. The wizard's own `/sdlc` skill deliberately omits this field — the right effort level depends on which model is driving (see "Recommended Effort Level" above), not on which skill is running, so a fixed frontmatter value would fight `/effort`'s per-session, per-model guidance.
|
|
439
441
|
- **`paths:`** — Limits when a skill activates based on files being worked on. Useful for language-specific or directory-specific skills.
|
|
440
442
|
- **`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.
|
|
441
443
|
|
|
@@ -508,7 +510,7 @@ When a cached prompt prefix is re-served after idle pruning, downstream thinking
|
|
|
508
510
|
|
|
509
511
|
**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.
|
|
510
512
|
|
|
511
|
-
**Detection signal**: the wizard's `model-effort-check.sh` loud-warns below `
|
|
513
|
+
**Detection signal**: the wizard's `model-effort-check.sh` loud-warns below `high` (the model-aware floor — see "Recommended Effort Level" above). Combine with token-spike anomaly detection (ROADMAP #220) once shipped.
|
|
512
514
|
|
|
513
515
|
### Prompt brevity caps can compound across turns (post-mortem 2026-04-23)
|
|
514
516
|
|
|
@@ -524,7 +526,7 @@ See the dedicated subsection under [Tasks System](#tasks-system-v2116) (above, i
|
|
|
524
526
|
|
|
525
527
|
### MCP-tool hooks audit (ROADMAP #218, CC 2.1.118)
|
|
526
528
|
|
|
527
|
-
CC 2.1.118 introduced `type: "mcp_tool"` for hooks — a hook can now directly invoke an MCP tool instead of running a bash script. **Audit (2026-04-26) of
|
|
529
|
+
CC 2.1.118 introduced `type: "mcp_tool"` for hooks — a hook can now directly invoke an MCP tool instead of running a bash script. **Audit (2026-04-26) of the 5 wizard hooks that existed at the time concluded: none migrate, all stay bash.** This subsection documents the per-hook reasoning so future audits don't redo the work; if a future PR migrates a hook to MCP, update this entry with the new rationale rather than deleting it. **Not yet re-audited**: 4 hooks shipped since 2026-04-26 (`goal-confidence-check.sh`, `codex-gate-check.sh`, `token-spike-check.sh`, `codex-review-stop-check.sh`) — the project now registers 9 hooks total (see `.claude/settings.json`), but this table only covers the original 5.
|
|
528
530
|
|
|
529
531
|
**Decision criteria applied** (any one rules out MCP):
|
|
530
532
|
|
|
@@ -536,8 +538,8 @@ CC 2.1.118 introduced `type: "mcp_tool"` for hooks — a hook can now directly i
|
|
|
536
538
|
|
|
537
539
|
- **`sdlc-prompt-check.sh`** (UserPromptSubmit, ~132 lines) — emits the SDLC BASELINE text on every prompt; writes effort-bump signals to `~/.cache/sdlc-wizard/effort-signals.log` for self-consumption on next invocation. Decision: **Stay bash.** Portability criterion: same script ships to Codex sibling unchanged. Local-state criterion: signal log is local-only.
|
|
538
540
|
- **`instructions-loaded-check.sh`** (~202 lines) — InstructionsLoaded event; validates SDLC files exist, fetches npm `latest` with daily file cache (`~/.cache/sdlc-wizard/npm-latest.json`), emits staleness warnings. Decision: **Stay bash.** Portability criterion: Codex sibling has its own equivalent of session-start validation; bash port is direct. Local-state criterion: cache file is local.
|
|
539
|
-
- **`tdd-pretool-check.sh`** (~
|
|
540
|
-
- **`model-effort-check.sh`** (~
|
|
541
|
+
- **`tdd-pretool-check.sh`** (~115 lines) — PreToolUse on Write/Edit/MultiEdit; emits a TDD reminder, and (since #436) **blocks** with `exit 2` when a `src/**` write happens before any test file was touched this session (an edit-ordering proxy for TDD RED, session-scoped via a cache-dir sentinel). Decision: **Stay bash.** Fail-closed gating criterion applies now that this hook blocks: bash `exit 2` fails closed by definition, whereas an `mcp_tool` hook's block decision is lost if the MCP server errors — wrong default for a gate. Portability criterion: still trivially portable.
|
|
542
|
+
- **`model-effort-check.sh`** (~80 lines) — SessionStart event; reads `CLAUDE_CODE_EFFORT_LEVEL` env var (falling back to `effortLevel` in the settings cascade), emits nothing when effort is `high`/`xhigh`/`max`, otherwise a loud warning. Decision: **Stay bash.** Portability criterion: env-var read maps 1:1 to any agent runtime. Local-state criterion: not applicable, hook is stateless.
|
|
541
543
|
- **`precompact-seam-check.sh`** (~125 lines) — PreCompact event (matcher: `manual`); reads `.reviews/handoff.json` via jq, blocks manual `/compact` with exit 2 + stderr message when status is `PENDING_*` and the linked PR (if any) isn't merged. Decision: **Stay bash.** Fail-closed gating criterion: bash exit 2 fails closed by definition; an MCP `mcp_tool` hook returning `decision: "block"` works on the happy path, but if the MCP server crashes/times out the action proceeds — that flips the safety property from fail-closed to fail-open. For a hook whose entire job is to prevent context loss at bad seams, fail-open is the wrong default.
|
|
542
544
|
|
|
543
545
|
**When to revisit this audit:**
|
|
@@ -987,16 +989,31 @@ Override: resolve the blocker (certify the review, finish the rebase), or tempor
|
|
|
987
989
|
|
|
988
990
|
### Autocompact Tuning
|
|
989
991
|
|
|
990
|
-
Override the default auto-compact threshold with environment variables.
|
|
992
|
+
Override the default auto-compact threshold with environment variables. Per official docs ([model-config](https://code.claude.com/docs/en/model-config#sonnet-5-context-window), [env-vars](https://code.claude.com/docs/en/env-vars)): `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` is applied as a percentage of `CLAUDE_CODE_AUTO_COMPACT_WINDOW` — which itself defaults to the model's own tuned threshold, not necessarily the raw context capacity. **The override can only lower the threshold; values above the model's default have no effect.** For a rigorous benchmarking methodology to validate these thresholds, see [AUTOCOMPACT_BENCHMARK.md](AUTOCOMPACT_BENCHMARK.md).
|
|
991
993
|
|
|
992
994
|
| Variable | What It Does | Default |
|
|
993
995
|
|----------|-------------|---------|
|
|
994
|
-
| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Trigger compaction at this % of
|
|
995
|
-
| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Override context capacity in tokens
|
|
996
|
+
| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Trigger compaction at this % of `CLAUDE_CODE_AUTO_COMPACT_WINDOW` (1-100). Lower-only. | Model-dependent (see below) |
|
|
997
|
+
| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Override context capacity in tokens used for compaction math | Model's context window — **except Sonnet 5**, which has its own default |
|
|
998
|
+
|
|
999
|
+
**Sonnet 5 specifics:** Sonnet 5 always runs at 1M context (no 200K variant, no `[1m]` suffix needed) and proactively compacts at its own tuned default of **~967K tokens (96.7%)** — not the generic 1M ceiling. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` on Sonnet 5 fires at ~75% *of that 967K*, i.e. ~725K tokens — earlier and safer than the native default, not later. **Do not carry over an `opus[1m]`-era `30%` setting to Sonnet 5** — that figure was derived for `opus[1m]`'s older extended-context opt-in, never re-derived for Sonnet 5's smarter native default, and is needlessly conservative here (verified 2026-07-05).
|
|
1000
|
+
|
|
1001
|
+
**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: no pin (default, auto-mode), Sonnet 5 + Fable advisor (recommended if pinning at all, Setup A), OpusPlan Hybrid with an Opus 4.8 advisor (Setup C), and Opus 4.6 Stability + Fable advisor (legacy flagship, Setup B). Opus 4.8 itself is an escalation model, not a persistent Step 9.5 pin — reach for it per-session via `/model claude-opus-4-8` when Sonnet 5 gets stuck (see "Latest tier" below). Default is **No pin**. Pinning the model turns off per-turn auto-selection — a real tradeoff, so we ask.
|
|
1002
|
+
|
|
1003
|
+
To opt in by hand, edit `.claude/settings.json` (Sonnet 5 example — the recommended default):
|
|
996
1004
|
|
|
997
|
-
|
|
1005
|
+
```json
|
|
1006
|
+
{
|
|
1007
|
+
"model": "sonnet",
|
|
1008
|
+
"advisorModel": "fable",
|
|
1009
|
+
"effortLevel": "xhigh",
|
|
1010
|
+
"env": {
|
|
1011
|
+
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "75"
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
```
|
|
998
1015
|
|
|
999
|
-
|
|
1016
|
+
For `opus[1m]` instead (older pin, still valid for proven stability), pair with a lower override since it lacks Sonnet 5's smarter native default:
|
|
1000
1017
|
|
|
1001
1018
|
```json
|
|
1002
1019
|
{
|
|
@@ -1009,17 +1026,14 @@ To opt in by hand, edit `.claude/settings.json` (flagship example):
|
|
|
1009
1026
|
}
|
|
1010
1027
|
```
|
|
1011
1028
|
|
|
1012
|
-
If you switch back to the 200K model (`opus`), raise the override to `75` — otherwise 30% of 200K = 60K compacts too early.
|
|
1013
|
-
|
|
1014
|
-
```bash
|
|
1015
|
-
export CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30
|
|
1016
|
-
```
|
|
1029
|
+
If you switch back to the 200K model (`opus`, no `[1m]`), raise the override to `75` — otherwise 30% of 200K = 60K compacts too early.
|
|
1017
1030
|
|
|
1018
|
-
**
|
|
1031
|
+
**Recommended thresholds by use case:**
|
|
1019
1032
|
|
|
1020
1033
|
| Use Case | AUTOCOMPACT % | Why |
|
|
1021
1034
|
|----------|--------------|-----|
|
|
1022
|
-
| **
|
|
1035
|
+
| **Sonnet 5 (default driver)** | **75%** | Fires at ~75% of its native ~967K threshold (~725K tokens) — safe margin without being overly conservative. Verified against official docs 2026-07-05. |
|
|
1036
|
+
| `opus[1m]` (opt-in extended context) | 30% | Fires at ~300K on 1M — right balance for plan + TDD + review sessions. Paired with the opt-in `opus[1m]` pin (see issue #198) |
|
|
1023
1037
|
| General development (200K `opus`) | 75% | Leaves room for implementation after planning |
|
|
1024
1038
|
| Complex refactors (200K `opus`) | 80% | Slightly more context before compaction |
|
|
1025
1039
|
| CI pipelines | 60% | Short tasks, compact early to stay fast |
|
|
@@ -1035,7 +1049,7 @@ The thresholds above are community consensus — not empirically validated. For
|
|
|
1035
1049
|
|
|
1036
1050
|
### 1M vs 200K Context Window
|
|
1037
1051
|
|
|
1038
|
-
Claude Code supports both 200K and 1M context windows.
|
|
1052
|
+
Claude Code supports both 200K and 1M context windows. **This section is about Opus** — `opus[1m]` is an opt-in power-user pin, and ask yourself whether you actually need the headroom before setting it, because pinning the model at the top level disables Claude Code's auto-mode (see issue #198). **Sonnet 5 is a different case: it always runs at 1M natively** (no `[1m]` suffix, no opt-in decision, no auto-mode tradeoff) — see [`code.claude.com/docs/en/model-config#sonnet-5-context-window`](https://code.claude.com/docs/en/model-config#sonnet-5-context-window). The table below applies to choosing whether to pin Opus at 1M, not to Sonnet 5.
|
|
1039
1053
|
|
|
1040
1054
|
| | 200K Context (default / auto-mode) | 1M Context (`opus[1m]`, opt-in) |
|
|
1041
1055
|
|---|---|---|
|
|
@@ -1051,13 +1065,13 @@ Claude Code supports both 200K and 1M context windows. **`opus[1m]` is an opt-in
|
|
|
1051
1065
|
**Why `opus[1m]` is opt-in (issue #198):**
|
|
1052
1066
|
- **Pinning disables auto-mode.** Max-plan users pay for Claude Code's per-turn model selection (Sonnet for cheap tasks, Opus for hard ones, plus weekly-limit smoothing). A top-level `model` gives that up.
|
|
1053
1067
|
- **The 1M headroom has to earn it.** If your typical session stays under 150K, you're giving up auto-mode for headroom you're not using.
|
|
1054
|
-
-
|
|
1068
|
+
- **⚠️ `opus[1m]` is NOT guaranteed to mean Opus 4.6.** The alias auto-resolves to whichever Opus model Claude Code currently considers "latest" — that was Opus 4.6 when this alias was introduced, but it now means **Opus 4.8**. If you specifically want Opus 4.6 (Setup B — Stability, proven consistency), pin the explicit model string `claude-opus-4-6`, not the `opus[1m]` alias.
|
|
1055
1069
|
|
|
1056
|
-
**Opt in when:** you routinely cross 100K tokens in a single session (plan → TDD → review → CI shepherd on one feature), you want Opus 4
|
|
1070
|
+
**Opt in when:** you routinely cross 100K tokens in a single session (plan → TDD → review → CI shepherd on one feature), you want guaranteed 1M context on whichever Opus is current (or `claude-opus-4-6` explicitly if you want Opus 4.6 specifically), and you're OK losing auto-mode.
|
|
1057
1071
|
|
|
1058
1072
|
**Stay on auto-mode (default) when:** you're unsure, your work is mixed short/long, or you want Claude Code to do the model math for you.
|
|
1059
1073
|
|
|
1060
|
-
**How to opt in:** run `/model opus[1m]` in your session (transient), or set `"model"
|
|
1074
|
+
**How to opt in:** run `/model opus[1m]` in your session (transient) for whichever Opus is current, or `/model claude-opus-4-6` if you specifically want Opus 4.6; set `"model"` to either value in `.claude/settings.json` for a persistent pin. Requires Claude Code v2.1.154+ for the `opus[1m]` alias. The setup wizard's Step 9.5 also asks once, with default No.
|
|
1061
1075
|
|
|
1062
1076
|
**How to opt out:** remove the `model` line from `.claude/settings.json`, or run `/model` and pick "Default (recommended)".
|
|
1063
1077
|
|
|
@@ -1065,74 +1079,70 @@ Claude Code supports both 200K and 1M context windows. **`opus[1m]` is an opt-in
|
|
|
1065
1079
|
|
|
1066
1080
|
**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.
|
|
1067
1081
|
|
|
1068
|
-
### OpusPlan Tier (Opus planner + Sonnet driver, #395)
|
|
1082
|
+
### OpusPlan Tier (Opus planner + Sonnet driver, #395) — Setup C
|
|
1069
1083
|
|
|
1070
|
-
|
|
1084
|
+
This is **Setup C (OpusPlan Hybrid/Saver)** in `AI_SETUP_LANES.md`. CC's native `opusplan` alias gives you Opus reasoning during Plan Mode (Shift+Tab) and Sonnet execution — both Max-bundled, no API credit drain.
|
|
1071
1085
|
|
|
1072
|
-
| Layer | OpusPlan
|
|
1073
|
-
|
|
1074
|
-
| Planner | Opus 4.
|
|
1075
|
-
| Driver | Sonnet
|
|
1076
|
-
| Reviewer | GPT-5.5 xhigh | GPT-5.5 xhigh |
|
|
1077
|
-
| Effort | max (via `CLAUDE_CODE_EFFORT_LEVEL` env var) | max |
|
|
1086
|
+
| Layer | Setup C (OpusPlan) | Setup A (default) | Setup B (Stability) |
|
|
1087
|
+
|-------|--------------------|--------------------|----------------------|
|
|
1088
|
+
| Planner | Opus 4.8 `xhigh` (Plan Mode) | Sonnet 5 `high`→`xhigh` | Opus 4.6 `max` |
|
|
1089
|
+
| Driver | Sonnet 5 `high` (execute mode) | Sonnet 5 `high`→`xhigh` | Opus 4.6 `max` |
|
|
1090
|
+
| Reviewer | GPT-5.5 xhigh | GPT-5.5 xhigh | GPT-5.5 xhigh |
|
|
1078
1091
|
|
|
1079
1092
|
**How to opt in:**
|
|
1080
1093
|
```json
|
|
1081
1094
|
{
|
|
1082
1095
|
"model": "opusplan",
|
|
1083
1096
|
"env": {
|
|
1084
|
-
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-
|
|
1085
|
-
"CLAUDE_CODE_EFFORT_LEVEL": "max"
|
|
1097
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-8"
|
|
1086
1098
|
}
|
|
1087
1099
|
}
|
|
1088
1100
|
```
|
|
1089
1101
|
|
|
1102
|
+
Set effort per-session with `/effort` (planner `xhigh`, driver `high`) rather than a shell-rc env var — see "Recommended Effort Level" above for why.
|
|
1103
|
+
|
|
1090
1104
|
**⚠️ 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
1105
|
|
|
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.
|
|
1106
|
+
**When to use OpusPlan (Setup C):** routine SDLC work, simple repos, cost-conscious sessions where you still want an Opus plan-mode pass. Press Shift+Tab before architecture/blast-radius decisions to get Opus reasoning. For most day-to-day work, Setup A (Sonnet 5 + Fable) is the simpler default — see "Choosing Your Model" in [README.md](../README.md).
|
|
1093
1107
|
|
|
1094
|
-
**When to stay
|
|
1108
|
+
**When to stay on Setup B (Stability):** stakes-flagged repos, architecture work, security review, long shepherd sessions where you want proven Opus 4.6 consistency end-to-end rather than a split planner/driver.
|
|
1095
1109
|
|
|
1096
1110
|
**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.
|
|
1097
1111
|
|
|
1098
1112
|
**Tradeoffs (be honest):**
|
|
1099
|
-
- Sonnet
|
|
1100
|
-
- Mixed-mode disables auto-mode (same as
|
|
1113
|
+
- The Sonnet driver will drop some fine-grained self-review moves compared to an Opus-coder run — it's fast, less deliberate. The Opus planner and GPT-5.5 reviewer catch them, but expect more "fix in round 2" cycles.
|
|
1114
|
+
- Mixed-mode disables auto-mode (same as any pinned model). The pin is per-session — to switch back, remove the `model` line.
|
|
1101
1115
|
|
|
1102
|
-
### Latest tier — Opus 4.8 (
|
|
1116
|
+
### Latest tier — Opus 4.8 (escalation model, #395)
|
|
1103
1117
|
|
|
1104
|
-
The wizard's
|
|
1118
|
+
The wizard's default is **Sonnet 5** (Setup A — see "Choosing Your Model" in [README.md](../README.md) for the full evidence). **Opus 4.8** is the escalation model: reach for it when Sonnet 5 stalls on architecture, a stuck bug, or anything needing deeper reasoning — not as a daily driver. It ships SWE-Bench Pro / Terminal-Bench 2.1 gains, dynamic-workflows, and parallel-subagent-swarm features 4.6 doesn't have.
|
|
1105
1119
|
|
|
1106
|
-
**When
|
|
1107
|
-
-
|
|
1120
|
+
**When Opus 4.8 is the right call:**
|
|
1121
|
+
- Sonnet 5 is stuck (2+ failed attempts) and you want a fresh, deeper-reasoning pass
|
|
1108
1122
|
- You use dynamic workflows / parallel subagent swarms — introduced in 4.8, not available in 4.6
|
|
1109
|
-
- You'
|
|
1123
|
+
- You want Anthropic's newest benchmark wins (SWE-Bench Pro 69.2% vs 4.7's 64.3%, Terminal-Bench 2.1 74.6% vs 4.7's 66.1%) for a specific hard task
|
|
1110
1124
|
- You haven't hit 4.7/4.8 token burn / false-green / dropped-constraint regressions in your own work
|
|
1111
1125
|
|
|
1112
1126
|
**Tradeoffs (be honest):**
|
|
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
|
|
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)
|
|
1127
|
+
- **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 — this is exactly why it's an escalation model, not a daily driver
|
|
1115
1128
|
- 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))
|
|
1116
1129
|
- [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
|
|
1117
1130
|
- Anthropic-supported until ≥ May 28, 2027 (longer runway than 4.6)
|
|
1118
1131
|
|
|
1119
|
-
**How to opt in (
|
|
1132
|
+
**How to opt in for a session (escalate, don't pin globally):**
|
|
1120
1133
|
|
|
1121
|
-
|
|
1134
|
+
`/model claude-opus-4-8` at the start of the session, then `/effort xhigh`. Reserve a global pin in `~/.claude/settings.json` for maintainers who've decided Opus 4.8 is their permanent driver, understanding the cost tradeoff above:
|
|
1122
1135
|
```json
|
|
1123
1136
|
{
|
|
1124
|
-
"model": "claude-opus-4-8"
|
|
1125
|
-
"env": {
|
|
1126
|
-
"CLAUDE_CODE_EFFORT_LEVEL": "max"
|
|
1127
|
-
}
|
|
1137
|
+
"model": "claude-opus-4-8"
|
|
1128
1138
|
}
|
|
1129
1139
|
```
|
|
1130
1140
|
|
|
1131
1141
|
On Max plans, Opus auto-upgrades to 1M context. No `[1m]` suffix needed.
|
|
1132
1142
|
|
|
1133
|
-
**Effort tuning for 4.8:**
|
|
1143
|
+
**Effort tuning for 4.8:** `xhigh` (see the per-model effort table in "Recommended Effort Level" above — Opus 4.8 is escalation-only, so it doesn't get its own `max` tier the way Opus 4.6 does).
|
|
1134
1144
|
|
|
1135
|
-
**Escape hatch:**
|
|
1145
|
+
**Escape hatch:** remove the `model` line (or run `/model sonnet`) to return to Sonnet 5, the wizard's recommended default.
|
|
1136
1146
|
|
|
1137
1147
|
### Community Feature-Discovery Scanner (roadmap #207)
|
|
1138
1148
|
|
|
@@ -2147,7 +2157,7 @@ The light hook outputs text that **instructs Claude** to invoke skills:
|
|
|
2147
2157
|
|
|
2148
2158
|
```
|
|
2149
2159
|
AUTO-INVOKE SKILL (Claude MUST do this FIRST):
|
|
2150
|
-
- implement/fix/refactor/feature/bug/build/test/TDD → Invoke: Skill tool, skill="sdlc"
|
|
2160
|
+
- implement/fix/refactor/feature/bug/build/test/TDD/release/publish/deploy → Invoke: Skill tool, skill="sdlc"
|
|
2151
2161
|
```
|
|
2152
2162
|
|
|
2153
2163
|
**This is text-based, not programmatic.** Claude reads this instruction and follows it. When Claude sees your message is an implementation task, it invokes the sdlc skill using the Skill tool. This loads the full SDLC guidance into context.
|
|
@@ -2180,7 +2190,7 @@ SDLC BASELINE:
|
|
|
2180
2190
|
5. 🛑 ALL TESTS MUST PASS BEFORE COMMIT - NO EXCEPTIONS
|
|
2181
2191
|
|
|
2182
2192
|
AUTO-INVOKE SKILL (Claude MUST do this FIRST):
|
|
2183
|
-
- implement/fix/refactor/feature/bug/build/test/TDD → Invoke: Skill tool, skill="sdlc"
|
|
2193
|
+
- implement/fix/refactor/feature/bug/build/test/TDD/release/publish/deploy → Invoke: Skill tool, skill="sdlc"
|
|
2184
2194
|
- DON'T invoke for: questions, explanations, reading/exploring code, simple queries
|
|
2185
2195
|
- DON'T wait for user to type /sdlc - AUTO-INVOKE based on task type
|
|
2186
2196
|
|
|
@@ -2203,6 +2213,8 @@ chmod +x .claude/hooks/sdlc-prompt-check.sh
|
|
|
2203
2213
|
|
|
2204
2214
|
## Step 5: Create the TDD Hook
|
|
2205
2215
|
|
|
2216
|
+
**Illustrative, not exhaustive:** this teaches the PreToolUse/exit-2 blocking mechanic with one hook. The wizard ships **9 production hooks total** — only this one and Step 4's light hook have hand-typed templates in this doc; the other 7 (`codex-gate-check.sh`, `goal-confidence-check.sh`, `instructions-loaded-check.sh`, `model-effort-check.sh`, `precompact-seam-check.sh`, `codex-review-stop-check.sh`, `token-spike-check.sh`) don't, because there's no substitute for the real files. **For the complete, always-in-sync set, run `npx agentic-sdlc-wizard@latest init`** instead of hand-building hooks 3-9 from prose descriptions elsewhere in this doc.
|
|
2217
|
+
|
|
2206
2218
|
Create `.claude/hooks/tdd-pretool-check.sh`:
|
|
2207
2219
|
|
|
2208
2220
|
```bash
|
|
@@ -2215,22 +2227,35 @@ TOOL_INPUT=$(cat)
|
|
|
2215
2227
|
|
|
2216
2228
|
# Extract the file path being edited (requires jq)
|
|
2217
2229
|
FILE_PATH=$(echo "$TOOL_INPUT" | jq -r '.tool_input.file_path // empty')
|
|
2230
|
+
MARKER="$CLAUDE_PROJECT_DIR/.claude/.tdd-test-touched"
|
|
2231
|
+
|
|
2232
|
+
# A test file was touched — mark it and allow.
|
|
2233
|
+
if [[ "$FILE_PATH" =~ (\.test\.|\.spec\.|/__tests__/|/tests?/) ]]; then
|
|
2234
|
+
touch "$MARKER" 2>/dev/null
|
|
2235
|
+
exit 0
|
|
2236
|
+
fi
|
|
2218
2237
|
|
|
2219
2238
|
# CUSTOMIZE: Change this pattern to match YOUR source directory
|
|
2220
2239
|
# Examples: "/src/", "/app/", "/lib/", "/packages/", "/server/"
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2240
|
+
# Match BOTH absolute (*/src/*) and cwd-relative (src/*) forms — a
|
|
2241
|
+
# leading-slash-only pattern silently no-ops on relative file_paths
|
|
2242
|
+
# like "src/app.js" (Codex finding, #436 round 1).
|
|
2243
|
+
if [[ "$FILE_PATH" == *"/src/"* || "$FILE_PATH" == "src/"* ]]; then
|
|
2244
|
+
if [ ! -f "$MARKER" ]; then
|
|
2245
|
+
# exit 2 + stderr = BLOCK. Claude Code only denies a tool call on exit 2
|
|
2246
|
+
# with stderr output — exit 0 always allows regardless of stdout content.
|
|
2247
|
+
echo "TDD RED REQUIRED: no test file touched yet. Write a failing test before implementing in src/." >&2
|
|
2248
|
+
exit 2
|
|
2249
|
+
fi
|
|
2226
2250
|
fi
|
|
2227
2251
|
|
|
2228
2252
|
# No output = allow the tool to proceed
|
|
2229
2253
|
```
|
|
2230
2254
|
|
|
2231
2255
|
**CUSTOMIZE:**
|
|
2232
|
-
1. Replace `"/src/"` with your source directory pattern
|
|
2256
|
+
1. Replace `"/src/"` / `"src/"` with your source directory pattern (both forms — see comment above)
|
|
2233
2257
|
2. Ensure `jq` is installed (or adapt to your preferred JSON parser)
|
|
2258
|
+
3. This minimal version tracks "a test was touched" with one marker file for the whole project, so once unlocked it stays unlocked. The wizard's actual shipped `hooks/tdd-pretool-check.sh` (in this repo) is session-scoped instead (resets each Claude Code session) and avoids `jq` for session-ID parsing — a plain `jq`-based extraction silently disabled this exact gate once when `jq` was missing (#436 round 1). Copy that file directly for the production-hardened version instead of hand-typing this one.
|
|
2234
2259
|
|
|
2235
2260
|
**Make it executable:**
|
|
2236
2261
|
```bash
|
|
@@ -2248,7 +2273,7 @@ Create `.claude/skills/sdlc/SKILL.md`:
|
|
|
2248
2273
|
````markdown
|
|
2249
2274
|
---
|
|
2250
2275
|
name: sdlc
|
|
2251
|
-
description: Full SDLC workflow for implementing features, fixing bugs, refactoring code,
|
|
2276
|
+
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.
|
|
2252
2277
|
argument-hint: [task description]
|
|
2253
2278
|
---
|
|
2254
2279
|
# SDLC Skill - Full Development Workflow
|
|
@@ -2354,13 +2379,15 @@ Before presenting approach, STATE your confidence:
|
|
|
2354
2379
|
|
|
2355
2380
|
| Level | Meaning | Action | Effort |
|
|
2356
2381
|
|-------|---------|--------|--------|
|
|
2357
|
-
| HIGH (90%+) | Know exactly what to do | Present approach, proceed after approval |
|
|
2358
|
-
| MEDIUM (60-89%) | Solid approach, some uncertainty | Present approach, highlight uncertainties |
|
|
2359
|
-
| LOW (<60%) | Not sure | ASK USER before proceeding | **
|
|
2360
|
-
| FAILED 2x | Something's wrong | STOP. ASK USER immediately | **
|
|
2361
|
-
| CONFUSED | Can't diagnose why something is failing | STOP. Describe what you tried, ask for help | **
|
|
2382
|
+
| HIGH (90%+) | Know exactly what to do | Present approach, proceed after approval | Model default |
|
|
2383
|
+
| MEDIUM (60-89%) | Solid approach, some uncertainty | Present approach, highlight uncertainties | Model default |
|
|
2384
|
+
| LOW (<60%) | Not sure | ASK USER before proceeding | **Escalate effort now** — don't wait |
|
|
2385
|
+
| FAILED 2x | Something's wrong | STOP. ASK USER immediately | **Escalate effort now** — you're burning cycles at lower effort |
|
|
2386
|
+
| CONFUSED | Can't diagnose why something is failing | STOP. Describe what you tried, ask for help | **Escalate effort now** — stop spinning |
|
|
2387
|
+
|
|
2388
|
+
"Model default" and "escalate" are model-aware, not a blanket `max` — see "Recommended Effort Level" above for the per-model table (Sonnet 5: `high`→`xhigh`; Opus 4.8: `xhigh`; Opus 4.6: `max`; Fable: `high`).
|
|
2362
2389
|
|
|
2363
|
-
**Dynamic bumping is NOT optional.** "Consider
|
|
2390
|
+
**Dynamic bumping is NOT optional.** "Consider higher effort" is the same as "ignore this" in practice. If your confidence drops or tests fail twice, bump effort BEFORE the next attempt — spinning at low effort is an SDLC failure mode.
|
|
2364
2391
|
|
|
2365
2392
|
## Self-Review Loop (CRITICAL)
|
|
2366
2393
|
|
|
@@ -2474,7 +2501,9 @@ When the reviewer finds issues, respond per-finding instead of silently fixing e
|
|
|
2474
2501
|
|
|
2475
2502
|
### Convergence
|
|
2476
2503
|
|
|
2477
|
-
|
|
2504
|
+
3 recheck rounds (4 total including initial review) is the default budget for a typical change. If still NOT CERTIFIED after round 4, escalate to the user with a summary of open findings rather than spinning indefinitely.
|
|
2505
|
+
|
|
2506
|
+
**Exception — known-large migrations:** the round cap is a heuristic against spinning on a shrinking tail of nitpicks, not a hard stop. Judge convergence by the *trend* in finding quality, not the round number: if every round is still surfacing a genuinely new, independently-verified, real issue — especially if severity is flat or increasing (later rounds finding live-code bugs, not just prose) — keep going past round 4. Only stop when a round returns CERTIFIED, or consecutive rounds return nothing but nitpicks/false positives. (Source: v1.84.0 release review — a repo-wide model-recommendation migration ran 7 rounds, each finding something real; round 5 found a live `SessionStart` hook actively contradicting the new policy, more consequential than anything rounds 1-3 found. Escalating at round 4 per the default heuristic would have shipped that bug. 2026-07-04.)
|
|
2478
2507
|
|
|
2479
2508
|
```
|
|
2480
2509
|
Self-review passes → handoff.json (round 1, PENDING_REVIEW)
|
|
@@ -3041,7 +3070,7 @@ If deployment fails or post-deploy verification catches issues:
|
|
|
3041
3070
|
|
|
3042
3071
|
**SDLC.md:**
|
|
3043
3072
|
```markdown
|
|
3044
|
-
<!-- SDLC Wizard Version: 1.
|
|
3073
|
+
<!-- SDLC Wizard Version: 1.84.0 -->
|
|
3045
3074
|
<!-- Setup Date: [DATE] -->
|
|
3046
3075
|
<!-- 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 -->
|
|
3047
3076
|
<!-- Git Workflow: [PRs or Solo] -->
|
|
@@ -3703,7 +3732,7 @@ These signals are community-observed behavior on paid plans (Max/Team) — not i
|
|
|
3703
3732
|
| Signal | What It Means | SDLC Action |
|
|
3704
3733
|
|--------|---------------|-------------|
|
|
3705
3734
|
| **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.**
|
|
3735
|
+
| **>150K context** | Sessions staying large between compactions. | **Context-window dependent.** Setup A (Sonnet 5, native 1M): recommended `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=75` fires at ~725K — >150K is expected and fine, the real question is whether the task needed that much headroom. Setup B (Opus 4.6, 200K unless you opt into `opus[1m]`): if you opted into `opus[1m]`, pair it with `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=30`; on plain 200K, the default ~95% trigger is fine. `/compact` between planning and implementation regardless of lane. |
|
|
3707
3736
|
| **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
3737
|
|
|
3709
3738
|
### Reduce Consumption
|
|
@@ -4529,6 +4558,26 @@ Use the best tool for the job. If Claude Code builds it better, use theirs.
|
|
|
4529
4558
|
|
|
4530
4559
|
---
|
|
4531
4560
|
|
|
4561
|
+
## Cowork Support
|
|
4562
|
+
|
|
4563
|
+
**Claude Cowork** is a separate product from Claude Code — a desktop application for knowledge workers, not developers. It shares Claude Code's plugin format, so this wizard ships a Cowork-native subset: [`cowork/`](cowork/README.md).
|
|
4564
|
+
|
|
4565
|
+
**What it provides:** 2 portable skills (`/sdlc-wizard-cowork:sdlc`, `/sdlc-wizard-cowork:feedback`) plus 3 **prompt-based hooks** — the Cowork equivalents of this wizard's bash hooks, since Cowork sessions have no shell access:
|
|
4566
|
+
|
|
4567
|
+
| Cowork Hook | Claude Code Equivalent | Event |
|
|
4568
|
+
|-------------|------------------------|-------|
|
|
4569
|
+
| TDD check | `tdd-pretool-check.sh` | `PreToolUse` (Write/Edit/MultiEdit) |
|
|
4570
|
+
| SDLC baseline | `sdlc-prompt-check.sh` | `UserPromptSubmit` |
|
|
4571
|
+
| Completion check | *(new — no CC equivalent)* | `Stop` |
|
|
4572
|
+
|
|
4573
|
+
**What's NOT ported and why** (CLI-specific, filesystem-dependent, or event-unavailable in Cowork): `instructions-loaded-check.sh`, `model-effort-check.sh`, `precompact-seam-check.sh`, the Setup/Update skills, cross-model review via `codex exec` (use ChatGPT/Codex web manually instead), and the CI shepherd (`gh pr`, `git push` — these happen outside a Cowork session).
|
|
4574
|
+
|
|
4575
|
+
**Install:** as a plugin in Claude Desktop or claude.ai settings, pointing at `https://github.com/BaseInfinity/claude-sdlc-wizard/tree/main/cowork`. See [`cowork/README.md`](cowork/README.md) for full details, or `claude --plugin-dir ./cowork` for local testing.
|
|
4576
|
+
|
|
4577
|
+
**Drift prevention:** the skills in `cowork/skills/` are copies of the canonical `skills/` — `tests/test-cowork-drift.sh` fails CI if they diverge, forcing this package to stay in sync whenever the canonical skills update.
|
|
4578
|
+
|
|
4579
|
+
---
|
|
4580
|
+
|
|
4532
4581
|
## Community Contributions (Give Back!)
|
|
4533
4582
|
|
|
4534
4583
|
**This wizard belongs to the community, not any individual.**
|