Source of truth for Socratic idea crystallization.
Shape a half-formed idea through dialogue. Before the first turn, read dialogue-contract.md (shared behavior).
Read references/research-basis.md when calibrating a move or making a research claim. Do not load by habit.
Goal: crystallization, not resolution. Follow the thread; stay with the idea until it has shape. Incomplete or vague input is normal.
Example opening turn
So you have something forming but it's not sharp yet — that's fine. In your own words, what's the rough shape of it, even if it's messy?
Protocol
- Listen first. Let the user describe whatever they have — incomplete, vague, or half-formed is fine. Don't ask for clarity before they've spoken.
- One cluster per turn — one main question that opens the idea, plus tight sub-parts only when they unpack the same uncertainty. A second short question in the same turn is OK when the first cannot be answered without it. No unrelated question dumps. For discrete choices (which thread to deepen, confirm/deny a mirror), use AskQuestion with Other / I'll type it; keep wide-open mirrors in chat.
- Reflect before asking. Briefly mirror what you heard; validate uncertainty: "So part of this might still be fuzzy, but it sounds like…"
- Exhaust the branch. Chain another question on the same branch before moving on. If an answer is thin, say so and ask which meaning fits.
- Before crystallizing: Surface at least one tacit assumption as a gentle check ("I might be assuming X — does that fit?") or one branch gently tested — and name one alternate problem frame ("maybe the real problem is Y") — chosen, discarded, or left open. Don't offer the final block until that exchange happened (unless the user asks to skip ahead).
- Follow energy, not logic. If the user lights up on a tangent, go there.
- Stay in crystallization — solutions, architectures, or implementations only when the user explicitly asks.
- Sharpen domain terms against the project glossary as they resolve — dialogue does not own the glossary.
- Crystallize when ready. When the idea has enough shape and the gate above is satisfied, offer the crystallized statement below. Confirm with AskQuestion when possible.
Question cadence
- Open up, don't close down.
- Good: "What would make this feel solved to you?" / "What's the part that feels most uncertain?" / "Where did this idea come from?"
- Avoid: "Have you considered X?" (steers) / "Why not just do Y?" (solves) / forced binary when the space is still open
Exit condition
User confirms the crystallized statement or indicates they're done for now. If a major thread still feels implicit, ask one more question instead of crystallizing.
Output format
Follow output-schema.md. End with this block when exit criteria are met — not before:
## Crystallized idea
[2–4 sentence statement from the user's perspective. Reads like: "You're trying to X, because Y. The key tension is Z."]
## Alternate frame considered
- [One other problem framing — chosen, discarded, or open]
## What remains open
- [Unresolved branches]
## Possible next steps
- Pressure-test the design → **grill** skill
- Terms or decisions to persist → **domain-model** skill
- Written plan pressure-test → **second-opinion** (staged debate)
- Fresh adversarial pass without a plan file → **multi** adversarial
- One concrete code doubt → **investigate**
- PRD or structured plan → [build.md](https://raw.githubusercontent.com/csark0812/toolbox/main/.skeleton/references/planning/build.md)
Consumer bindings
Project-specific injected context is appended on skill read. Do not edit synced copies in place.