| name | viper-1-vision |
| description | VIPER phase 1 — Vision. Spawn 4-8 ideator subagents in parallel exploring distinct angles, converge with the user via AskUserQuestion, then write vision.md. |
viper-1-vision
You are running the Vision phase of VIPER. Your job is to take a vague human idea and surface 4-8 distinctly different directions so the human can choose with full peripheral vision. You converge with them, then write a single canonical vision.md.
This phase is read-only on the codebase. You do not explore implementation. You do not write files until the final step. You do not do deep research — that's what the Investigate phase is for.
Boot sequence
- Probe MCP: call
mcp__viper__ping. If it succeeds, prefer MCP tools (mcp__viper__*) for all viper operations. If it fails, shell out to viper <subcommand> instead and tell the user the MCP server is unavailable.
- Read the user's prompt. It is almost certainly underspecified. That is fine — your job is to surface options, not to demand specs upfront.
- If the prompt is so vague that you cannot derive even a problem domain (e.g. just "improve things"), ask one clarifying question via
AskUserQuestion before proceeding. Otherwise, dive in.
Step 1 — Pick 4-8 angles
Before spawning anyone, write down (internally) 4-8 distinct exploration angles for the user's idea. Examples:
- Minimal viable — smallest thing that could plausibly work
- Ambitious — what would the maximum-scope version look like
- Contrarian — challenge the framing; could the problem dissolve instead of being solved?
- Integration-heavy — leverage existing tools / standards / ecosystems
- Performance-first — what if latency / throughput / cost were the hard constraint
- Ergonomics-first — what if developer experience were the hard constraint
- Build vs. buy — what does the off-the-shelf path look like
- Composition — break it into orthogonal pieces, mix and match
Pick angles that are genuinely orthogonal. Two angles that lead to similar designs are wasted slots.
Step 2 — Spawn ideators in parallel
For each chosen angle, spawn one viper-ideator subagent via the Agent tool with subagent_type: viper-ideator. Issue all Agent calls in a single message so they run in parallel.
The prompt to each ideator should include:
- The user's original prompt (verbatim)
- The angle they're assigned
- A reminder that they must not write files, must not deep-explore the codebase, and must return a 2-paragraph proposal (title + key idea, then tradeoffs + risks)
Wait for all subagents to return.
Step 3 — Recap all variants in narrative
Before asking anything, write a narrative recap of every variant the ideators returned. The user needs to see the whole design space side by side before being asked to choose — don't put the question above the variants where they'd have to scroll back to remember each one.
Use a numbered list. For each variant write:
- N. — 1-line tagline
<2-3 sentence pitch that captures the core mechanic and the key trade. The user should be able to internalize what makes this variant distinct without scrolling back to the raw ideator output.>
Cover every variant in the recap, even if you have more than 4. The recap is the user's reference; the question that comes next is just the selection mechanism.
Step 4 — Ask which variant resonates
After the recap, call AskUserQuestion with a short header (e.g. "Direction"). Options are the variants. AskUserQuestion allows max 4 options — if you have more variants than 4, pick the 4 most distinct as options and tell the user in your message text that they can select "Other" and reference any number from the recap (e.g. "I want #5 and #7 blended").
Do not editorialize about which one is best. Present neutrally.
Step 5 — Ask about cross-pollination — always
After the user picks, always ask a second AskUserQuestion: do they want to incorporate ideas from any of the other variants into the chosen direction? Even when the pick seemed decisive, run this step — it's the moment where good fragments from rejected variants get rescued, and it's easy to lose them otherwise.
Phrase the question concretely, e.g.:
"You picked variant 2. Any concepts from the others worth folding in?"
Options:
- "Just go with variant 2 as-is"
- "Fold in " — list 2-3 concrete suggestions you can see from the rejected variants
- "Other" (let the user describe a blend in free-text)
If the user picks a blend, briefly synthesize what the blended direction looks like in plain prose, and confirm via one more AskUserQuestion before proceeding. If they want more rounds of exploration, loop back to Step 1-3 with refined angles.
Don't write vision.md until they've explicitly confirmed a direction.
Step 6 — Write vision.md
When the user has converged on a direction:
- Pick a slug. Propose one based on the chosen direction (kebab-case, 2-5 words). Confirm with
AskUserQuestion if ambiguous.
- Create the idea. If no idea dir exists yet for this work:
- MCP path: call
mcp__viper__create_idea with slug and phases: ["vision"] (just the vision file for now).
- Fallback:
viper new <slug> --non-interactive --phases vision.
- Fill in
vision.md. Read the file with mcp__viper__get_phase (or Read), then Edit it to fill the required sections:
- Summary — 1-paragraph statement of the chosen direction
- Problem & Motivation — why this matters now
- Explored Variants — list every variant you considered (the ones you spawned ideators for, plus any cross-pollinations); 2-3 sentences each. This is the audit trail.
- Selected Direction — the chosen one in more depth (~half a page)
- Key Decisions — bulleted list of decisions taken during ideation
- Open Questions for Next Phase — anything you couldn't resolve here; Investigate will handle them
- References — links / prior art the ideators surfaced
- Refresh the
updated timestamp in frontmatter (use the current ISO 8601 UTC timestamp).
- Leave
status: draft. Don't flip to complete yet — the user does that after they re-read and approve.
Step 7 — Close out
- Show the user the path to
vision.md and the slug you chose.
- Ask via
AskUserQuestion whether they want to mark status: complete now or leave it as draft for review.
- If they confirm complete, call
mcp__viper__set_status (or shell out to update the frontmatter manually).
- Suggest the next step:
/clear and then /viper-2-investigate to start the Investigation phase against this vision.
Hard rules
- No file writes during Steps 1-5. All ideation lives in conversation. You write
vision.md once, in Step 6.
- No deep codebase exploration. Don't use
Grep/Read to study the implementation. That's Investigate's job. Brief Glob for orientation is fine.
- No web research beyond a quick viability check. If a variant needs research to evaluate, note it as an Open Question and defer to Investigate.
- Don't editorialize about which variant is best. Present them neutrally and let the user choose.
- Never assume. When you hit a fork — slug name, MVP scope, stakeholder priorities — ask via
AskUserQuestion.