v-adr
Capture one genuine architecture decision as a thin, human-confirmed ADR under docs/superpowers/adr/NNNN-slug.md — decision-with-alternatives-and-consequences,…
Initialize Compound V in this project — detect backends and capabilities (Codex, Context7, required skills/agents), walk through any missing installs one at a time, pick a routing stance, and save project + user config.
> /plugin marketplace add procoders/superpowers-v > /plugin install superpowers-v@procoders
How it fires
How this command gets triggered: by you, by Claude, or both.
/v-initContext preview
What this command does when you run it.
Initialize Compound V in this project — detect backends and capabilities (Codex, Context7, required skills/agents), walk through any missing installs one at a time, pick a routing stance, and save project + user config.
description: Initialize Compound V in this project — detect backends and capabilities (Codex, Context7, required skills/agents), walk through any missing installs one at a time, pick a routing stance, and save project + user config. disable-model-invocation: true
You are running **`/v:init`** — the Compound V capability + stance setup for this project. Argument (optional): `{{args}}` may name a stance to pre-select (`balanced` | `conservative` | `cost-aware` | `claude-only`); otherwise you recommend one.
**This walkthrough IS the configurator.** There is no separate shipped playground or runtime UI — the stance is set here and in [`routing-policy.md`](../skills/compound-v/routing-policy.md). A standalone HTML configurator, if it exists, is only an optional dev tool, never a shipped surface. Do not claim otherwise.
Run the steps **in order**. Do not batch installs — detect everything first, then walk the user through missing pieces **one at a time**, confirming after each.
The `scripts/` this command calls ship with the plugin — they are not files in your own repository. Resolve the plugin root once per session before calling any of them:
CV="${CLAUDE_PLUGIN_ROOT:-$(ls -d "$HOME"/.claude/plugins/cache/*/superpowers-v/*/ 2>/dev/null | sort -V | tail -1)}"
CV="${CV:-$PWD}"; CV="${CV%/}"`CLAUDE_PLUGIN_ROOT` is set for hooks but is not set in this Bash environment, so treat it as a hint, never the whole answer — the fallback line covers an installed plugin cache or a checkout of this repo.
---
Probe each, and remember the result. Do **not** install anything yet.
command -v codex
If absent → Codex is **not available** (record it; routing will be Claude-only).
If present, **verify the flags Compound V depends on live in the `codex exec` subcommand help — not merely in the merged top-level help.** This is the check that caught the real adapter bug (PRD §3): `--ask-for-approval` appears in `codex --help` but is **absent from `codex exec --help`**, because it is a top-level/interactive flag. Asserting against the wrong help would have shipped an adapter that fails on every job.
# Assert the worker flags are in the EXEC subcommand help specifically: codex exec --help 2>/dev/null | grep -q -- '--cd' || echo "MISSING --cd in exec help" codex exec --help 2>/dev/null | grep -q -- '--sandbox' || echo "MISSING --sandbox in exec help" codex exec --help 2>/dev/null | grep -q -- '--skip-git-repo-check' || echo "MISSING --skip-git-repo-check in exec help" codex exec --help 2>/dev/null | grep -q -- '--model' || echo "MISSING --model in exec help" codex exec --help 2>/dev/null | grep -q -- '--output-last-message' || echo "MISSING --output-last-message in exec help" # And confirm the bug-marker flag is NOT in exec help (it must be top-level only): if codex exec --help 2>/dev/null | grep -q -- '--ask-for-approval'; then echo "WARN: --ask-for-approval appears in exec help on this codex version — re-check the adapter" fi
Codex is **usable**; the pinned adapter flag set holds for this version.
version-incompatible**; treat as Claude-only and warn the user to update Codex.
but do not gate on it.
Resume form for reference (no `--session-id` flag exists): `codex exec resume <uuid>`.
command -v agy
If absent → Antigravity is **not available** (record it; routing never offers it).
If present → Antigravity is **usable** (the pinned `agy 1.0.13` invocation holds: `cd "$WT" && agy --dangerously-skip-permissions --add-dir "$WT" --print-timeout "<sec>s" [--model …] --print "<prompt>"`). Record antigravity as available and add it to `backends`.
`agy models` is **headless-friendly** — it just waits on stdin, so redirect `</dev/null` (the same fix used for `agy --print`) and it returns the catalog in ~2s, no TTY needed. Seed a **real** antigravity model map at init by piping that catalog through the discovery script (only when `agy` is present), which merges a real deep/standard/light proposal into `.claude/compound-v.json`:
agy models </dev/null | python3 "$CV/scripts/compound-v-discover-models.py" \ --backend antigravity --write-config .claude/compound-v.json
This is a **seed** — refreshable any time via [`/v:models`](v-models.md). If `agy` is absent, skip it and let Step 4a write the resolver's built-in fallback map.
> **Flag it as lower-trust when you record it.** `agy` has **no kernel write-confinement** > like Codex's `--sandbox workspace-write`, and headless writes require > `--dangerously-skip-permissions` (arbitrary shell + out-of-worktree writes possible). > The worktree + `git diff` gate detects in-worktree scope leaks but cannot *prevent* an > out-of-worktree side-effect — so it is **opt-in**, and **Codex is preferred for > untrusted / high-stakes work**. See [`adapter-antigravity.md`](../skills/backend-launcher/adapter-antigravity.md).
command -v cursor-agent
If absent → Cursor is **not available** (record it; routing never offers it).
If present → check **authentication** (the headless worker needs a logged-in session or `CURSOR_API_KEY`):
cursor-agent status </dev/null 2>&1 | head -3 # or: [ -n "$CURSOR_API_KEY" ]
The pinned headless invocation holds (verified, cursor-agent 2026.06.26): `cd "$WT" && cursor-agent -p -f --output-format json [--model <M
Compound V — a multi-model coding sidekick for Superpowers, running on Claude Code. You describe a feature. Claude sizes the request, plans it, splits it into non-overlapping pieces, and hands each piece to a worker in its own isolated worktree.
Capture one genuine architecture decision as a thin, human-confirmed ADR under docs/superpowers/adr/NNNN-slug.md — decision-with-alternatives-and-consequences,…
Re-run the collect + scope-gate + review tail of a Compound V run by run-id. Normalizes each job's output into results/<id>.json, re-runs the git-derived scope…
Execute a Compound-V-ready plan, manifest, or run-id on Engine C — the native Workflow dispatch engine. Accepts a bare plan path (auto-materializes the…
Drive an EPIC — chain several features into one autonomous, resumable, dependency-ordered build on a single branch. Each feature runs through the FULL v1.0…
(Re)index docs/superpowers prose into the local V-memory cache so recall is current. Incremental by file hash; runs fully offline (FTS5, pure stdlib).…
Refresh the Compound V tier→model map — discover the concrete models each backend (claude, codex, antigravity, cursor, opencode) currently offers, show them,…