| name | brainstorm |
| description | Use when starting from rough ideas - refines concepts into executable specifications through collaborative questioning, alternative exploration, and incremental validation, use this skill when called from a command |
Brainstorming Ideas Into Specifications
Overview
Help turn rough ideas into formal, executable specifications through natural collaborative dialogue.
Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, create the specification using spec-kit (if available) or directly as markdown.
Key Difference from Standard Brainstorming:
- Output is a SPEC, not a design document
- Spec is the source of truth for implementation
- Focus on "what" and "why", defer "how" to implementation phase
- Validate spec soundness before finishing
The Process
Understanding the idea
Check context first:
- Review existing specs (if any) in
specs/directory - Check for constitution (
specs/constitution.md) - Review recent commits to understand project state
- Look for related features or patterns
Ask questions to refine:
- Ask questions one at a time
- Prefer multiple choice when possible
- Focus on: purpose, constraints, success criteria, edge cases
- Identify dependencies and integrations
Remember: You're building a SPEC, so focus on WHAT needs to happen, not HOW it will be implemented.
Exploring approaches
Propose 2-3 different approaches:
- Present options conversationally with trade-offs
- Lead with your recommended option
- Explain reasoning clearly
- Consider: complexity, maintainability, user impact
Questions to explore:
- What are the core requirements vs. nice-to-have?
- What are the error cases and edge conditions?
- How does this integrate with existing features?
- What are the success criteria?
Creating the specification
Once you understand what you're building:
Announce spec creation: "Based on our discussion, I'm creating the specification..."
Create spec file:
- Location:
specs/features/[feature-name].md - Use spec-kit CLI if available:
speckit specify - Otherwise: Create markdown directly
- Location:
Spec structure (use this template):
# Feature: [Feature Name]
## Purpose
[Why this feature exists - the problem it solves]
## Requirements
### Functional Requirements
- [What the feature must do]
- [Behavior in specific scenarios]
- [Integration points]
### Non-Functional Requirements
- [Performance constraints]
- [Security requirements]
- [Accessibility needs]
## Success Criteria
- [How we know it works]
- [Measurable outcomes]
## Error Handling
- [What can go wrong]
- [How errors should be handled]
## Edge Cases
- [Boundary conditions]
- [Unusual scenarios]
## Dependencies
- [Other features/systems required]
- [External services]
## Out of Scope
- [What this feature explicitly does NOT do]
- [Future considerations]
## Open Questions
- [Anything still unclear]
- [Decisions deferred to implementation]
Validate against constitution (if exists):
- Read
specs/constitution.md - Check spec aligns with project principles
- Note any violations and address them
- Read
Present spec in sections:
- Show 200-300 words at a time
- Ask: "Does this look right so far?"
- Be ready to revise based on feedback
After spec creation
Validate the spec:
- Use
sdd:reviewing-specto check soundness - Ensure spec is implementable
- Confirm no ambiguities remain
Offer next steps:
- "Spec created and validated. Ready to implement?"
- If yes → Use
sdd:implement - If no → Offer to refine spec or pause
Commit the spec:
git add specs/features/[feature-name].md
git commit -m "Add spec for [feature name]
[Brief description of what the feature does]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>"
Key Principles
- One question at a time - Don't overwhelm with multiple questions
- Multiple choice preferred - Easier to answer than open-ended
- YAGNI ruthlessly - Remove unnecessary features from all specs
- Explore alternatives - Always propose 2-3 approaches before settling
- Incremental validation - Present spec in sections, validate each
- Be flexible - Go back and clarify when something doesn't make sense
- Spec, not design - Focus on WHAT, defer HOW to implementation
Recommend Constitution (First Time Users)
If no constitution exists and this seems to be early in project:
After first spec created:
- "I notice you don't have a constitution yet."
- "A constitution defines project-wide principles like:"
- Coding standards
- Architectural patterns
- Quality gates
- Error handling approaches
- "Would you like to create one? It ensures consistency across features."
- If yes → Use
sdd:constitution
Don't be pushy: Constitution is optional but recommended.
Checklist
Use TodoWrite to track:
- Understand current project context
- Ask questions to refine idea
- Explore 2-3 approaches with trade-offs
- Create specification file
- Validate against constitution (if exists)
- Review spec for soundness
- Commit spec to git
- Offer next steps (implement or refine)
Example Flow
User: I want to add a comment system to the blog
You: I'm using sdd:brainstorm to refine this idea into a spec.
Let me understand the context first...
[Reviews existing code and specs]
For the comment system, what level of features do you want?
A) Basic - Name, email, comment text only
B) Standard - Above + threading/replies
C) Advanced - Above + reactions, editing, moderation
D) Full - Above + notifications, mentions, markdown
User: B - Standard with threading
You: Great. For threading, should replies be:
A) Unlimited depth (comments on comments on comments...)
B) One level only (reply to top-level comments)
C) Two levels (reply and one nested level)
[... conversation continues ...]
You: Based on our discussion, I'm creating the specification at:
specs/features/blog-comments.md
[Creates spec with all discussed requirements]
Here's the Purpose and Requirements section:
## Purpose
Enable readers to discuss blog posts through threaded comments,
fostering community engagement and feedback.
## Requirements
### Functional Requirements
- Readers can submit comments on published blog posts
- Comments require: name, email, comment text
- Comments support one level of replies (threading)
- Comments display in chronological order, newest first
- Replies display under parent comment
...
Does this look right so far?
User: Yes
[... continues through all sections ...]
You: Spec created! Let me validate it for soundness...
[Runs sdd:reviewing-spec]
Spec is sound and implementable ✓
Committed to git ✓
Ready to implement the comment system?
Common Pitfalls
Don't:
- Create design documents instead of specs
- Include implementation details ("use Redis for caching")
- Make decisions that belong in implementation phase
- Skip exploring alternatives
- Rush to spec creation before understanding the problem
Do:
- Focus on requirements and behavior
- Specify WHAT, not HOW
- Explore multiple approaches
- Validate incrementally
- Check against constitution
- Ensure spec is implementable
Remember
The spec you create here becomes the source of truth. Implementation will flow from it. Code reviews will validate against it. Make it clear, complete, and correct.
Good specs enable good implementation. Take the time to get it right.