--- name: brainstorming description: Use when exploring unclear requirements or architectural decisions - refines rough ideas into clear requirements/designs through collaborative questioning (one at a time), explores alternatives, validates incrementally. Activates when user has vague feature idea, mentions "not sure about", "exploring options", "what approach", or during spec-driven requirements/design phases. allowed-tools: Read, Write, Glob, Grep --- # Brainstorming Ideas Into Designs ## Overview 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. ## When to Activate Activate this skill when: - User has a rough idea that needs refinement - User is uncertain about scope or approach - User says "I'm not sure what we need" or "I'm not sure how to approach this" - During Phase 2 (Requirements) to explore WHAT to build - During Phase 3 (Technical Design) to explore HOW to build it **Phase 2 Focus (Requirements):** - Clarifying what the feature should do - Exploring different requirement scopes - Understanding user needs and constraints - Determining must-haves vs. nice-to-haves **Phase 3 Focus (Design):** - Exploring architectural approaches - Comparing technical solutions - Analyzing implementation trade-offs ## The Process **Understanding the idea:** - Check out the current project state first (files, docs, recent commits) - Ask questions one at a time to refine the idea - Prefer multiple choice questions when possible, but open-ended is fine too - Only one question per message - if a topic needs more exploration, break it into multiple questions - Focus on understanding: purpose, constraints, success criteria **When to UltraThink:** Before proposing architectural approaches, activate deep thinking if: - Multiple valid solutions exist with significant trade-offs - Decision has long-term architectural implications - Requirements involve complex system interactions - Security or performance are critical concerns > 🗣 Say: "Let me ultrathink this before proposing approaches. I'll question fundamentals and consider implications from first principles." **During UltraThink:** - Question assumptions about requirements - Consider second-order effects of each approach - Think about what could go wrong (pre-mortem) - Evaluate against similar systems you've seen - Consider future maintainability and evolution **After UltraThink:** Provide approaches with clear reasoning about trade-offs and long-term implications. **Exploring approaches:** - Propose 2-3 different approaches with trade-offs - Present options conversationally with your recommendation and reasoning - Lead with your recommended option and explain why - Consider: - Complexity (Low/Medium/High) - Maintainability - Performance implications - Security considerations - Testability **Presenting the design:** - Once you believe you understand what you're building, present the design - Break it into sections of 200-300 words - Ask after each section whether it looks right so far - Cover: architecture, components, data flow, error handling, testing - Be ready to go back and clarify if something doesn't make sense ## After Brainstorming **For Requirements (Phase 2):** - Write validated requirements to `docx/features/[NN-feature-name]/requirements.md` - Use EARS format (Event-Driven, State-Driven, Ubiquitous, Conditional, Optional) - Include: - Overview - Functional requirements - Non-functional requirements (performance, security, usability) - Constraints - Acceptance criteria - Out of scope items - Ask: "Requirements complete. Ready for design phase?" **For Design (Phase 3):** - Write the validated design to `docx/features/[NN-feature-name]/design.md` - Include: - Architecture Overview - Component Structure - Data Flow - API Contracts - Error Handling Strategy - Security Considerations - Performance Considerations - Testing Strategy - Ask: "Design complete. Ready for task breakdown?" **Transition:** - After requirements → Proceed to Phase 3 (Technical Design) - After design → Transition to `spec-driven-implementation` skill for task breakdown ## 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 - **Think about testing** - Good designs are testable designs - **Consider security** - Build security in, don't bolt it on later ## Example Questioning Flow **Understanding Purpose:** ``` Q: "What's the primary goal of this authentication feature?" → User answers Q: "Should it support multiple auth methods (email/password, OAuth, etc.) or just one method initially?" → User answers Q: "What happens when a session expires - force re-login or offer refresh?" → User answers ``` **Exploring Approaches:** ``` Based on your requirements, I see 3 main approaches: **Option A: JWT-Based Authentication** [RECOMMENDED] Pros: Stateless, scalable, works across services, standard Cons: Token invalidation complexity, larger payload Complexity: Medium Best for: Microservices, APIs, future scalability **Option B: Session-Based Authentication** Pros: Simple invalidation, smaller cookies, familiar Cons: Requires session storage, scaling challenges Complexity: Low Best for: Monolithic apps, simple use cases **Option C: Hybrid Approach** Pros: Combines benefits of both Cons: More complex, harder to maintain Complexity: High Best for: Complex enterprise requirements I recommend Option A (JWT) because your requirements mention potential API integrations and future mobile app support. JWT is industry-standard for this use case. Does this align with your thinking? ``` **Presenting Design Incrementally:** ``` Let me present the architecture in sections: **Section 1: High-Level Flow** [200-300 words describing auth flow] Does this look right so far? → User validates or requests changes **Section 2: Component Structure** [200-300 words describing components] How does this look? → Continue... ``` ## Integration with Spec-Driven Workflow This skill can be used in two phases: **Phase 2 (Requirements):** - Use when user has rough idea but unclear requirements - Helps clarify what to build vs. what's out of scope - Explores different feature scopes and priorities - Outputs to `requirements.md` in EARS format **Phase 3 (Technical Design):** - Use after requirements are defined - Helps explore how to build the feature - Compares architectural approaches with trade-offs - Outputs to `design.md` with complete technical specs After brainstorming completes: - Phase 2 → Proceed to Phase 3 (Technical Design) - Phase 3 → Transition to `spec-driven-implementation` for task breakdown ## Notes - **Phase 2:** Focus on "what" (what should system do? what's in/out of scope?) - **Phase 3:** Focus on "how" (how should we build it? what are trade-offs?) - Always present multiple options before recommending - Validate incrementally - don't dump everything at once - Be ready to backtrack if something doesn't make sense - One question at a time - let user think and respond - Good requirements lead to good designs - Good designs enable good tests - think about testability - Security and error handling are not afterthoughts