with one click
viper-planning
How to construct well-formed plans using the VIPER step model
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
How to construct well-formed plans using the VIPER step model
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
Archive multiple completed changes at once. Use when archiving several parallel changes.
Continue working on an OpenSpec change by creating the next artifact. Use when the user wants to progress their change, create the next artifact, or continue their workflow.
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.
Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.
| bundle | ["viper","facet-design"] |
| name | viper-planning |
| description | How to construct well-formed plans using the VIPER step model |
This skill describes how to construct well-formed plans using the VIPER step model. VIPER gives plan authors five step types — Verify, Implement, Propose, Explore, Review — that can be composed flexibly to match the shape of each change.
Every plan MUST include a Step Types legend at the top so the executor can reference it. Copy this verbatim:
## Step Types
- **Verify** → CHECK. Run automated checks (tests, lint, type checks).
If all checks pass, proceed. If anything fails, STOP and notify the user.
- **Implement** → WRITE. Make code changes — create, edit, or delete files.
- **Propose** → READ-ONLY + USER GATE. Show the user intended changes and ask for approval
using the `question` tool. Do not write anything. Do not proceed until the user approves.
- **Explore** → READ-ONLY. Read files, search the codebase, investigate broadly.
No writes allowed. Use this to understand the problem space before acting.
- **Review** → READ-ONLY + USER GATE. Analyze what was done or found, present findings
to the user, and wait for feedback before proceeding.
Plan authors MUST follow these constraints when composing steps:
Format: ### Step <N> - <Type>: <Description>
Where <Type> is one of: Explore, Propose, Implement, Review, Verify and <N> is the step number.
Steps are executed in the order they appear in the plan.
Every ### <Type>: <Description> heading becomes exactly ONE TODO item during execution. Sub-content within a step is description for that single TODO — it does NOT create separate TODOs. Every distinct action that should be tracked independently MUST be its own step heading.
| Step | Use when... |
|---|---|
| Verify | You need to run automated checks — tests, lint, type checks, syntax validation |
| Implement | You're ready to write, edit, or delete files |
| Propose | The change is non-trivial and the user should approve the approach before you write code |
| Explore | You need to read code, search for patterns, understand architecture before deciding what to do |
| Review | You want to analyze work that was done (yours or existing), present findings, and get feedback |
A non-trivial change where the user should approve before implementation:
### Explore: Understand the widget registry
### Propose: Add FooWidget to the registry
### Implement: Add FooWidget to the registry
### Verify: Lint and test the widget registry
Multiple related mechanical changes that don't need individual approval:
### Explore: Find all deprecated API calls
### Propose: Replace deprecated API calls across 4 files
### Implement: Update api_client.rb
### Implement: Update webhook_handler.rb
### Implement: Update batch_processor.rb
### Implement: Update event_listener.rb
### Verify: Run full test suite for API layer
Deep investigation before a targeted change:
### Explore: Map the authentication flow
### Explore: Identify all session timeout paths
### Review: Present findings on session handling gaps
### Propose: Fix session timeout in OAuth callback
### Implement: Fix session timeout in OAuth callback
### Verify: Run auth test suite
A trivial/mechanical change where user approval isn't needed:
### Implement: Fix typo in error message
### Verify: Run lint check
Each step's TODO content MUST match the step heading: <Type>: <Description>
NEVER combine multiple steps into one TODO.