Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,21 @@ All notable changes to this project. Format: [Keep a Changelog](https://keepacha

## Unreleased

- **feat: stack-alignment monitor — manifest schema v2 + two new SessionStart drift dimensions + `/verify-setup` §4b/§4c.** Extends the MCP drift monitor (PR #51) with two more dimensions: **stack drift** (compares the set of repo-root stack manifests — `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `Gemfile`, `pom.xml`, `build.gradle` — at scaffold time vs. now) and **command alignment** (checks that the first binary of each configured `cmd_typecheck`/`cmd_lint`/`cmd_test` still has a matching stack manifest in the repo). `.claude/.cc-manifest.json` bumps to `manifest_version: 2` with two new fields (`stack_manifests`, `check_commands`); the SessionStart hook (`sessionstart-drift-check.sh`) gains §2 + §3 emitting one terse line per drifted dimension, all pointing at `/verify-setup`. `/verify-setup` gains §4b + §4c narrative blocks. Compatibility: v2 hook reads v1 manifests as if the new fields were empty (no false drift on PR #51 baselines); v1 hook seeing a v2 manifest fires the existing version-skew nudge. §3 carries a pre-bootstrap skip (configured binary's expected manifest must have been in the baseline `stack_manifests` set) so brand-new scaffolds on empty dirs stay silent — same spirit as the stop-hook manifest-missing skip rule from v2.4.0. New helpers: `detect_stack_manifests()`, `extract_first_binaries()` in `configure.py`. New tests: `test/cc-manifest/test-stack-manifests-detected.sh`, `test/cc-manifest/test-check-commands-extracted.sh`, seven new `test/sessionstart-drift-check/test-*.sh` fixtures, `test/verify-setup/test-stack-alignment-spec-present.sh`. Spec + plan: `docs/superpowers/specs/2026-05-21-stack-alignment-check-design.md` and `docs/superpowers/plans/2026-05-21-stack-alignment-check.md` (gitignored, local-only working artifacts).
- **chore(compat): survey Claude Code 2.1.133–2.1.146; track SchemaStore PR #5706.** Resurveyed the upstream CHANGELOG and the SchemaStore catalog after a 9-day gap. The original gating PR #5665 (sync to v2.1.138) was closed 2026-05-19 with comment "Superseded by #5706 which syncs to v2.1.143" — net win for batching since #5706 also picks up `worktree.bgIsolation`, `subagentStatusLine`, `statusLine.hideVimModeIndicator`, `sandbox.failIfUnavailable`, five env vars (`ANTHROPIC_WORKSPACE_ID`, `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE`, `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`, `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY`, `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`), and the hook `args: string[]` + `continueOnBlock` keys move out of the "future sync" bucket and into the same merge gate. Eleven configurator-territory keys total in #5706; live-verified against the PR's head-branch schema 2026-05-21. Two later items remain held for a future sync PR (hook output `terminalSequence` from 2.1.141; Stop/SubagentStop input `background_tasks` + `session_crons` from 2.1.145). **No template changes; no `tested_up_to` bump yet** — deferred to the post-#5706 unblock batch per the "no lone tracking bumps" rule. `CLAUDE_CODE_COMPAT` rationale comment refreshed to capture the resurvey window. Also: `/simplify` was renamed to `/code-review` in 2.1.146 — configurator ships `/review` (slash command) + `code-reviewer` (agent name), so no collision.
- **docs: drop legacy `/brainstorm` + `/write-plan` references after superpowers v5.1.0.** `superpowers` v5.1.0 (2026-04-30) removed the `/brainstorm`, `/write-plan`, and `/execute-plan` slash commands — they were deprecated stubs and users must now invoke the skills directly (or just describe the work; the SessionStart bootstrap auto-routes). Configurator references updated: `configure.py` "Next steps" output now says "describe what you want to build" instead of "invoke /brainstorm"; `docs/11-getting-started.md` walkthrough swaps the explicit `> /brainstorm` prompt for plain-English intent and adds an inline note about the v5.1.0 removal; `docs/10-plugin-ecosystem.md` install snippet drops `claude /brainstorm`; `templates/recommend-plugins/recommended-plugins.md` row reframes the gate as skill-driven. Historical CHANGELOG entries unchanged (they reference what was current at the time).
- **feat: MCP drift monitor — SessionStart hook + `.cc-manifest.json` baseline + manifest-aware `/verify-setup` Check #4.** cc-configure now stays alive between runs: every scaffold/retrofit writes `.claude/.cc-manifest.json` snapshotting the `.mcp.json` server set; a new SessionStart hook (`.claude/hooks/sessionstart-drift-check.sh`, installed by the `mcp` module) compares manifest vs. live `.mcp.json` on `startup`/`resume` and emits one stdout line if servers were added or removed since the last cc-configure run; the line points to `/verify-setup`, whose Check #4 was rewritten to enumerate per-server purpose, cost class, profile-split fit, and a supply-chain vetting nudge (parses `npx`/`uvx` package coordinates and recommends the user invoke the available Sonatype MCP tools — `getComponentVersion`, `getLatestComponentVersion`, `getRecommendedComponentVersions` — before keeping any new MCP). Manifest writer is unconditional (runs even when the `mcp` module isn't selected, so a forward-looking baseline always exists); hook is module-gated. New `[ MANIFEST WARNINGS ]` block surfaces unreadable `.mcp.json` without ever locking in a corrupt baseline. New test directories: `test/cc-manifest/` (5 tests + e2e lifecycle), `test/sessionstart-drift-check/` (9 hook-behavior fixtures). New verify-setup spec-presence test pins the Check #4 anchors. Spec + plan: `docs/superpowers/specs/2026-05-13-cc-configure-mcp-drift-monitor-design.md` and `docs/superpowers/plans/2026-05-13-cc-configure-mcp-drift-monitor.md` (gitignored, local-only working artifacts).
## [2.5.0] — 2026-05-21

Bundle release: the drift-monitor family — PR #51 introduced the pattern (`.claude/.cc-manifest.json` baseline + SessionStart hook + `/verify-setup` narrative for MCP servers), and PR #54 completed it with two more dimensions (stack manifests + check-command alignment). Plus PR #49 cleaning up legacy `/brainstorm` references after the superpowers v5.1.0 churn, and PR #52 tracking SchemaStore PR #5706 (no template changes; `tested_up_to` bump deferred to the unblock batch). `CC_VERSION` bumped to 2.5.0.

### v2.5.0 — drift-monitor family

**The pattern:** cc-configure had historically been a one-shot scaffolder. After running, the configured `.claude/`, `.mcp.json`, `CLAUDE.md` could drift from project reality (new MCP servers added, language stack shifted, test runner changed) and the configurator had no in-session signal — the user only noticed when something visibly broke. v2.5.0 introduces the **drift monitor** primitive: a versioned baseline file written at scaffold/retrofit time + a SessionStart hook that diffs baseline vs. live and emits one terse line per drifted dimension + `/verify-setup` sub-checks that narrate the diff and propose a fix (`cc-configure --retrofit`). Three dimensions ship in this release, all using the same `.claude/.cc-manifest.json` baseline:

- **feat: MCP drift monitor — SessionStart hook + `.cc-manifest.json` baseline + manifest-aware `/verify-setup` Check #4 (PR #51).** cc-configure now stays alive between runs: every scaffold/retrofit writes `.claude/.cc-manifest.json` snapshotting the `.mcp.json` server set; a new SessionStart hook (`.claude/hooks/sessionstart-drift-check.sh`, installed by the `mcp` module) compares manifest vs. live `.mcp.json` on `startup`/`resume` and emits one stdout line if servers were added or removed since the last cc-configure run; the line points to `/verify-setup`, whose Check #4 was rewritten to enumerate per-server purpose, cost class, profile-split fit, and a supply-chain vetting nudge (parses `npx`/`uvx` package coordinates and recommends the user invoke the available Sonatype MCP tools — `getComponentVersion`, `getLatestComponentVersion`, `getRecommendedComponentVersions` — before keeping any new MCP). Manifest writer is unconditional (runs even when the `mcp` module isn't selected, so a forward-looking baseline always exists); hook is module-gated. New `[ MANIFEST WARNINGS ]` block surfaces unreadable `.mcp.json` without ever locking in a corrupt baseline. New test directories: `test/cc-manifest/` (5 tests + e2e lifecycle), `test/sessionstart-drift-check/` (9 hook-behavior fixtures). New verify-setup spec-presence test pins the Check #4 anchors. Spec + plan: `docs/superpowers/specs/2026-05-13-cc-configure-mcp-drift-monitor-design.md` and `docs/superpowers/plans/2026-05-13-cc-configure-mcp-drift-monitor.md` (gitignored, local-only working artifacts).
- **feat: stack-alignment monitor — manifest schema v2 + two new SessionStart drift dimensions + `/verify-setup` §4b/§4c (PR #54).** Extends the MCP drift monitor with two more dimensions: **stack drift** (compares the set of repo-root stack manifests — `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `Gemfile`, `pom.xml`, `build.gradle` — at scaffold time vs. now) and **command alignment** (checks that the first binary of each configured `cmd_typecheck`/`cmd_lint`/`cmd_test` still has a matching stack manifest in the repo). `.claude/.cc-manifest.json` bumps to `manifest_version: 2` with two new fields (`stack_manifests`, `check_commands`); the SessionStart hook (`sessionstart-drift-check.sh`) gains §2 + §3 emitting one terse line per drifted dimension, all pointing at `/verify-setup`. `/verify-setup` gains §4b + §4c narrative blocks. Compatibility: v2 hook reads v1 manifests as if the new fields were empty (no false drift on PR #51 baselines); v1 hook seeing a v2 manifest fires the existing version-skew nudge. §3 carries a pre-bootstrap skip (configured binary's expected manifest must have been in the baseline `stack_manifests` set) so brand-new scaffolds on empty dirs stay silent — same spirit as the stop-hook manifest-missing skip rule from v2.4.0. New helpers: `detect_stack_manifests()`, `extract_first_binaries()` in `configure.py`. New tests: `test/cc-manifest/test-stack-manifests-detected.sh`, `test/cc-manifest/test-check-commands-extracted.sh`, seven new `test/sessionstart-drift-check/test-*.sh` fixtures, `test/verify-setup/test-stack-alignment-spec-present.sh`. Spec + plan: `docs/superpowers/specs/2026-05-21-stack-alignment-check-design.md` and `docs/superpowers/plans/2026-05-21-stack-alignment-check.md` (gitignored, local-only working artifacts).

**Housekeeping:**

- **docs: drop legacy `/brainstorm` + `/write-plan` references after superpowers v5.1.0 (PR #49).** `superpowers` v5.1.0 (2026-04-30) removed the `/brainstorm`, `/write-plan`, and `/execute-plan` slash commands — they were deprecated stubs and users must now invoke the skills directly (or just describe the work; the SessionStart bootstrap auto-routes). Configurator references updated: `configure.py` "Next steps" output now says "describe what you want to build" instead of "invoke /brainstorm"; `docs/11-getting-started.md` walkthrough swaps the explicit `> /brainstorm` prompt for plain-English intent and adds an inline note about the v5.1.0 removal; `docs/10-plugin-ecosystem.md` install snippet drops `claude /brainstorm`; `templates/recommend-plugins/recommended-plugins.md` row reframes the gate as skill-driven. Historical CHANGELOG entries unchanged (they reference what was current at the time).
- **chore(compat): survey Claude Code 2.1.133–2.1.146; track SchemaStore PR #5706 (PR #52).** Resurveyed the upstream CHANGELOG and the SchemaStore catalog after a 9-day gap. The original gating PR #5665 (sync to v2.1.138) was closed 2026-05-19 with comment "Superseded by #5706 which syncs to v2.1.143" — net win for batching since #5706 also picks up `worktree.bgIsolation`, `subagentStatusLine`, `statusLine.hideVimModeIndicator`, `sandbox.failIfUnavailable`, five env vars (`ANTHROPIC_WORKSPACE_ID`, `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE`, `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`, `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY`, `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`), and the hook `args: string[]` + `continueOnBlock` keys move out of the "future sync" bucket and into the same merge gate. Eleven configurator-territory keys total in #5706; live-verified against the PR's head-branch schema 2026-05-21. Two later items remain held for a future sync PR (hook output `terminalSequence` from 2.1.141; Stop/SubagentStop input `background_tasks` + `session_crons` from 2.1.145). **No template changes; no `tested_up_to` bump yet** — deferred to the post-#5706 unblock batch per the "no lone tracking bumps" rule. `CLAUDE_CODE_COMPAT` rationale comment refreshed to capture the resurvey window. Also: `/simplify` was renamed to `/code-review` in 2.1.146 — configurator ships `/review` (slash command) + `code-reviewer` (agent name), so no collision.

## [2.4.0] — 2026-05-12

Expand Down
Loading