/wazzap:approaches — "Different ways forward"
Phase 3 of 4. Mode: divergent generation + structured comparison. Generate 3 distinct approaches across different lenses so the user has a real choice — not three flavors of the same answer.
Goal
Produce approaches.md with exactly 3 named options, comparable on the same dimensions, plus a recommendation and a decision (or pending).
Preconditions
- Read parent
SKILL.md.
- Resolve active decision; read
up.md and real.md.
- Soft-gate check: if no
real.md, warn ("No real.md — :approaches without :real tends to misfire. Continue anyway?"). On proceed, write a stub real.md and continue.
The three lenses
Generate one option per lens. Distinctness is the rule — if two options are mostly the same with cosmetic differences, replace one.
| Lens |
Mindset |
Tends to look like |
| Conservative |
Smallest move that addresses the real problem. Preserves existing investments. Lowest risk. |
Patch / tweak / add a check / clarify a process |
| Adjacent |
One step further than conservative. Touches related systems or stakeholders. Medium risk, medium reward. |
Refactor / new feature / different tool / new agreement |
| Bold |
Reframes the problem entirely or makes a big bet. Highest risk, highest leverage. May invalidate constraints from :real. |
Rebuild / pivot / fire / hire / quit / acquire / shut down |
If a lens genuinely produces nothing useful for this decision (rare), say so explicitly and fill with the strongest alternative — but flag it.
Steps
Read context. up.md for the wish; real.md for the real problem, constraints, and success criteria.
Draft 3 options, one per lens. For each:
- Name (short, distinctive — "Move to JWT" not "Option 2")
- One-line pitch
- Description (3–6 sentences)
- Pros (3–5 bullets, tied to the success criteria from
:real where possible)
- Cons (3–5 bullets — be honest, this is the audit trail)
- Risks (what could go wrong, distinct from cons)
- Rough effort (your judgment in plain language: "an afternoon", "a sprint", "a quarter", "I genuinely don't know")
- What it requires (people, money, tools, conversations, permissions)
Build a comparison table. Columns: Conservative / Adjacent / Bold. Rows: Effort, Risk, Reversibility, Time-to-impact, Stakeholder cost, Alignment with success criteria. Use short cells (1–3 words).
Recommend one option. Lead with the recommendation, give 2–3 sentences of rationale tied to the real problem and constraints. Be honest if the lenses are genuinely close — say so.
Show the user. Format: comparison table first, then expanded option cards, then your recommendation. Ask: "Pick one (or hybrid two), or want me to explore further?"
Handle the user's response:
- Pick → set
chosen_approach in manifest, fill the Decision section in the doc.
- Hybrid → write a 4th option labeled "Hybrid: " combining elements; set that as
chosen_approach.
- Reject all / explore further → ask what's missing, regenerate (don't just rotate). Cap regeneration at 2 rounds before stopping with
chosen_approach: pending.
- Defer → set
status: thinking, write Decision: deferred until <reason/date>.
Write approaches.md with the chosen option recorded.
Update manifest: current_phase: approaches, append approaches to completed_phases, set chosen_approach, set status: decided (if user chose) or leave status: thinking (if deferred). Bump updated_at.
Suggest next command: /wazzap:go (if decided) or "come back when you're ready" (if deferred).
approaches.md template
# Approaches (Phase 3)
**Slug:** `<slug>`
**Generated:** <ISO timestamp>
**Real problem (from `:real`):** <one-sentence carried over>
## Comparison
| Dimension | Conservative: <name> | Adjacent: <name> | Bold: <name> |
|---|---|---|---|
| Effort | ... | ... | ... |
| Risk | ... | ... | ... |
| Reversibility | ... | ... | ... |
| Time-to-impact | ... | ... | ... |
| Stakeholder cost | ... | ... | ... |
| Alignment w/ success criteria | ... | ... | ... |
## Option 1 — Conservative: <name>
**Pitch:** <one line>
**Description:** <3–6 sentences>
**Pros:**
- ...
**Cons:**
- ...
**Risks:**
- ...
**Rough effort:** <plain language>
**What it requires:**
- ...
## Option 2 — Adjacent: <name>
[same shape as Option 1]
## Option 3 — Bold: <name>
[same shape as Option 1]
## Recommendation
**Recommended:** <option name>
<2–3 sentences tying back to the real problem and constraints. Be honest if the call is close.>
## Decision
**Chosen:** <option name OR "Hybrid: <name> (combines X from N1 with Y from N2)" OR "pending" OR "deferred until <reason>">
**Decided by:** <user>
**Decided at:** <ISO timestamp, or "—" if pending/deferred>
**Reasoning (user's words):**
<verbatim from user when they chose, or "—">
If the user picked a hybrid, add a fourth option section before the Decision block:
## Option 4 — Hybrid: <name>
**Combines:** <which elements from which options>
**Description:** ...
**Pros / Cons / Risks / Effort / Requires:** ... (same shape)
Revisits (re-running :approaches later)
If approaches.md already exists, append a new revisit section instead of overwriting:
---
## Revisited <ISO timestamp>
**Trigger:** <why we're re-exploring>
### What changed since last round
- <e.g. "New constraint from :real revisit", "Original chosen approach turned out to be infeasible">
### New options
[3 fresh options under conservative/adjacent/bold lenses]
### Comparison (this round)
[table]
### Recommendation (this round)
...
### Decision (this round)
...
Update manifest revisits[] and (if a new option is chosen) overwrite chosen_approach — but keep the old one in the prior section.
Output to user (when an option is chosen)
✓ approaches.md written.
Chosen: <option name>
Status: decided
Next: /wazzap:go to turn this into a concrete plan.
Output to user (when deferred)
✓ approaches.md written.
Decision: deferred until <reason>
Status: thinking
Resume anytime with /wazzap:resume <slug>.
Anti-patterns to avoid in :approaches
- ❌ Three options that are basically the same with renamed labels. If conservative and adjacent feel identical, push adjacent harder or be honest that adjacent doesn't apply here.
- ❌ Skipping the comparison table. The table is the audit-trail summary — without it, the doc is just three blurbs.
- ❌ Hiding cons. If the recommended option has a real downside, name it. Future-you reading this needs the honest version.
- ❌ Letting the user reject all 3 without asking what's missing. Otherwise round 2 will miss the same way.
- ❌ Generating a 4th, 5th, 6th option proactively. 3 is the cap. Hybrids only happen on user request.
- ❌ Forgetting to fill the Decision section. Even "pending" is a decision worth recording.
Self-check before finishing
1---2name: wazzap-approaches3description: Phase 3 of /wazzap — generate 3 distinct approaches (conservative / adjacent / bold) with pros, cons, and a comparison table. Use when the user invokes /wazzap:approaches or wants to weigh options.4---56# `/wazzap:approaches` — "Different ways forward"78Phase 3 of 4. **Mode: divergent generation + structured comparison.** Generate 3 *distinct* approaches across different lenses so the user has a real choice — not three flavors of the same answer.910## Goal1112Produce `approaches.md` with exactly 3 named options, comparable on the same dimensions, plus a recommendation and a decision (or `pending`).1314## Preconditions15161. Read parent `SKILL.md`.172. Resolve active decision; read `up.md` and `real.md`.183. **Soft-gate check:** if no `real.md`, warn ("No real.md — `:approaches` without `:real` tends to misfire. Continue anyway?"). On proceed, write a stub `real.md` and continue.1920## The three lenses2122Generate one option per lens. **Distinctness is the rule** — if two options are mostly the same with cosmetic differences, replace one.2324| Lens | Mindset | Tends to look like |25|---|---|---|26| **Conservative** | Smallest move that addresses the real problem. Preserves existing investments. Lowest risk. | Patch / tweak / add a check / clarify a process |27| **Adjacent** | One step further than conservative. Touches related systems or stakeholders. Medium risk, medium reward. | Refactor / new feature / different tool / new agreement |28| **Bold** | Reframes the problem entirely or makes a big bet. Highest risk, highest leverage. May invalidate constraints from `:real`. | Rebuild / pivot / fire / hire / quit / acquire / shut down |2930If a lens genuinely produces nothing useful for this decision (rare), say so explicitly and fill with the strongest alternative — but flag it.3132## Steps33341. **Read context.** `up.md` for the wish; `real.md` for the real problem, constraints, and success criteria.35362. **Draft 3 options**, one per lens. For each:37 - **Name** (short, distinctive — "Move to JWT" not "Option 2")38 - **One-line pitch**39 - **Description** (3–6 sentences)40 - **Pros** (3–5 bullets, tied to the success criteria from `:real` where possible)41 - **Cons** (3–5 bullets — be honest, this is the audit trail)42 - **Risks** (what could go wrong, distinct from cons)43 - **Rough effort** (your judgment in plain language: "an afternoon", "a sprint", "a quarter", "I genuinely don't know")44 - **What it requires** (people, money, tools, conversations, permissions)45463. **Build a comparison table.** Columns: Conservative / Adjacent / Bold. Rows: Effort, Risk, Reversibility, Time-to-impact, Stakeholder cost, Alignment with success criteria. Use short cells (1–3 words).47484. **Recommend** one option. Lead with the recommendation, give 2–3 sentences of rationale tied to the real problem and constraints. Be honest if the lenses are genuinely close — say so.49505. **Show the user.** Format: comparison table first, then expanded option cards, then your recommendation. Ask: *"Pick one (or hybrid two), or want me to explore further?"*51526. **Handle the user's response:**53 - **Pick** → set `chosen_approach` in manifest, fill the **Decision** section in the doc.54 - **Hybrid** → write a 4th option labeled "Hybrid: <name>" combining elements; set that as `chosen_approach`.55 - **Reject all / explore further** → ask what's missing, regenerate (don't just rotate). Cap regeneration at 2 rounds before stopping with `chosen_approach: pending`.56 - **Defer** → set `status: thinking`, write **Decision: deferred until <reason/date>**.57587. **Write `approaches.md`** with the chosen option recorded.59608. **Update manifest:** `current_phase: approaches`, append `approaches` to `completed_phases`, set `chosen_approach`, set `status: decided` (if user chose) or leave `status: thinking` (if deferred). Bump `updated_at`.61629. **Suggest next command:** `/wazzap:go` (if decided) or "come back when you're ready" (if deferred).6364## `approaches.md` template6566```markdown67# Approaches (Phase 3)6869**Slug:** `<slug>`70**Generated:** <ISO timestamp>71**Real problem (from `:real`):** <one-sentence carried over>7273## Comparison7475| Dimension | Conservative: <name> | Adjacent: <name> | Bold: <name> |76|---|---|---|---|77| Effort | ... | ... | ... |78| Risk | ... | ... | ... |79| Reversibility | ... | ... | ... |80| Time-to-impact | ... | ... | ... |81| Stakeholder cost | ... | ... | ... |82| Alignment w/ success criteria | ... | ... | ... |8384## Option 1 — Conservative: <name>8586**Pitch:** <one line>8788**Description:** <3–6 sentences>8990**Pros:**91- ...9293**Cons:**94- ...9596**Risks:**97- ...9899**Rough effort:** <plain language>100101**What it requires:**102- ...103104## Option 2 — Adjacent: <name>105106[same shape as Option 1]107108## Option 3 — Bold: <name>109110[same shape as Option 1]111112## Recommendation113114**Recommended:** <option name>115116<2–3 sentences tying back to the real problem and constraints. Be honest if the call is close.>117118## Decision119120**Chosen:** <option name OR "Hybrid: <name> (combines X from N1 with Y from N2)" OR "pending" OR "deferred until <reason>">121122**Decided by:** <user>123**Decided at:** <ISO timestamp, or "—" if pending/deferred>124125**Reasoning (user's words):**126<verbatim from user when they chose, or "—">127```128129If the user picked a hybrid, add a fourth option section before the **Decision** block:130131```markdown132## Option 4 — Hybrid: <name>133134**Combines:** <which elements from which options>135**Description:** ...136**Pros / Cons / Risks / Effort / Requires:** ... (same shape)137```138139## Revisits (re-running `:approaches` later)140141If `approaches.md` already exists, **append** a new revisit section instead of overwriting:142143```markdown144---145## Revisited <ISO timestamp>146147**Trigger:** <why we're re-exploring>148149### What changed since last round150- <e.g. "New constraint from :real revisit", "Original chosen approach turned out to be infeasible">151152### New options153[3 fresh options under conservative/adjacent/bold lenses]154155### Comparison (this round)156[table]157158### Recommendation (this round)159...160161### Decision (this round)162...163```164165Update manifest `revisits[]` and (if a new option is chosen) overwrite `chosen_approach` — but keep the old one in the prior section.166167## Output to user (when an option is chosen)168169```170✓ approaches.md written.171172Chosen: <option name>173Status: decided174175Next: /wazzap:go to turn this into a concrete plan.176```177178## Output to user (when deferred)179180```181✓ approaches.md written.182183Decision: deferred until <reason>184Status: thinking185186Resume anytime with /wazzap:resume <slug>.187```188189## Anti-patterns to avoid in `:approaches`190191- ❌ Three options that are basically the same with renamed labels. If conservative and adjacent feel identical, push adjacent harder or be honest that adjacent doesn't apply here.192- ❌ Skipping the comparison table. The table is the audit-trail summary — without it, the doc is just three blurbs.193- ❌ Hiding cons. If the recommended option has a real downside, name it. Future-you reading this needs the honest version.194- ❌ Letting the user reject all 3 without asking *what's missing*. Otherwise round 2 will miss the same way.195- ❌ Generating a 4th, 5th, 6th option proactively. 3 is the cap. Hybrids only happen on user request.196- ❌ Forgetting to fill the **Decision** section. Even "pending" is a decision worth recording.197198## Self-check before finishing199200- [ ] Exactly 3 options (or 4 if user requested a hybrid).201- [ ] Each option has all fields filled (pitch, description, pros, cons, risks, effort, requires).202- [ ] Comparison table is present and uses short cells.203- [ ] Recommendation is named with rationale.204- [ ] Decision section is filled (chosen / hybrid / pending / deferred — never blank).205- [ ] Manifest `chosen_approach` reflects the decision.206- [ ] Status is `decided` (chose) or `thinking` (pending/deferred).207- [ ] Suggested next command in output.