brainstorming
Use when creating or developing, before writing code or implementation plans - refines rough ideas into fully-formed designs through collaborative questioning, alternative exploration, and incremental validation. Don't use during clear 'mechanical' processes
What this skill does
# 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. **Announce at start:** "I'm using the brainstorming skill to refine this idea into a design." ## Progress Tracking Create TodoWrite todos for each phase: - Understanding: Clarify the problem space - Exploring: Investigate alternative approaches - Presenting: Document proposed design - Handoff: Transition to implementation Mark each phase as `in_progress` when starting, `completed` when done. This makes progress visible and prevents skipping phases. ## Using AskUserQuestion Use the AskUserQuestion tool for structured decision points: - Scope and constraint gathering - Approach selection (after presenting options) - Design section validation - Documentation and implementation handoff Keep free-form conversation for: - Context-specific clarifications - Deep-dive questions unique to this idea - Exploring edge cases and nuances **Principle:** Structured questions for decisions, conversational for discovery. ## The Process ### Phase 1: Understanding the Idea **Step 1: Check project context** - Read relevant files, docs, recent commits - Understand what exists before proposing what to build **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: - Purpose: What problem does this solve? - Success criteria: How will we know it works? - Any unique constraints or requirements ### Phase 2: Exploring Approaches **Step 1: Identify 2-3 approaches** After understanding the idea, propose 2-3 different approaches: - Describe each briefly with trade-offs - Lead with your recommendation and explain why - Keep descriptions concise (2-3 sentences each) **Step 2: Get approach selection** **Use the AskUserQuestion tool** (do NOT output as plain text): Question: "Which approach would you prefer?" Header: "Approach" Options: - [Approach A name] (recommended): [Brief description of why this is recommended] - [Approach B name]: [Brief description and trade-off] - [Approach C name]: [Brief description and trade-off] multiSelect: false Generate option labels and descriptions dynamically based on the approaches identified. ### Phase 3: Presenting the Design **Step 1: Present design in sections** Once approach is selected, present the design: - Break into sections of 200-300 words - Cover: architecture, components, data flow, error handling, testing - One section at a time **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** - **Looks good:** Proceed to next section - **Minor tweaks:** Wait for their specification, apply changes, re-validate section - **Needs rethinking:** Discuss issues, potentially return to Phase 2 ### Phase 4: After the Design **Step 1: Documentation decision** **Use the AskUserQuestion tool** (do NOT output as plain text): Question: "How should I proceed with documentation?" Header: "Docs" Options: - Save and commit: Write design doc and commit to git - Save only: Write design doc without committing - Skip docs: Proceed without saving design document multiSelect: false **Step 2: Save design (if chosen)** - Write to `docs/plans/YYYY-MM-DD-<topic>-design.md` - Use elements-of-style:writing-clearly-and-concisely skill if available - Commit if "Save and commit" was selected **Step 3: Implementation handoff** **Use the AskUserQuestion tool** (do NOT output as plain text): Question: "Ready to proceed with implementation?" Header: "Next step" Options: - Set up worktree: Create isolated workspace and write implementation plan - Just the plan: Write implementation plan in current workspace - Stop here: I will handle implementation separately multiSelect: false **Step 4: Execute choice** - **Set up worktree:** Use workflow:git-worktrees, then workflow:writing-plans - **Just the plan:** Use workflow:writing-plans directly - **Stop here:** Report completion, offer to continue later ## Key Principles - **Structured for decisions, conversational for discovery** - AskUserQuestion for clear choices, free-form for exploration - **One question at a time** - Don't overwhelm with multiple questions - **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 ## When to Skip AskUserQuestion Use free-form text instead when: - The question is highly context-specific - Options would be artificial or unclear - You need open-ended exploration - The user has already indicated a preference conversationally The "Other" option in AskUserQuestion always allows custom input, but some questions are better asked conversationally. ## Integration **REQUIRED SUB-SKILLS (when continuing to implementation):** - **workflow:git-worktrees** - If "Set up worktree" selected - **workflow:writing-plans** - For creating implementation plan **Pairs with:** - **elements-of-style:writing-clearly-and-concisely** - For design documentation
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.