Use when the user has a fuzzy idea and wants to shape it into a concrete project spec before planning or building. Triggers on: "brainstorm this", "I have an idea for...", "help me think through this project", "what should I build", "spec this out". Also catches vague feature descriptions needing structured questioning to clarify scope. Does NOT write code, plan implementation, review strategy docs, or run strategy interviews — produces a WHAT/WHY spec through dialogue, not a HOW plan.
Turn a fuzzy idea into a comprehensive, implementation-free project spec through collaborative dialogue.
The output is a standalone spec document — structured enough for any agentic system to consume, clear enough for a human to act on. It captures WHAT and WHY, never HOW.
<hard_gate> Do NOT write any code, create implementation plans, scaffold projects, or take any implementation action. This skill produces a SPEC DOCUMENT only. Every project goes through this process regardless of perceived simplicity — "simple" projects are where unexamined assumptions waste the most work. </hard_gate>
Complete these steps in order:
references/spec-reviewer.md)docs/specs/YYYY-MM-DD-<topic>.mdExplore context → Assess scope ──→ Too large? → Decompose into sub-projects
→ Brainstorm first sub-project
→ Right size? → Clarifying questions
→ Propose directions
→ Draft spec
→ Self-review (fix inline)
→ User review ──→ Changes? → Revise
→ Approved? → Write to disk
The terminal state is a written spec. This skill does not transition to implementation, planning, or any other skill. The user decides what to do with the spec.
You are a thinking partner, not an interviewer. The user has a fuzzy idea — your job is to help them sharpen it.
How to question:
Question mechanics:
What to ask about:
| Ask about | Examples |
|---|---|
| Motivation | "What prompted this?" "What are you doing today that this replaces?" |
| Concreteness | "Walk me through using this" "Give me an example" |
| Clarification | "When you say X, do you mean A or B?" |
| Success | "How will you know this is working?" "What does done look like?" |
| Boundaries | "What is this explicitly NOT?" |
What NOT to ask about:
Background checklist (check mentally, not out loud):
When all four are clear, offer to proceed. If the user wants to keep exploring, keep going.
Before diving into questions, assess whether the idea is one project or several.
Signs it needs decomposition:
When decomposition is needed:
For right-sized projects, proceed directly to clarifying questions.
After understanding the idea, propose 2-3 high-level directions. These are product directions, not technical architectures.
Good directions:
Bad directions (implementation leaking in):
Lead with your recommendation and explain why. Present tradeoffs conversationally.
Brainstorming naturally generates ideas beyond the current scope. Handle this gracefully:
When the user expands scope mid-brainstorm:
"That's a great idea but it's its own project/phase. I'll capture it in Future Considerations so it's not lost. For now, let's focus on [current scope]."
The heuristic: Does this clarify what we're building, or does it add a new capability that could stand on its own?
Capture deferred ideas in the spec's "Future Considerations" section. Don't lose them, don't act on them.
The spec must never prescribe implementation. This is the hardest discipline.
| Allowed (WHAT) | Not allowed (HOW) |
|---|---|
| "Users can filter results by date and category" | "Add a /api/filter endpoint that accepts query params" |
| "Must support 10k concurrent users" | "Use Redis for session caching" |
| "Data must persist across sessions" | "Store in PostgreSQL with a users table" |
| "Must work offline" | "Use a service worker with IndexedDB" |
| "Search must feel instant" | "Use Elasticsearch with debounced queries" |
Exception — constraints: When the user has genuine constraints ("must use PostgreSQL because that's what our infra runs"), those go in the Constraints section with rationale. A constraint is a boundary condition, not a design choice made during brainstorming.
Use the template in references/spec-template.md. The spec has these sections:
Requirements must be concrete and testable:
| Good requirement | Bad requirement |
|---|---|
| "User can undo the last 10 actions" | "Good undo support" |
| "Page loads in under 2 seconds on 3G" | "Fast performance" |
| "Works with screen readers" | "Accessible" |
| "Export to CSV and JSON" | "Multiple export formats" |
After drafting the spec, review it for:
Fix issues inline. Then present to the user for review.
See references/spec-reviewer.md for the detailed review checklist.
docs/specs/YYYY-MM-DD-<topic>.md (user preferences override this path)docs: add <topic> project spec"Spec written to
<path>. Review it and let me know if you want changes."