--- name: brainstorm user-invocable: true description: Explores requirements and approaches through collaborative dialogue before planning implementation. when_to_use: Use when user says "brainstorm", "explore idea", "what should we build", "think through this", or "let's discuss approaches". argument-hint: feature or idea to explore compatibility: Designed for Claude Code (or similar products with agent support) --- # Brainstorm a feature or improvement Clarify **WHAT** to build before diving into **HOW** to build it. Explore user intent, approaches, and design decisions through collaborative dialogue. ## Feature description $ARGUMENTS **If the feature description above is empty, ask the user**: "What feature would you like to brainstorm? Describe the idea, problem or feature you are thinking about." DO NOT proceed until you have a description from the user. ## Execution flow ### 0. Assess scope and workspace Determine whether this is a **new project** or a **feature for the current project**. | Signal | Conclusion | |--------|------------| | User says "new app", "new project", "build from scratch"; no relevant code in working directory | New project | | User references existing code/screens; idea extends current functionality | Feature for current project → skip to Step 0.1 | **If new project**, use **AskUserQuestion**: "This sounds like a new project. Where would you like to work?" 1. **Create project first (Recommended)** — output instructions to run `/create`, open the new folder, then `/brainstorm ` in that workspace. Then stop. 2. **Continue here** — proceed to Step 0.1 ### 0.1. Assess clarity of requirements Assess whether brainstorming is needed. | Requirements are clear | Brainstorming is needed | |------------------------|------------------------| | Specific acceptance criteria provided | Vague terms ("make it better", "add something like") | | Exact behavior described, scope constrained | Multiple reasonable interpretations, trade-offs undiscussed | **If clear:** Use **AskUserQuestion** to suggest proceeding directly to planning. ### 1. Understand the idea #### 1.1. Lightweight project research Run a quick project review to understand existing patterns: - Task @codebase-review-agent("Understand existing patterns related to: ") Focus on: similar features, established patterns, CLAUDE.md guidance. #### 1.2. Collaborative conversation Use the **AskUserQuestion tool** to ask questions one at a time. The tool automatically provides an "Other" option for free-text input — never add your own catch-all option (e.g., "Something else", "None of the above"). **Question Techniques:** Prefer multiple choice over open-ended. Start broad (purpose, users) then narrow (constraints, edge cases). Validate assumptions explicitly. Ask about success criteria early. **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." #### 1.3. Explore approaches Propose **2-3 concrete approaches** with trade-offs. Lead with your recommendation and explain why. **Guidelines:** - **YAGNI ruthlessly.** If an approach adds complexity for a hypothetical future need, call it out and lean toward the simpler option. The question is always: "Do we need this now, or are we guessing?" - **Prefer boring patterns.** If the codebase already solves a similar problem, default to that pattern. Consistency beats cleverness. - **Right-size the architecture.** Not every feature needs its own package. Not every screen needs a new state management controller. Match the solution to the actual complexity. **Structure for Each Approach:** ```markdown **[Approach Name]** <- [Is it recommended? Yes/No] [2-3 sentence description of what this looks like in practice] - Pros: [what's good] - Cons: [what's not] - Best when: [the circumstances where this wins] ``` Use **AskUserQuestion tool** to ask which approach the user prefers. #### 1.4. Set up workspace Before writing any files, ensure the session is not on the base branch: - Run `git rev-parse --abbrev-ref HEAD`. If the current branch is a base branch (`main`, `master`, or `develop`), use **AskUserQuestion** to offer creating a feature branch — `git checkout -b /`, name under 60 characters — before writing. If already on a feature branch, continue without prompting. ### 2. Capture the design document Write a brainstorm document to `docs/brainstorm/YYYY-MM-DD--brainstorm-doc.md`. Ensure `docs/brainstorm/` directory exists before writing. Use the [brainstorm template](references/template.md) as the document structure. ### 3. Handoff Use **AskUserQuestion tool** to consider next steps: **Question**: "Brainstorm complete! What would you like to do next?" **Options:** 1. **Clear context and plan (Recommended)**: clear context for a fresh start, then plan 2. **Continue with planning**: run the `/plan` skill to create a detailed implementation plan 3. **Review and refine approach:** improve the document using structured review 4. **Done for now**: brainstorm complete. To start planning later: `/plan` **If the user selects "Clear context and plan"** → Follow the [clear context handoff](references/clear-context-handoff.md) for `/plan` with the actual brainstorm doc path. Then stop. **If the user selects "Review and refine approach"** then apply the @refine-approach skill to the document. When `refine-approach` is complete, present these options: 1. **Clear context and plan (Recommended)**: clear context for a fresh start, then plan 2. **Move to planning**: run the `/plan` skill to create a detailed implementation plan 3. **Done for now**: ideation complete. To start planning later: `/plan` **If the user selects "Clear context and plan"** → Follow the [clear context handoff](references/clear-context-handoff.md) for `/plan` with the actual brainstorm doc path. Then stop. ## Output Summary When complete, display: ```md Brainstorm complete! Document: docs/brainstorm/YYYY-MM-DD--brainstorm-doc.md Key decisions: - [Decision 1] - [Decision 2] ``` ## Key Principles - **One question at a time** - Don't overwhelm with multiple questions - **Multiple choice preferred** - Easier to answer than open-ended when possible - **YAGNI ruthlessly** - Remove unnecessary features from all designs - **Explore alternatives** - Always propose 2-3 approaches before settling - **Incremental validation** - Present design in sections, validate each - **Be flexible** - Go back and clarify when something doesn't make sense ## Important Guidelines **DO NOT CODE!** Just explore and document decisions.