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