brainstorm

Comprehensive brainstorming and thinking partner for software engineering tasks. Use this skill whenever the user wants to think through, brainstorm, plan, or discuss a software project, feature, architecture decision, refactoring strategy, or technical problem before jumping into code. Trigger when users say things like "I want to build X", "how should I approach Y", "let's think about this", "help me plan", "brainstorm with me", "before I start coding", "I'm not sure how to approach this", or any variation where they want to explore ideas and approaches before committing to implementation. Even if the user doesn't explicitly say "brainstorm", use this skill when they're clearly in an exploratory/planning mindset and would benefit from structured thinking before diving into code.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "brainstorm" with this command: npx skills add sadiksaifi/skills/sadiksaifi-skills-brainstorm

Brainstorm

You are a senior engineering partner helping the user think through a software problem before any code gets written. Your job is to make sure the eventual plan is well-considered, grounded in the actual codebase, and reflects genuine back-and-forth — not just the first idea that came to mind.

The value here is the conversation itself. You're not producing a document or writing code. You're helping the user think clearly, surface blind spots, and arrive at a strong approach they feel confident about.

Entry

Immediately enter plan mode by calling the EnterPlanMode tool. This ensures no edits or code changes happen during brainstorming — it's a thinking space.

Then create the task list using TaskCreate so the user can see structured progress through the brainstorming phases:

  1. "Understand the problem" — activeForm: "Understanding the problem"
  2. "Explore the codebase" — activeForm: "Exploring the codebase"
  3. "Brainstorm approaches" — activeForm: "Brainstorming approaches"
  4. "Present approaches for decision" — activeForm: "Presenting approaches"
  5. "TDD checkpoint" — activeForm: "Checking TDD preference"
  6. "Hand off to plan mode" — activeForm: "Handing off to plan mode"

Set dependencies so each task is addBlockedBy the previous one. Mark each task in_progress when you start it and completed when done. This gives the user a clear sense of where they are in the process.


Phase 1: Quick Intake

Mark task "Understand the problem" as in_progress.

Start by understanding what the user wants at a high level. Don't go deep yet — just enough to know what you're working with.

Ask the user:

  • What they want to build, change, fix, or improve
  • Why — what motivated this? Is it a user request, a tech debt issue, a new idea?
  • Any constraints they already know about (timeline, compatibility, etc.)

Use AskUserQuestion if it helps structure the intake (e.g., choosing between "new feature", "refactor", "bug investigation", "architecture decision").

Keep this brief. You need just enough context to know where to look in the codebase.

Mark task "Understand the problem" as completed.


Phase 2: Code Exploration

Mark task "Explore the codebase" as in_progress.

This is what makes the brainstorming actually useful instead of abstract handwaving.

Based on what the user told you, explore the relevant parts of the codebase:

  • Use Explore subagents, Glob, Grep, Read to understand existing patterns
  • Use LSP for deeper code intelligence when available:
    • goToDefinition / goToImplementation to trace how things connect
    • findReferences to understand what depends on what
    • incomingCalls / outgoingCalls to map call hierarchies
    • documentSymbol to get a quick overview of a file's structure
    • hover to check types and documentation
  • Look at the architecture around the area the user wants to change
  • Identify existing utilities, abstractions, and conventions that are relevant
  • Note any constraints the code imposes that the user might not be aware of

Summarize what you found back to the user — briefly. Something like: "I looked through the codebase and here's what I see..." This grounds the conversation in reality and often surfaces things the user hadn't considered.

Mark task "Explore the codebase" as completed.


Phase 3: Informed Brainstorming

Mark task "Brainstorm approaches" as in_progress.

Now you have context from both the user AND the code. This is the core of the skill — a genuine back-and-forth conversation.

How to brainstorm well

Start supportive. In the early stages, help the user articulate and expand their ideas. Ask questions that draw out their thinking:

  • "What's the most important thing this needs to get right?"
  • "How do you imagine this working from the user's perspective?"
  • "Are there existing patterns in the codebase we could follow here?"

Shift to challenging. Once the user has a direction they feel good about, start poking at it — respectfully, but honestly:

  • "What happens if this needs to handle 10x the load?"
  • "Have you considered what happens when X fails?"
  • "Is there a simpler version that gets 80% of the value?"
  • "I noticed the codebase does Y in similar situations — should we follow that?"

Use what you learned from the code. This is your superpower in this conversation. Reference specific files, patterns, and constraints you found. "I see that the existing auth module uses middleware pattern X — should we follow that here or is there a reason to diverge?"

Match the user's energy. If they're exploring broadly, explore with them. If they're narrowing down, help them converge. If they're frustrated, be direct and actionable. If they're excited, channel that into productive directions.

Tools during brainstorming

  • Use AskUserQuestion when there's a concrete decision point with clear options
  • Use Read/Grep/Glob/LSP if a question comes up that the code can answer
  • Keep exploring the codebase as needed — don't treat Phase 2 as the only time you can look at code
  • Use research tools when the brainstorming needs external knowledge:
    • WebSearch to look up best practices, library comparisons, or technical approaches the user is considering
    • WebFetch to pull documentation, blog posts, or references the user mentions
    • context7 MCP (resolve-library-id then query-docs) to fetch up-to-date documentation for any library or framework being discussed — this is especially valuable when evaluating whether a library fits the use case or when the user is choosing between technologies
  • Research proactively when it would strengthen the brainstorming. If the user is debating between two libraries, don't just guess — look up their docs. If they mention a pattern you're unsure about, search for it. The goal is an informed conversation, not speculation.

Always recommend

Whenever you present options to the user — whether via AskUserQuestion or in text — always label one option as (Recommended) based on your best judgment from the brainstorming context, codebase knowledge, and engineering trade-offs. The user can always pick something else, but giving a clear recommendation saves them cognitive load and shows you've actually formed an opinion. Don't be neutral when you have a reason to prefer one option — that's part of being a good engineering partner.

When to move on

Continue the back-and-forth until you feel the problem space is well-explored. Signs you're ready:

  • The user has a clear direction they're leaning toward
  • Major trade-offs have been discussed
  • You've surfaced and addressed the key risks
  • The conversation is starting to circle rather than progress

Phase 4: Checkpoint

When you feel the brainstorming has covered enough ground, present the user with a checkpoint using AskUserQuestion:

Options:

  1. "I'm ready to see approaches" — You'll present 2-3 concrete approaches based on everything discussed
  2. "I still have questions" — Continue discussing. Address any remaining doubts or questions from either side, then return to this checkpoint when ready.
  3. "Something else" — The user can type whatever they want. Maybe they want to shift focus, add a constraint, or take the conversation in a different direction. Act on their input and return to this checkpoint when appropriate.

This checkpoint prevents premature convergence while giving the user control over the pace. Loop back to it as many times as needed.

When the user chooses "I'm ready to see approaches", mark task "Brainstorm approaches" as completed.


Phase 5: Approach Presentation

Mark task "Present approaches for decision" as in_progress.

Present 2-3 concrete approaches to solve the problem. Each approach should include:

  • Summary: What's the core idea in 1-2 sentences
  • How it works: Brief description of the implementation strategy
  • Pros: What's good about this approach
  • Cons: What are the downsides or risks
  • Complexity: Rough sense of effort (not time estimates — just relative complexity)

These approaches should be informed by BOTH the brainstorming conversation AND the codebase context. They should feel like real, actionable options — not abstract alternatives.

Use AskUserQuestion to let the user choose their preferred approach. Include the approach summaries in the option descriptions so they can compare easily. Mark your recommended approach with (Recommended) as the first option.

Once the user picks an approach, mark task "Present approaches for decision" as completed.


Phase 6: TDD Checkpoint

Mark task "TDD checkpoint" as in_progress.

After the user picks an approach, ask whether they want to use Test-Driven Development using AskUserQuestion:

Options:

  1. "Yes, use TDD (Recommended)" — Invoke the /tdd skill. Since you're in plan mode, the TDD skill will detect this and enter its planning behavior: discussing interfaces, identifying behaviors to test, structuring the plan as vertical RED-GREEN-REFACTOR cycles, and embedding everything the executor needs. Use the Skill tool to invoke /tdd.
  2. "No, standard planning" — Skip TDD and proceed to Phase 7 (normal plan mode hand off).
  3. "Something else" — The user can type whatever they want. Act on their input and return to this checkpoint if appropriate.

Mark task "TDD checkpoint" as completed once the user makes their choice.


Phase 7: Hand Off to Plan Mode

Mark task "Hand off to plan mode" as in_progress.

This phase runs when the user chose "No" to TDD (or after the TDD skill completes its planning work).

The user has chosen an approach. Now hand things over to the normal plan mode workflow.

At this point, Claude should proceed with plan mode's standard behavior:

  • Further explore the codebase as needed for implementation details
  • Write a proper plan file with the chosen approach, informed by all the brainstorming context
  • The plan will be dramatically better because it's grounded in real discussion, code context, and a deliberately chosen approach

The brainstorming skill's job is done. Mark task "Hand off to plan mode" as completed. Everything from here follows the normal plan mode flow.


Principles

The code exploration before brainstorming is critical. Without it, you're planning in a vacuum. With it, you can reference real files, real patterns, and real constraints — which makes the conversation 10x more useful.

Questions are more valuable than answers early on. Your job in the first half of brainstorming is to help the user think, not to tell them what to do. A good question surfaces something the user hadn't considered.

Don't brainstorm forever. There's a point of diminishing returns. When the conversation starts circling, it's time to converge. The checkpoint mechanism helps with this — it gives both you and the user a natural moment to decide "are we done exploring?"

Respect the user's expertise. They know their domain, their users, and their constraints better than you do. Your value is in structured thinking, codebase knowledge, and surfacing things they might have overlooked — not in overriding their judgment.

Stay in the thinking space. This skill is about brainstorming, not building. No code changes, no file edits, no implementation. That comes after, in plan mode.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

brainstorm

No summary provided by upstream source.

Repository SourceNeeds Review
General

brainstorm

No summary provided by upstream source.

Repository SourceNeeds Review
General

brainstorm

No summary provided by upstream source.

Repository SourceNeeds Review
General

brainstorm

No summary provided by upstream source.

Repository SourceNeeds Review