Use when creating or developing, before writing code or implementation plans - refines rough ideas into fully-formed designs through collaborative questioning, alternative exploration, and...
Help turn ideas into fully formed designs and specs 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, present the design in small sections (200-300 words), checking after each section whether it looks right so far.
Announce at start: "I'm using the brainstorming skill to refine this idea into a design."
Create TodoWrite todos for each phase:
Mark each phase as in_progress when starting, completed when done. This makes progress visible and prevents skipping phases.
Use the AskUserQuestion tool for structured decision points:
Keep free-form conversation for:
Principle: Structured questions for decisions, conversational for discovery.
Step 1: Check project context
Step 2: Gather initial constraints
Use AskUserQuestion to understand scope:
Question: "What is the scope of this feature?"
Header: "Scope"
Options:
- MVP / Proof of concept: Minimal viable implementation to validate the idea
- Production-ready: Full implementation with error handling, tests, and docs
- Enhancement: Adding to existing feature rather than building new
Step 3: Identify target users (if unclear)
Use AskUserQuestion when user type matters:
Question: "Who is the primary user of this feature?"
Header: "User"
Options:
- End users: External users of the application
- Developers: Engineers working with the codebase
- Both: Needs to serve multiple user types
Step 4: Gather constraints
Use AskUserQuestion with multiSelect for constraints:
Question: "What constraints should I consider?"
Header: "Constraints"
multiSelect: true
Options:
- Performance-critical: Speed and efficiency are primary concerns
- Backwards compatible: Must not break existing functionality
- Security-sensitive: Requires security review and hardening
- External dependencies: Integrates with third-party services
Step 5: Context-specific questions
Continue with free-form questions one at a time:
Step 1: Identify 2-3 approaches
After understanding the idea, propose 2-3 different approaches:
Step 2: Get approach selection
Use the AskUserQuestion tool (do NOT output as plain text):
Question: "Which approach would you prefer?" Header: "Approach" Options:
Generate option labels and descriptions dynamically based on the approaches identified.
Step 1: Present design in sections
Once approach is selected, present the design:
Step 2: Validate each section
After each section, use AskUserQuestion:
Question: "Does this section of the design look right?"
Header: "Feedback"
Options:
- Looks good: This section is accurate, proceed to next
- Minor tweaks: Small changes needed, I will specify
- Needs rethinking: This approach has issues, let's discuss
If "Minor tweaks" or "Needs rethinking" selected, pause for their input.
Step 3: Handle feedback
Step 1: Documentation decision
Use the AskUserQuestion tool (do NOT output as plain text):
Question: "How should I proceed with documentation?" Header: "Docs" Options:
Step 2: Save design (if chosen)
docs/plans/YYYY-MM-DD-<topic>-design.mdStep 3: Implementation handoff
Use the AskUserQuestion tool (do NOT output as plain text):
Question: "Ready to proceed with implementation?" Header: "Next step" Options:
Step 4: Execute choice
Use free-form text instead when:
The "Other" option in AskUserQuestion always allows custom input, but some questions are better asked conversationally.
REQUIRED SUB-SKILLS (when continuing to implementation):
Pairs with: