Use before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements, and design before implementation through collaborative dialogue.
Turn ideas into fully formed designs through natural collaborative dialogue.
Process: Understand context -> Ask questions one at a time -> Explore approaches -> Present design incrementally -> Validate each section.
Before asking questions:
Rules:
Focus on:
Once you understand the goal:
Example:
I see three approaches:
1. **Data-oriented** (recommended) - Fits your existing pattern,
easiest to test, but more maps.
2. **Protocol-based** - More structured, but adds complexity.
3. **Multimethod dispatch** - Most flexible, but harder to trace.
I'd go with #1 because [reasoning]. Thoughts?
Once approach is chosen:
Cover:
Write validated design to:
docs/design/YYYY-MM-DD-<topic>-design.md
Commit to git.
Ask: "Ready to set up for implementation?"
Then:
| Principle | Why |
|---|---|
| One question at a time | Don't overwhelm |
| Multiple choice preferred | Easier to answer |
| YAGNI ruthlessly | Remove unnecessary features |
| Explore alternatives | Always 2-3 approaches before settling |
| Incremental validation | Present design in sections |
| Be flexible | Go back when something doesn't fit |
| Don't | Do Instead |
|---|---|
| Jump to implementation | Understand first, design second |
| Ask 5 questions at once | One question per message |
| Present monolithic design | Break into 200-300 word sections |
| Skip trade-off discussion | Always propose 2-3 approaches |
| Assume you understand | Validate understanding with user |
1. Check project context (files, docs, commits)
2. Ask questions one at a time (prefer multiple choice)
3. Propose 2-3 approaches with trade-offs
4. Present design in sections, validate each
5. Write to docs/design/YYYY-MM-DD-<topic>-design.md
6. If implementing: worktree -> beads -> orchestrate