/wazzap:real — "What's really up?"
Phase 2 of 4. Mode: Socratic, multi-turn. Probe one question at a time until the user can name the real problem under the surface wish. This is the framework's signature move — the part that earns the audit trail.
Goal
Produce real.md with a Q+A probing log and a clean problem statement that enables :approaches without rework.
Preconditions
- Read parent
SKILL.md for cross-cutting rules.
- Resolve the active decision via
<wazzap-root>/_active (or slug=<x> arg).
- Read
up.md to know the surface wish.
- Soft-gate check: if no
up.md exists, warn and write a stub up.md ("Skipped — picked up at :real on "). Continue.
Steps
Open with the surface wish. Restate it back: "Surface wish from :up: ''. Now — what's really up?"
Probe one question at a time. Default budget: 3–5 questions. Hard cap: 8. After each round:
- User answers.
- Agent restates the real problem (current best draft) in one sentence.
- Agent asks: "Does that land, or do we keep digging?"
- User can stop early ("yes, that's it") or continue.
Probe categories — pick whichever the wish hasn't already covered. Don't run all of these; mix-and-match:
| Lens |
Question pattern |
| Symptom vs cause |
"If you fixed the surface thing tomorrow, would the underlying frustration still be there?" |
| Disappearance test |
"If this problem vanished overnight, what would actually change in your day?" |
| Who feels it |
"Who's most paying the cost right now? You? Users? A teammate? Future-you?" |
| Hidden constraint |
"What can't you change, even if it would solve this?" |
| Failure mode |
"What does it look like 6 months from now if you do nothing?" |
| Success signal |
"How would you know this was solved without anyone telling you?" |
| Trigger |
"Why is this surfacing now, not 3 months ago or 3 months from now?" |
| Reframe |
"Is this a [decision / capability / risk / relationship / clarity] problem?" |
Stop conditions. Stop probing when any of these is true:
- User says "good", "that's it", "stop", or similar.
- Agent has restated the real problem and the user agrees.
- 8-question hard cap hit (write what you have, label remaining gaps in
Unknowns).
Synthesize. Once probing is done, draft the structured sections (real problem, stakeholders, constraints, success criteria, non-goals, facts/assumptions/unknowns).
Show the synthesis to the user. Ask: "Does this land? Edit anything before I save?". Apply edits, then write real.md.
Update manifest. current_phase: real, append real to completed_phases, bump updated_at. Optionally update title if the framing shifted enough.
Suggest next command: /wazzap:approaches.
Probing technique notes
- One question per message. Never stack questions.
- Multiple choice when possible. Easier to answer than open-ended.
- Mirror the user's language. Use their nouns and verbs, not your reframe.
- Don't moralize. The Socratic move is to expose, not judge. If the user's "real problem" is "I don't want to have a hard conversation with my co-founder," capture that — don't soften it to "communication gap."
- Surface assumptions explicitly. When you hear "X always Y," ask "always? or just lately?"
real.md template
# Real problem (Phase 2)
**Slug:** `<slug>`
**Drilled on:** <ISO timestamp>
## Surface wish (from `:up`)
> <verbatim from up.md "The wish" section>
## Probing log
**Q1:** <agent question>
**A1:** <user answer (verbatim or distilled with quotes around exact phrasing)>
**Q2:** <agent question>
**A2:** <user answer>
<...continue for each Q+A...>
## The real problem
<One sentence. The thing that, if solved, makes the surface wish irrelevant or trivial.>
## Stakeholders
- **<role/name>** — <how they're involved, what they want>
- ...
## Constraints
- **Time:** <deadline or "open">
- **Money:** <budget bound or "n/a">
- **People:** <who's available, who's not>
- **Tech:** <hard tech limits>
- **Political/social:** <can't-touch topics, relationships at stake>
- **Other:** <whatever else came up>
## Success criteria (observable)
- <What you'd see/measure that proves it's solved>
- ...
## Non-goals
- <Explicit scope cuts — things the user said are NOT what they're trying to do>
- ...
## Facts / Assumptions / Unknowns
**Facts** (verified or self-evident):
- ...
**Assumptions** (treated as true, but not verified):
- ...
**Unknowns** (open questions that may or may not block `:approaches`):
- ...
Revisits (re-running :real later)
If real.md already exists, append, don't overwrite:
- Read existing
real.md.
- Append a new section:
---
## Revisited <ISO timestamp>
**Trigger:** <user-stated reason for coming back>
### Probing log (this round)
...
### Updated real problem
<new one-sentence statement>
### What changed since last round
- <e.g. "Stakeholder X was added", "Constraint Y was relaxed", "Surface symptom turned out to be different">
- Update manifest:
revisits:
- phase: real
at: <ISO timestamp>
reason: "<trigger>"
- Bump
updated_at. Don't change completed_phases.
The original probing log stays untouched. That's the audit trail commitment.
Output to user (after writing)
✓ real.md written.
Real problem: <one-sentence statement>
Next: /wazzap:approaches to generate options.
Anti-patterns to avoid in :real
- ❌ Stacking questions ("Who's affected? Why now? What's the constraint?"). One at a time.
- ❌ Skipping the "current best draft" restatement after each round. That's how the user knows when to stop.
- ❌ Letting probing run past 8 questions. If you're at 8 and the real problem isn't crisp, write what you have and label the rest as
Unknowns. Better imperfect than indefinite.
- ❌ Sanitizing the user's language. "I'm angry at my co-founder" is not "interpersonal alignment opportunity."
- ❌ Generating Q&A the user didn't actually answer. The probing log is verbatim or it's worthless.
- ❌ Overwriting an existing
real.md. Always append on revisit.
Self-check before finishing
1---2name: wazzap-real3description: Phase 2 of /wazzap — Socratic drilldown. Probe layer-by-layer to find the real problem under the surface wish. Use when the user invokes /wazzap:real or asks 'what's really up'.4---56# `/wazzap:real` — "What's really up?"78Phase 2 of 4. **Mode: Socratic, multi-turn.** Probe one question at a time until the user can name the *real* problem under the surface wish. This is the framework's signature move — the part that earns the audit trail.910## Goal1112Produce `real.md` with a Q+A probing log and a clean problem statement that enables `:approaches` without rework.1314## Preconditions15161. Read parent `SKILL.md` for cross-cutting rules.172. Resolve the active decision via `<wazzap-root>/_active` (or `slug=<x>` arg).183. Read `up.md` to know the surface wish.194. **Soft-gate check:** if no `up.md` exists, warn and write a stub `up.md` ("Skipped — picked up at :real on <date>"). Continue.2021## Steps22231. **Open with the surface wish.** Restate it back: *"Surface wish from `:up`: '<wish>'. Now — what's really up?"*24252. **Probe one question at a time.** Default budget: **3–5 questions**. Hard cap: **8**. After each round:26 - User answers.27 - Agent **restates the real problem (current best draft)** in one sentence.28 - Agent asks: *"Does that land, or do we keep digging?"*29 - User can stop early ("yes, that's it") or continue.30313. **Probe categories** — pick whichever the wish hasn't already covered. Don't run all of these; mix-and-match:3233 | Lens | Question pattern |34 |---|---|35 | Symptom vs cause | "If you fixed the surface thing tomorrow, would the underlying frustration still be there?" |36 | Disappearance test | "If this problem vanished overnight, what would actually change in your day?" |37 | Who feels it | "Who's most paying the cost right now? You? Users? A teammate? Future-you?" |38 | Hidden constraint | "What can't you change, even if it would solve this?" |39 | Failure mode | "What does it look like 6 months from now if you do *nothing*?" |40 | Success signal | "How would you know this was solved without anyone telling you?" |41 | Trigger | "Why is this surfacing *now*, not 3 months ago or 3 months from now?" |42 | Reframe | "Is this a [decision / capability / risk / relationship / clarity] problem?" |43444. **Stop conditions.** Stop probing when **any** of these is true:45 - User says "good", "that's it", "stop", or similar.46 - Agent has restated the real problem and the user agrees.47 - 8-question hard cap hit (write what you have, label remaining gaps in `Unknowns`).48495. **Synthesize.** Once probing is done, draft the structured sections (real problem, stakeholders, constraints, success criteria, non-goals, facts/assumptions/unknowns).50516. **Show the synthesis to the user.** Ask: *"Does this land? Edit anything before I save?"*. Apply edits, then write `real.md`.52537. **Update manifest.** `current_phase: real`, append `real` to `completed_phases`, bump `updated_at`. Optionally update `title` if the framing shifted enough.54558. **Suggest next command:** `/wazzap:approaches`.5657## Probing technique notes5859- **One question per message.** Never stack questions.60- **Multiple choice when possible.** Easier to answer than open-ended.61- **Mirror the user's language.** Use their nouns and verbs, not your reframe.62- **Don't moralize.** The Socratic move is to expose, not judge. If the user's "real problem" is "I don't want to have a hard conversation with my co-founder," capture that — don't soften it to "communication gap."63- **Surface assumptions explicitly.** When you hear "X always Y," ask "always? or just lately?"6465## `real.md` template6667```markdown68# Real problem (Phase 2)6970**Slug:** `<slug>`71**Drilled on:** <ISO timestamp>7273## Surface wish (from `:up`)7475> <verbatim from up.md "The wish" section>7677## Probing log7879**Q1:** <agent question> 80**A1:** <user answer (verbatim or distilled with quotes around exact phrasing)>8182**Q2:** <agent question> 83**A2:** <user answer>8485<...continue for each Q+A...>8687## The real problem8889<One sentence. The thing that, if solved, makes the surface wish irrelevant or trivial.>9091## Stakeholders9293- **<role/name>** — <how they're involved, what they want>94- ...9596## Constraints9798- **Time:** <deadline or "open">99- **Money:** <budget bound or "n/a">100- **People:** <who's available, who's not>101- **Tech:** <hard tech limits>102- **Political/social:** <can't-touch topics, relationships at stake>103- **Other:** <whatever else came up>104105## Success criteria (observable)106107- <What you'd see/measure that proves it's solved>108- ...109110## Non-goals111112- <Explicit scope cuts — things the user said are NOT what they're trying to do>113- ...114115## Facts / Assumptions / Unknowns116117**Facts** (verified or self-evident):118- ...119120**Assumptions** (treated as true, but not verified):121- ...122123**Unknowns** (open questions that may or may not block `:approaches`):124- ...125```126127## Revisits (re-running `:real` later)128129If `real.md` already exists, **append, don't overwrite**:1301311. Read existing `real.md`.1322. Append a new section:133 ```markdown134 ---135 ## Revisited <ISO timestamp>136 137 **Trigger:** <user-stated reason for coming back>138 139 ### Probing log (this round)140 ...141 142 ### Updated real problem143 <new one-sentence statement>144 145 ### What changed since last round146 - <e.g. "Stakeholder X was added", "Constraint Y was relaxed", "Surface symptom turned out to be different">147 ```1483. Update manifest:149 ```yaml150 revisits:151 - phase: real152 at: <ISO timestamp>153 reason: "<trigger>"154 ```1554. Bump `updated_at`. Don't change `completed_phases`.156157The original probing log stays untouched. That's the audit trail commitment.158159## Output to user (after writing)160161```162✓ real.md written.163164Real problem: <one-sentence statement>165166Next: /wazzap:approaches to generate options.167```168169## Anti-patterns to avoid in `:real`170171- ❌ Stacking questions ("Who's affected? Why now? What's the constraint?"). One at a time.172- ❌ Skipping the "current best draft" restatement after each round. That's how the user knows when to stop.173- ❌ Letting probing run past 8 questions. If you're at 8 and the real problem isn't crisp, write what you have and label the rest as `Unknowns`. Better imperfect than indefinite.174- ❌ Sanitizing the user's language. "I'm angry at my co-founder" is not "interpersonal alignment opportunity."175- ❌ Generating Q&A the user didn't actually answer. The probing log is verbatim or it's worthless.176- ❌ Overwriting an existing `real.md`. Always append on revisit.177178## Self-check before finishing179180- [ ] Probing log has at least 3 verbatim Q+A pairs (or hit 8-cap with explanation).181- [ ] Real problem is one sentence, agreed by user.182- [ ] Stakeholders, constraints, success criteria, non-goals all present (use "Not yet identified" if genuinely empty, don't fabricate).183- [ ] Facts vs Assumptions vs Unknowns are labeled separately.184- [ ] Manifest updated: `current_phase`, `completed_phases`, `updated_at`.185- [ ] Suggested next command in output.