agentic-sdlc-wizard 1.33.0 → 1.34.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.33.0",
16
+ "version": "1.34.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.33.0",
3
+ "version": "1.34.0",
4
4
  "description": "SDLC enforcement for AI agents — TDD, planning, self-review, CI shepherd",
5
5
  "author": {
6
6
  "name": "Stefan Ayala",
package/CHANGELOG.md CHANGED
@@ -4,6 +4,32 @@ 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.34.0] - 2026-04-17
8
+
9
+ ### Added
10
+ - Memory Audit Protocol for promoting private-memory lessons to shared docs (#189)
11
+ - New `/sdlc` subsection under "After Session (Capture Learnings)" defines a three-bucket classifier (`promote` / `keep` / `manual-review`) with a rule-based privacy denylist (`type: user`/`reference` → keep, `project`/`feedback` → manual-review)
12
+ - YAML frontmatter parser in `tests/test-memory-audit-protocol.sh` normalizes inline comments, quoted values, and whitespace so variants like `type: "user" # external` still route to keep
13
+ - `SDLC.md` now has a `## Lessons Learned` section seeded with 7 verified technical gotchas (GH CLI stdout, `workflows` YAML scope, GITHUB_TOKEN workflow triggers, GHA `${{ }}` backtick substitution, macOS bash 3.x, stderr/stdout separation for JSON parsing, `continue-on-error` + `||` masking); each entry cites its originating PR or incident date and was re-verified with a runnable repro before promotion
14
+ - 10-fixture corpus at `tests/fixtures/memory-audit-corpus/` (6 promote / 2 keep / 2 manual-review) with `test_expected` frontmatter seeds the future LLM-gated quality runner
15
+ - 12-test protocol suite covers structure, rule-based denylist, YAML-variant hardening, corpus consistency (promote fixtures route to manual-review under rule-based), and corpus shape
16
+ - Codex xhigh 3-round code review: 4/10 → 8/10 → 10/10 CERTIFIED. Caught two false lessons in private memory (`${3:-{}}` brace-default claim and `--argjson result` jq-conflict claim) that were retracted with dated strikethroughs — the protocol's first real use prevented its own false claims from shipping
17
+ - CLI distributes skill updates + new SDLC.md section; CI wire-up in `.github/workflows/ci.yml` (validate job)
18
+ - API feature detection shepherd for Claude API release notes (#100, PRs #184, #186, #187)
19
+ - LLM-free weekly detector at `.github/workflows/weekly-api-update.yml` polls `platform.claude.com/docs/en/release-notes/api.md`
20
+ - `scripts/parse-api-changelog.py` parses ATX date headers with ordinal-date normalizer and bullet-summary capture (non-date sub-headers like `#### SDKs` no longer terminate bullet extraction); 200-char truncation with ellipsis; tab scrub
21
+ - `scripts/persist-api-state.sh` writes last-seen date with branch-protection-safe non-blocking push; opens/updates a single `api-review-needed` tracking issue with enriched bullet summaries (not just dates)
22
+ - `instructions-loaded-check.sh` nudges at session start when open issues exist; gated on local workflow presence so consumer forks see only their own detector's issues
23
+ - 33 tests including 8 fixture-based parser tests (bullet capture, subheader boundary, tab scrub, truncation, ordinal dates) and 2 integration tests
24
+ - Codex xhigh 5 rounds across 2 PRs: 9/10 CERTIFIED. Found-in-prod P0 hotfix in #187 — `gh api` writes JSON error bodies to stdout (not stderr), so the label-create `already_exists` check was broken after the first successful dispatch; pattern now captures both streams
25
+
26
+ ### Fixed
27
+ - `gh api` error handling in `weekly-api-update.yml` now captures stdout+stderr together for `already_exists` detection on label creation (#187). Added as portable lesson in `SDLC.md` Lessons Learned
28
+
29
+ ### Docs
30
+ - `/less-permission-prompts` Claude Code native skill surfaced in wizard and setup documentation (#183)
31
+ - README community section restyled with visual Discord badge for Automation Station
32
+
7
33
  ## [1.33.0] - 2026-04-17
8
34
 
9
35
  ### Added
@@ -2662,7 +2662,7 @@ If deployment fails or post-deploy verification catches issues:
2662
2662
 
2663
2663
  **SDLC.md:**
2664
2664
  ```markdown
2665
- <!-- SDLC Wizard Version: 1.33.0 -->
2665
+ <!-- SDLC Wizard Version: 1.34.0 -->
2666
2666
  <!-- Setup Date: [DATE] -->
2667
2667
  <!-- 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 -->
2668
2668
  <!-- Git Workflow: [PRs or Solo] -->
@@ -3135,6 +3135,8 @@ Want me to file these? (yes/no/not now)
3135
3135
 
3136
3136
  **`/revise-claude-md` scope:** Only updates CLAUDE.md. It does NOT touch feature docs, TESTING.md, hooks, or skills. Use it for general project context that applies across the codebase.
3137
3137
 
3138
+ **Memory Audit Protocol:** Per-user memory at `~/.claude/projects/<proj>/memory/` accumulates private learnings. Some are portable technical lessons that belong in shared docs. The `/sdlc` skill's **Memory Audit Protocol** section (under "After Session (Capture Learnings)") defines a three-bucket classifier (`promote` / `keep` / `manual-review`) with a type-based denylist that keeps `user`/`reference` entries private and routes `project`/`feedback` entries to human review. Run at end-of-release or after debugging-heavy sessions. Human approves every promotion chunk-by-chunk before apply.
3139
+
3138
3140
  **When to do mini-retro:** After features, tricky bugs, or discovering gotchas. Skip for one-line fixes or questions.
3139
3141
 
3140
3142
  **The SDLC evolves:** Weekly research, monthly deep-dives, and CI friction signals feed improvements. Human approves, the system gets better.
@@ -3721,7 +3723,7 @@ Walk through updates? (y/n)
3721
3723
  Store wizard state in `SDLC.md` as metadata comments (invisible to readers, parseable by Claude):
3722
3724
 
3723
3725
  ```markdown
3724
- <!-- SDLC Wizard Version: 1.33.0 -->
3726
+ <!-- SDLC Wizard Version: 1.34.0 -->
3725
3727
  <!-- Setup Date: 2026-01-24 -->
3726
3728
  <!-- Completed Steps: step-0.1, step-0.2, step-1, step-2, step-3, step-4, step-5, step-6, step-7, step-8, step-9 -->
3727
3729
  <!-- Git Workflow: PRs -->
@@ -4060,6 +4062,23 @@ When Anthropic provides official plugins that overlap with this SDLC:
4060
4062
 
4061
4063
  **Re-run `claude-code-setup` periodically** (quarterly, or when your project expands in scope) to catch new automations — MCP servers, hooks, subagents — that weren't relevant at initial setup but are now.
4062
4064
 
4065
+ **API feature shepherd (self-maintenance, roadmap #100):**
4066
+
4067
+ The wizard watches the **Anthropic API changelog** — not just Claude Code CLI releases — for new betas, tools, and agent features. The detector runs in `.github/workflows/weekly-api-update.yml`, is intentionally LLM-free, and only opens a tracking issue labeled `api-review-needed` when new entries appear at `platform.claude.com/docs/en/release-notes/api`.
4068
+
4069
+ 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.
4070
+
4071
+ 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.
4072
+
4073
+ **Complementary native skills worth knowing:**
4074
+
4075
+ | Native Skill | What It Does | When to Run |
4076
+ |--------------|--------------|-------------|
4077
+ | `/less-permission-prompts` | Scans transcripts for common read-only Bash/MCP calls and proposes a prioritized allowlist | After a few sessions — reduces permission friction without auto mode |
4078
+ | `/permissions` | Pre-allow specific commands and check them into `.claude/settings.json` | Anytime you want an auditable team allowlist |
4079
+
4080
+ These are shipped by Claude Code itself. The wizard doesn't reimplement them — it points you at them so you benefit from the native version's ongoing maintenance.
4081
+
4063
4082
  ### When Claude Code Improves
4064
4083
 
4065
4084
  Claude Code is actively improving. When they add built-in features:
package/README.md CHANGED
@@ -237,7 +237,17 @@ This isn't the only Claude Code SDLC tool. Here's an honest comparison:
237
237
 
238
238
  ## Community
239
239
 
240
- Come join **[Automation Station](https://discord.com/invite/fGPEF7GHrF)** — a community Discord packed with software engineers bringing 40+ years of combined experience across every area of the stack (frontend, backend, infra, embedded, data, QA, DevOps, you name it). Share patterns, ask questions, compare notes on AI agents, automation, and SDLC tooling.
240
+ <div align="center">
241
+
242
+ [![Discord](https://img.shields.io/badge/Discord-Automation%20Station-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/fGPEF7GHrF)
243
+
244
+ **[Automation Station](https://discord.com/invite/fGPEF7GHrF)** — a community Discord packed with software engineers bringing 40+ years of combined experience across every area of the stack.
245
+
246
+ _Frontend · Backend · Infra · Embedded · Data · QA · DevOps_
247
+
248
+ Share patterns, ask questions, compare notes on AI agents, automation, and SDLC tooling.
249
+
250
+ </div>
241
251
 
242
252
  ## Contributing
243
253
 
@@ -98,6 +98,29 @@ if [ -d "$PROJECT_DIR/.claude/skills/update" ]; then
98
98
  done
99
99
  fi
100
100
 
101
+ # API feature review nudge (#100) — surface open 'api-review-needed' issues
102
+ # opened by .github/workflows/weekly-api-update.yml so the session picks up
103
+ # new API features without waiting for manual discovery.
104
+ #
105
+ # Gated on LOCAL presence of the detector workflow: the CLI distributes this
106
+ # hook to consumer projects, and we don't want to pester those users with
107
+ # upstream-wizard issues. The nudge only fires when the current repo owns
108
+ # the detector (= the wizard repo or a fork of it).
109
+ if [ -f "$PROJECT_DIR/.github/workflows/weekly-api-update.yml" ] && \
110
+ command -v gh > /dev/null 2>&1; then
111
+ # Query the current repo (not hardcoded upstream) — in a fork, users see
112
+ # their own detector's issues, not ours.
113
+ API_REVIEW_COUNT=$(gh issue list \
114
+ --state open \
115
+ --label "api-review-needed" \
116
+ --limit 1 \
117
+ --json number \
118
+ --jq 'length' 2>/dev/null) || API_REVIEW_COUNT=""
119
+ if [[ "$API_REVIEW_COUNT" =~ ^[0-9]+$ ]] && [ "$API_REVIEW_COUNT" -gt 0 ]; then
120
+ echo "Anthropic API features pending review: ${API_REVIEW_COUNT} open issue(s) with label 'api-review-needed' (see .github/workflows/weekly-api-update.yml)"
121
+ fi
122
+ fi
123
+
101
124
  # Claude Code version check (non-blocking, best-effort)
102
125
  if command -v claude > /dev/null 2>&1 && command -v npm > /dev/null 2>&1; then
103
126
  CC_LOCAL=$(claude --version 2>/dev/null | grep -o '[0-9][0-9.]*' | head -1) || true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-sdlc-wizard",
3
- "version": "1.33.0",
3
+ "version": "1.34.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"
@@ -717,6 +717,40 @@ If this session revealed insights, update the right place:
717
717
  - **General project context** → `CLAUDE.md` (or `/revise-claude-md`)
718
718
  - **Plan files** → If this session's work came from a plan file, delete it or mark it complete. Stale plans mislead future sessions into thinking work is still pending
719
719
 
720
+ ### Memory Audit Protocol
721
+
722
+ Per-user memory at `~/.claude/projects/<proj>/memory/` accumulates private learnings. Some belong there (user preferences, external references). Others are portable technical lessons (tool quirks, platform gotchas, bash/GHA/macOS footguns) that would save the next contributor hours. Run this audit to promote the portable ones.
723
+
724
+ **When to run:**
725
+ - End-of-release (before cutting a tag)
726
+ - After a debugging-heavy session with multiple memory additions
727
+ - On explicit "audit my memory" request
728
+
729
+ **Classify each memory file in `~/.claude/projects/<proj>/memory/`:**
730
+
731
+ 1. **Rule-based denylist (deterministic, no LLM):**
732
+ - `type: user` → `keep` (user identity, preferences — never promote)
733
+ - `type: reference` → `keep` (external pointers to Discord/URL/etc — private by default)
734
+ - `type: project` → `manual-review` (often mixed state + portable lesson — human decides)
735
+ - `type: feedback` → `manual-review` (often mixed personal preference + portable rule — human decides)
736
+ - Parser must normalize YAML variants (`type: "user"`, `type: user # comment`, surrounding whitespace) — see `tests/test-memory-audit-protocol.sh::apply_denylist_rule` for the reference implementation
737
+ 2. **Remaining entries** (no type, or type outside the 4 above) fall through to human-gated review. An LLM-assisted classification runner is Prove-It-Gated: build it only after running this protocol 4+ times with manual classification. Until then, human review at promotion time IS the quality gate
738
+
739
+ **Destinations for `promote` entries (no new files — use existing wizard destinations):**
740
+
741
+ | Content | Target |
742
+ |---------|--------|
743
+ | Language/tool/platform gotchas (bash, gh CLI, GHA, macOS) | `SDLC.md` → `## Lessons Learned` section |
744
+ | Testing gotchas (flaky patterns, mock-vs-integration lessons) | `TESTING.md` |
745
+ | Tool-specific quirks tied to a skill | That skill's `SKILL.md` |
746
+ | Process rules that should govern the project | `CLAUDE.md` |
747
+
748
+ **Tracking:** When you promote an entry, add `promoted_to: <path>` to that memory file's YAML frontmatter. Subsequent audits skip already-promoted entries.
749
+
750
+ **Human gate is MANDATORY.** Protocol produces diffs; user approves chunk-by-chunk before apply. Never auto-apply — private memory touching public docs needs human judgement.
751
+
752
+ **Prove It Gate:** If you find yourself running this protocol 4+ times and manually doing the same classification work, that's evidence to build a `/memory-audit` slash command AND wire the LLM-gated quality tests (8/10 classification, 6/6 destination). Until then, protocol + human review is enough — and no stub tests that skip (they mislead reviewers into thinking a gate exists when it doesn't).
753
+
720
754
  ## Post-Mortem: When Process Fails, Feed It Back
721
755
 
722
756
  **Every process failure becomes an enforcement rule.** When you skip a step and it causes a problem, don't just fix the symptom — add a gate so it can't happen again.
@@ -224,10 +224,13 @@ Tell the user:
224
224
  > **Exit Claude Code and restart it** for the new configuration to take effect.
225
225
  > On restart, the SDLC hook will fire and you'll see the checklist in every response.
226
226
  >
227
- > **Optional next step:**
227
+ > **Optional next steps:**
228
228
  > - Run `/claude-automation-recommender` for stack-specific tooling suggestions (MCP servers, formatting hooks, type-checking hooks, plugins)
229
+ > - After a few sessions, run `/less-permission-prompts` — a native Claude Code skill
230
+ > that scans your transcripts for common read-only Bash/MCP calls and proposes a
231
+ > prioritized allowlist. Reduces permission friction without enabling auto mode.
229
232
  >
230
- > The recommender is complementary to the SDLC wizard — it adds tooling recommendations, not process enforcement.
233
+ > Both are complementary to the SDLC wizard — they add tooling and quality-of-life, not process enforcement.
231
234
 
232
235
  ## Rules
233
236
 
@@ -46,9 +46,10 @@ Parse all CHANGELOG entries between the user's installed version and the latest.
46
46
 
47
47
  ```
48
48
  Installed: 1.24.0
49
- Latest: 1.33.0
49
+ Latest: 1.34.0
50
50
 
51
51
  What changed:
52
+ - [1.34.0] API feature detection shepherd for Claude releases, Memory Audit Protocol with 7 verified lessons (+2 caught-and-retracted), /less-permission-prompts surfaced, ...
52
53
  - [1.33.0] opus[1m] as SDLC default, dual-channel install drift guardrails, model/effort session-start nudge, ...
53
54
  - [1.32.0] Opus 4.7 + xhigh support, model/effort upgrade detection, benchmark ceiling audit, ...
54
55
  - [1.31.0] Hook false-positive fix for non-SDLC dirs, ephemeral marketplace path warning, ...