v7.5.0 - A productivity toolkit for Claude Code that adds workflow automation, MCP servers, security scanning, secrets management, and CI/CD integration.
- Workflow commands (
/flow:auto,/flow:start,/flow:eli5,/flow:finish) - Issue-driven development with worktrees, a pre-implementation ELI5 plan/necessity approval gate that cannot be bypassed (#775), quality gates, automated PR lifecycle, and CI verification. The necessity gate also ships standalone as eli5-gate - installable without CPP via/plugin marketplace add cooneycw/eli5-gateornpx skills add cooneycw/eli5-gate; CPP vendors its canonical core (file gate improvements there) - Wave orchestration (
/flow:wave,/flow:register,/flow:sync) - dependency-ordered issue waves fanned out across worker sessions, coordinated through a durable mailbox with an armed/stale/dead watch status visible on the roster (#778, #801), and per-driver capability declarations (scope, web access) so an orchestrator can check whether a driver can do the work before assigning it, not after a worker refuses (#783) - MCP servers extending Claude Code's capabilities:
- Second Opinion - Multi-model code review via external LLMs (Gemini, OpenAI, Anthropic), served by the external
cooneycw/mcp-second-opinionrepo and wired in through the root.mcp.json(streamable-http) - Browser automation - upstream
@playwright/mcpserver (npx/stdio, no container), registered by/cpp:init - Tavily - web search, content extraction, site crawling, and URL mapping via the upstream
tavily-mcpserver (npx/stdio), registered by/cpp:init; API key stored in AWS Secrets Manager (claude-power-pack/mcp-keys)
- Second Opinion - Multi-model code review via external LLMs (Gemini, OpenAI, Anthropic), served by the external
- PowerPoint generation - Slide decks via the native Anthropic
pptxskill (npx skills add anthropics/skills@pptx) - Security scanning (
/security:scan) - Native vulnerability detection with git history analysis - Secrets management (
/secrets:*) - Tiered credential storage (dotenv, env-file, AWS Secrets Manager) with audit logging and a web UI - CI/CD integration (
/cicd:*) - Framework detection, Makefile generation, health checks, and IaC scaffolding - Woodpecker CI - Self-hosted pipeline (secret-scan, lint, test, typecheck, Dockerfile lint) with programmatic status polling
- Project scaffolding (
/project:init) - Zero-to-GitHub-repo setup with Makefile, CI pipeline, and Docker config - Skills ecosystem - Discover, install, and manage agent skills from skills.sh via native
npx skillsand the/pluginmarketplace (the CPP/skills:*wrapper was retired in issue #437) - Secret-masking hook - a PostToolUse hook in
.claude/hooks.jsonmasks secrets (connection strings, API keys, env vars) in Bash/Read output; host installation is managed by/cpp:init//cpp:update; destructive commands are handled by Claude Code's native git auto-blocking + OS sandbox
- Python 3.11+
- uv package manager
- Docker (optional - only to run the external second-opinion server locally, or as the gitleaks fallback for
make secret-scan) - Claude Code CLI
- GitHub CLI (
gh) for issue/PR workflows
CPP's own plugin marketplace was retired by issue #662 and ADR 0005. Clone the repository; issue #663 restores the tiered /cpp:init + /cpp:update symlink surface as the canonical command installation path:
git clone https://github.com/cooneycw/claude-power-pack.git
cd claude-power-pack
# The restored canonical installer lands in issue #663:
/cpp:initExisting CPP marketplace users should run /plugin uninstall <family>@cpp for each of the 15 installed families. scripts/install-drift.sh keeps two host checks visible: it guards installed ~/.claude/scripts/*.sh helpers against the checkout through #663's symlink restoration, and names lingering marketplace cache families as retired, non-failing migration state. The symlink tier restored by #663 replaces those caches and follows git pull without a separate update stamp.
/cpp:init also configures the out-of-band infrastructure used by some command families:
- External Second Opinion server - the multi-model review server lives in its own repo (cooneycw/mcp-second-opinion). Start the external server, then register it with
claude mcp add second-opinion --transport http --url http://127.0.0.1:8080/mcp --scope user(use your Tailscale URL for a remote host). - Browser automation - registers the upstream
@playwright/mcpnpx/stdio server (no container). - Tavily web tools - registers the upstream tavily-mcp npx/stdio server for web search, extract, crawl, and map. Requires
TAVILY_API_KEY(stored in AWS Secrets Managerclaude-power-pack/mcp-keys). - Secrets provisioning - AWS Secrets Manager access for Woodpecker CI keys (
essent-ai) and theCPP_MEMORIES_DSNcommon-memory DSN; fetched directly via the AWS SDK/CLI. - Bootstrap prerequisites -
jq, and the optional spec-kit CLI (specify, the engine behind/spec:adopt). - Permission census hook + flow allowlist - registers the observe-only PermissionRequest census hook and merges the read-only
/flow:*allowlist - including the audited flow helper-script rules that make/flow:autoPhase 1 prompt-free (issue #581) - into~/.claude/settings.json(both user-confirmed).
/cpp:update refreshes those same host artifacts. See docs/HOST_MANAGED_ARTIFACTS.md for the full inventory.
To work on CPP (not just use it), clone and run the quality gates:
git clone https://github.com/cooneycw/claude-power-pack.git
cd claude-power-pack
uv sync --extra dev
make verify.claude/commands/<family>/*.md is the permanent source of truth. It feeds only the generated Codex harness surface: scripts/codex-skill-sync.py emits per-command Codex skills under codex/skills/ (make codex-skills, issue #555), guarded by an explicit codex-skills-check CI step. The older flat codex/prompts/ surface it replaced was retired at the #556 cutover.
claude-power-pack/
.claude/commands/ Slash commands (/flow:*, /cicd:*, /security:*, etc.)
.claude/hooks.json Safety hooks (pre/post tool use)
.mcp.json Client pointer for the external second-opinion server
codex/skills/ Generated Codex SKILL.md skills, second harness surface (#555)
codex/cpp-memory.md Curated Codex /cpp-memory prompt (#433; flat codex/prompts/ retired #556)
lib/creds/ Secrets management library
lib/security/ Security scanning library
lib/cicd/ CI/CD framework detection and generation
docs/skills/ Topic-focused best practices (~3K tokens each)
docs/scripts.md Per-script history for the scripts/ inventory (#711)
docs/commands-reference.md Per-command detail beyond the skill listing (#711)
woodpecker/ Woodpecker CI server + agent deployment configs
templates/ Makefile, workflow, and container templates
scripts/ Shell utilities
tests/ Unit tests
.woodpecker.yml CI pipeline (secret-scan, lint, test, typecheck, drift gates, Dockerfile lint)
Makefile Build interface for all operations
| Category | Command | Description |
|---|---|---|
| Workflow | /flow:auto 42 |
Full issue lifecycle in one shot |
| Workflow | /flow:start 42 |
Create worktree for an issue |
| Workflow | /flow:eli5 42 |
Plain-language intent + necessity verdict + plan approval gate |
| Workflow | /flow:finish |
Lint, test, typecheck, commit, push, create PR |
| Workflow | /flow:wave |
Orchestrate a dependency-ordered issue wave across worker sessions |
| Improve | /self-improvement:retro |
Post-run friction retro: capture -> codify durable fixes (the grill-me cycle) |
| Project | /project:init myapp |
Scaffold a new project |
| Security | /security:scan |
Full vulnerability scan |
| Secrets | /secrets:list |
List managed credentials |
| CI/CD | /cicd:init |
Detect framework, generate Makefile |
| Docs | /documentation:c4 |
Generate C4 architecture diagrams |
| Browser | /browser:session create gmail |
Named concurrent browser sessions (lease-desk pool) |
| Review | /second-opinion:start |
Get code review from external LLMs |
CPP ships no container runtime (retired in #469). The /second-opinion:* and /evaluate:* commands consume an external second-opinion server that runs from its own repo:
- Server repo: https://github.com/cooneycw/mcp-second-opinion (server + the AWS Secrets Manager Agent sidecar build recipe + a standalone docker-compose)
- CPP ships a root
.mcp.jsonregisteringsecond-opinionas a streamable-http client at${SECOND_OPINION_URL:-http://127.0.0.1:8080}/mcp(issue #633): localhost 8080 by default, overridable WITHOUT editing any tracked file by exportingSECOND_OPINION_URLwith the base url, no/mcp(e.g.export SECOND_OPINION_URL=http://127.0.0.1:8090, or a Tailscale URL). The same variable is read bymcp-evaluate/src/config.py, so one export covers both consumers. Start the external server, then either rely on that env override or register at user scope:
claude mcp add second-opinion --transport http --url http://127.0.0.1:8080/mcp --scope userBrowser automation uses the upstream @playwright/mcp npx/stdio server (registered by /cpp:init). Tavily web search/extract/crawl/map uses the upstream tavily-mcp npx/stdio server (registered by /cpp:init); its API key (TAVILY_API_KEY) is stored in claude-power-pack/mcp-keys alongside the Second Opinion keys. CPP stores no application secrets on disk and runs no secrets sidecar; the remaining AWS Secrets Manager consumers (essent-ai for Woodpecker CI keys and the CPP_MEMORIES_DSN common-memory DSN) fetch directly via the AWS SDK/CLI.
Woodpecker CI runs on every push and PR via a self-hosted agent:
- Secret scan: gitleaks over the tree before anything else runs
- Validate: lint (ruff) + test (pytest) + typecheck (mypy) in a single consolidated step
- Dockerfile lint: hadolint over any remaining Dockerfile
- CI verification:
flow:autopolls the Woodpecker API after merge to confirm the pipeline passes
The image-build, CVE-scan, SBOM, compose-policy, and runtime-smoke stages were retired with CPP's Docker MCP runtime in #469.
Architecture: Woodpecker server on a dedicated VM, agent on the dev workstation, connected via gRPC over Tailscale. Web UI at woodpecker.essent-ai.com via Cloudflare tunnel.
- Wave reliability fixes -
/flow:wavemailbox watch state is now fused from the live watcher count and its heartbeat stamp so a dead watch can no longer be reported asarmed(#801); a post-clearance PR pipeline watch (flow-pr-watch.sh) classifies a cleared PR's next CI run as green/cancelled/flake/red/timeout instead of leaving it unwatched (#788); delegated driver lanes (/codex:auto,/qwen:auto,/gemma:auto) now judge run success from the payload rather than a misleading$?, after the Qwen CLI was found reportingis_error: falseon a dead endpoint (#798); seven other confidently-wrongflow-wave-mailbox watchreports fixed (#792) - Driver capability declarations (#783) -
scripts/flow-driver-capability.shdeclares each delegated driver's scope (general vs. implementation-only) and web access so an orchestrator can check fit before assignment instead of after a worker refuses - Wave roster shows who's actually listening (#778) -
flow-wave-mailbox.sh watchstamps a heartbeat so the roster can tell an armed watch apart from one that died silently - No-bypass gates extended to the delegated drivers (#784, #775) - the ELI5 plan/necessity approval gate and its delegated-driver equivalent now have no invoker-typed or trailer-based bypass on any of the four drivers
- Top-level commands folded into families + discovery-completeness gate (#582) -
/project-next//project-litebecame/project:next//project:lite;/dockers,/happy-check,/load-best-practices,/load-mcp-docsmoved into thecppfamily; a new gate fails CI on any command left outside.claude/commands/<family>/*.md, since that path is what both the plugin and Codex-skill generators discover from
- Plugin-marketplace distribution + install-path cutover (epic #417 Phase B, ADR 0001) - CPP adopted 15 per-family plugins and retired its earlier symlink surface (#477/#478/#479/#480). Reversed 2026-08-11: issue #662 / ADR 0005 retires CPP's marketplace lane after version-stamp drift proved unreconcilable; uninstall existing families with
/plugin uninstall <family>@cpp. The tiered/cpp:init+/cpp:updatesymlink surface returns as canonical in #663. - Docker MCP runtime retired (#469, #423) - Second Opinion moved to its own external repo (cooneycw/mcp-second-opinion) consumed via a
.mcp.jsonclient pointer; browser automation moved to the upstream@playwright/mcpnpx server. CPP ships no containers andmake deployis an informative no-op. /flow:eli5necessity gate extracted to the standalone eli5-gate plugin (#443); CPP vendors its canonical core with a drift check.
/flow:eli5+/flow:autoapproval gate (#398) - plain-language intent, necessity/staleness verdict, and a plan-approval pause between Analyze and Implement- Skill drift/orphan detection in
/cpp:update(#395) - curated-list-driven detection and guarded prune of retired/orphaned generated skills - Fix:
drift-detect.shno longer reports false Docker/systemd "deployment model conflict" on Docker-only hosts - systemd unit presence now derives fromLoadState, notis-active(#400)
- Skills ecosystem integration - New
/skills:*command family wrapping thenpx skillsCLI for discovering, installing, and managing agent skills from skills.sh - Quality vetting in
/skills:findchecks install counts, source reputation, and GitHub stars before recommending
- Breaking change: Docker-only MCP deployment - Docker with local builds is now the only supported Tier 3 runtime
- Legacy systemd migration -
cpp:updatedetects legacy MCP systemd units and guides teardown before Docker refresh - Status clarity -
cpp:statusreportsDocker (local build)and labels remaining systemd units as migration-required legacy state
- C4 diagram QA framework -
validate_diagramMCP tool with density scoring, XSS sanitization, WCAG AA contrast checks - Multi-diagram C4 generation - L3 for all containers, L4 for top 3 components per container
- Density-aware splitting -
split_diagramMCP tool auto-splits large diagrams into summary + detail views - QA gating in skills - c4 and pptx skills check warnings after every
generate_diagram, retry on edge errors, split on overflow - Shared theme tokens -
ThemeTokenscontract for consistent colors across all diagram types - c4-manifest.json - Tracks all generated diagrams with parent-child relationships
- index.html - Hierarchical navigation page for all C4 diagrams
- XSS fix - HTML-escape all node labels in diagram output
- WCAG AA fix - All color palettes meet 4.5:1 minimum contrast ratio
- 496 tests - Comprehensive test coverage for validation, density, splitting, contrast, and C4 integration
- Woodpecker CI pipeline - Self-hosted CI with MCP image security gates
- Runtime smoke tests - CI brings the MCP stack up in an isolated compose project, checks service health, then tears it down
- CI verification in flow:auto - New Step 7/8 polls Woodpecker or GitHub Actions after merge, blocks deploy on failure
- Consolidated pipeline - Merged lint/test/typecheck into single validate step (eliminates 2x
uv sync) - Health-based runtime checks -
docker compose --waitvalidates container healthchecks during smoke runs - Extended CI polling - flow:auto timeout increased from 5 to 10 minutes
- Woodpecker v3 API fix - Repo ID lookup for correct API path
- Nano Banana: Base64 OOM guard, Docker path fallback, validation tightening
- SlideDefinition dataclass for PowerPoint generation
- MCP server drift detection in
/cpp:update
- PPTX QC validation, multi-framework support, AWS gating
- Em dash cleanup across all markdown and documentation
MIT - see LICENSE