brainstorm-techniques · git:20260704.7e5fb72 · 2026-07-04 · sha256 69626dc1340cc44d
brainstorm-techniques git:20260704.7e5fb72A
Immutable. This exact content is served forever at /api/v1/blob/69626dc1340cc44d.
---
name: brainstorm-techniques
description: "This skill should be used before implementing features or making changes. It guides exploring user intent, approaches, and design decisions when a request has multiple valid interpretations or ambiguous requirements needing clarification."
---
# Brainstorming
This skill provides detailed process knowledge for effective brainstorming sessions that clarify **WHAT** to build before diving into **HOW** to build it.
## When to Use This Skill
Brainstorming is valuable when:
- Requirements are unclear or ambiguous
- Multiple approaches could solve the problem
- Trade-offs need to be explored with the user
- The user hasn't fully articulated what they want
- The feature scope needs refinement
- A complex problem needs deep analysis before any solution is proposed (use Problem Analysis Mode below)
Brainstorming can be skipped when:
- Requirements are explicit and detailed
- The user knows exactly what they want
- The task is a straightforward bug fix or well-defined change
## Core Process
### Phase 0: Assess Requirement Clarity
Before diving into questions, assess whether brainstorming is needed.
**Signals that requirements are clear:**
- User provided specific acceptance criteria
- User referenced existing patterns to follow
- User described exact behavior expected
- Scope is constrained and well-defined
**Signals that brainstorming is needed:**
- User used vague terms ("make it better", "add something like")
- Multiple reasonable interpretations exist
- Trade-offs haven't been discussed
- User seems unsure about the approach
If requirements are clear, suggest: "Your requirements seem clear. Consider proceeding directly to planning or implementation."
### Phase 1: Understand the Idea
Ask questions **one at a time** to understand the user's intent. Avoid overwhelming with multiple questions.
**Question Techniques:**
1. **Prefer multiple choice when natural options exist**
- Good: "Should the notification be: (a) email only, (b) in-app only, or (c) both?"
- Avoid: "How should users be notified?"
2. **Start broad, then narrow**
- First: What is the core purpose?
- Then: Who are the users?
- Finally: What constraints exist?
3. **Validate assumptions explicitly**
- "I'm assuming users will be logged in. Is that correct?"
4. **Ask about success criteria early**
- "How will you know this feature is working well?"
5. **Be curious, not prescriptive**
Follow the user's energy -- if they light up about an aspect, explore it
deeper. If they seem decided, don't interrogate. The goal is collaborative
exploration, not an interview. Classify each candidate question via
[decision-principles.md](./references/decision-principles.md) before asking —
only user-legible Taste and User-Challenge decisions surface; Mechanical and
technical-taste calls are auto-answered.
Old (prescriptive):
> "For authentication, you should use JWT tokens with refresh tokens
> stored in httpOnly cookies."
New (curious):
> "What security constraints are you working with? Have you weighed
> session-based vs token-based auth for your use case?"
6. **Challenge assumptions honestly**
If the user's idea has a flaw or an unexplored risk, say so directly.
Don't fold your argument just because the user pushes back -- explain
your reasoning and let them decide. A brainstorm that only validates
is a wasted brainstorm.
**Key Topics to Explore:**
| Topic | Example Questions |
|-------|-------------------|
| Purpose | What problem does this solve? What's the motivation? |
| Users | Who uses this? What's their context? |
| Constraints | Any technical limitations? Timeline? Dependencies? |
| Success | How will you measure success? What's the happy path? |
| Edge Cases | What shouldn't happen? Any error states to consider? |
| Existing Patterns | Are there similar features in the codebase to follow? |
**Exit Condition:** Continue until the idea is clear OR user says "proceed" or "let's move on"
### Phase 2: Explore Approaches
After understanding the idea, propose 2-3 concrete approaches.
**Structure for Each Approach:**
```markdown
### Approach A: [Name]
[2-3 sentence description]
**Pros:**
- [Benefit 1]
- [Benefit 2]
**Cons:**
- [Drawback 1]
- [Drawback 2]
**Best when:** [Circumstances where this approach shines]
```
**Guidelines:**
- Lead with a recommendation and explain why
- Be honest about trade-offs
- Consider YAGNI—simpler is usually better
- Reference codebase patterns when relevant
### Phase 3: Capture the Design
Summarize key decisions in a structured format.
**Design Doc Structure:**
```markdown
---
date: YYYY-MM-DD
topic: <kebab-case-topic>
---
# <Topic Title>
## What We're Building
[Concise description—1-2 paragraphs max]
## Why This Approach
[Brief explanation of approaches considered and why this one was chosen]
## Key Decisions
- [Decision 1]: [Rationale]
- [Decision 2]: [Rationale]
## Open Questions
- [Any unresolved questions for the planning phase]
## Next Steps
→ Use `skill: soleur:plan` for implementation details
```
**Output Location:** `knowledge-base/project/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md`
### Phase 4: Handoff
Present clear options for what to do next:
1. **Proceed to planning** → Use `skill: soleur:plan`
2. **Refine further** → Continue exploring the design
3. **Done for now** → User will return later
## YAGNI Principles
During brainstorming, actively resist complexity:
- **Don't design for hypothetical future requirements**
- **Choose the simplest approach that solves the stated problem**
- **Prefer boring, proven patterns over clever solutions**
- **Ask "Do we really need this?" when complexity emerges**
- **Defer decisions that don't need to be made now**
## Incremental Validation
Keep sections short—200-300 words maximum. After each section of output, pause to validate understanding:
- "Does this match what you had in mind?"
- "Any adjustments before we continue?"
- "Is this the direction you want to go?"
This prevents wasted effort on misaligned designs.
## Problem Analysis Mode
When the request is "analyze this problem" rather than "brainstorm approaches," skip Phase 2 (Explore Approaches) and focus entirely on Phase 1 with deeper problem decomposition: stakeholders, pain points, constraints, risks, and success criteria. Output a `problem-analysis.md` instead of a brainstorm doc. Do not suggest implementation solutions -- focus on WHAT and WHY, not HOW.
## Anti-Patterns to Avoid
| Anti-Pattern | Better Approach |
|--------------|-----------------|
| Asking 5 questions at once | Ask one at a time |
| Jumping to implementation details | Stay focused on WHAT, not HOW |
| Proposing overly complex solutions | Start simple, add complexity only if needed |
| Ignoring existing codebase patterns | Research what exists first |
| Making assumptions without validating | State assumptions explicitly and confirm |
| Creating lengthy design documents | Keep it concise—details go in the plan |
| Forcing scripted questions when user leads elsewhere | Follow the user's thread, return to structure later |
## Integration with Planning
Brainstorming answers **WHAT** to build:
- Requirements and acceptance criteria
- Chosen approach and rationale
- Key decisions and trade-offs
Planning answers **HOW** to build it:
- Implementation steps and file changes
- Technical details and code patterns
- Testing strategy and verification
When brainstorm output exists, the plan skill should detect it and use it as input, skipping its own idea refinement phase.