Brainstorming
When This Skill Activates
- •User asks to "build", "create", "implement", "add", or "make" something
- •User describes a feature, system, or component they want
- •User says "let's work on..." or "I need..."
- •ANY request that will result in new code being written
CRITICAL: Do NOT Skip This
If you are about to write code without having gone through brainstorming first, STOP. This skill is mandatory for any non-trivial feature.
Process
Step 1: Understand the Request
Ask targeted questions to uncover:
- •What problem is the user actually solving?
- •Who is the end user?
- •What does success look like?
- •Are there existing patterns in the codebase to follow?
Present no more than 3 questions at a time. Don't overwhelm.
Step 2: Explore Alternatives
Before committing to an approach:
- •Identify at least 2 different ways to solve the problem
- •Briefly describe trade-offs of each
- •Recommend one with reasoning
- •Let the user choose
Step 3: Draft the Spec
Use the spec-writer subagent via Task tool:
code
Task tool → subagent_type: spec-writer
Provide it with the brainstorm summary and repo path.
Step 4: Present for Approval
Show the spec to the user in digestible chunks:
- •Summary first (1-2 sentences)
- •Architecture overview
- •Component details one at a time
- •Acceptance criteria
- •Non-goals
Ask for explicit approval: "Does this spec capture what you want? Any changes?"
Step 5: Save the Spec
Save the approved spec to .factory/docs/specs/[feature-name].md for reference by downstream skills.
Output
An approved specification document ready for the writing-plans skill.