Skip to content
Development
Command

/v-init

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.

From plugin
superpowers-v
3615 skills7 agents15 commands7 hooks
Install
> /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.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/v-init

Context 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.

Command definition

v-init.md
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.

Resolving the plugin root

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.

---

Step 1 — Detect capabilities

Probe each, and remember the result. Do **not** install anything yet.

1a. Codex CLI (and verify the EXEC flag surface)

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
  • All required flags present in **exec** help, and `--ask-for-approval` absent there →

Codex is **usable**; the pinned adapter flag set holds for this version.

  • Any required flag missing from exec help → record Codex as **present but

version-incompatible**; treat as Claude-only and warn the user to update Codex.

  • `--output-schema` is optional (drives only the human summary) — note it if present,

but do not gate on it.

Resume form for reference (no `--session-id` flag exists): `codex exec resume <uuid>`.

1a-bis. Antigravity CLI (`agy`) — optional, lower-trust backend

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).

1a-ter. Cursor CLI (`cursor-agent`) — optional, lower-trust backend

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" ]
  • Installed **and** authenticated → Cursor is **usable**; record it and add it to `backends`.

The pinned headless invocation holds (verified, cursor-agent 2026.06.26): `cd "$WT" && cursor-agent -p -f --output-format json [--model <M

Read more
Ships withsuperpowers-v

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.

Get the whole plugin

Other commands on superpowers-v.