plugins/compound-engineering/skills/brainstorming/SKILL.md
This skill should be used before implementing features, building components, or making changes. It guides exploring user intent, approaches, and design decisions before planning. Triggers on "let's brainstorm", "help me think through", "what should we build", "explore approaches", ambiguous feature requests, or when the user's request has multiple valid interpretations that need clarification.
npx skillsauth add the-rabak/compound-engineering-plugin brainstormingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides detailed process knowledge for effective brainstorming sessions that establish WHY we're building something, clarify WHAT to build, and map WHERE it lives in the system -- before diving into HOW to build it.
The brainstorm produces three lynchpin artifacts that anchor all downstream phases:
Brainstorming is valuable when:
Brainstorming can be skipped when:
Before diving into questions, assess whether brainstorming is needed.
Signals that requirements are clear:
Signals that brainstorming is needed:
If requirements are clear, suggest: "Your requirements seem clear. Consider proceeding directly to planning or implementation."
Ask questions one at a time to understand the user's problem space and the people affected. The goal is not just to understand WHAT they want but WHY they need it.
Question Techniques:
Start with the problem, not the solution
Prefer multiple choice when natural options exist
Probe for stakes and impact
Validate assumptions explicitly
Ask about success criteria early and tie them to outcomes
Key Topics to Explore:
| Topic | Example Questions | Purpose | |-------|-------------------|---------| | Problem | What pain exists? What triggers it? What's the workaround? | Establishes the WHY | | People | Who experiences this? What's their context and skill level? | Defines the persona | | Stakes | What's the cost of not solving this? What's the business impact? | Validates priority | | Success | How will users know it's working? What outcome matters? | Defines done | | Boundaries | What's explicitly out of scope? What adjacent problems exist? | Prevents scope creep | | Constraints | Technical limitations? Timeline? Dependencies? Compliance? | Grounds the approach | | Existing Patterns | Are there similar features in the codebase to follow? | Informs architecture |
Exit Condition: Continue until you can articulate the problem, the people, and the desired outcome clearly -- OR user says "proceed" or "let's move on."
This is the critical synthesis step. After the Q&A, the orchestrator constructs two artifacts from everything learned.
Problem Narrative (2-4 sentences): Clearly state: who has the problem, what triggers it, what the impact is, and why now is the right time to solve it. This is the WHY that every downstream phase traces back to.
Example: "Support agents currently spend 20+ minutes per ticket manually cross-referencing customer data across three systems. This leads to longer resolution times and frequent errors in billing adjustments. The upcoming Q3 volume spike will make this unsustainable."
User Story (structured format):
As a [persona with relevant context],
I need to [action/capability]
so that [desired outcome/value],
because currently [pain point or gap]
which causes [concrete negative impact].
Example:
As a support agent handling billing disputes,
I need to see all customer data consolidated in one view
so that I can resolve tickets in under 5 minutes,
because currently I have to switch between three systems
which causes 20+ minute resolution times and frequent billing errors.
Validation: Present both artifacts to the user and ask for confirmation. This is the most important step. If the problem narrative and user story are wrong, everything downstream will be misaligned.
After understanding the problem, propose 2-3 concrete approaches.
Critically: evaluate each approach against the problem narrative and user story.
Structure for Each Approach:
### Approach A: [Name]
[2-3 sentence description]
**How it addresses the user story:**
[Direct connection to the problem and desired outcome]
**Pros:**
- [Benefit 1]
- [Benefit 2]
**Cons:**
- [Drawback 1]
- [Drawback 2]
**Best when:** [Circumstances where this approach shines]
**Risk:** [What could go wrong, specific to the user's context]
Guidelines:
After the approach is chosen, construct a lightweight architectural context map. This is NOT implementation design (no file paths, no class names, no code). This is structural understanding.
What to map:
| Aspect | Question | Example | |--------|----------|---------| | System Placement | Where does this feature live? | "New endpoint in the Billing API service" | | Boundary Interactions | What does it talk to? | "Reads from CustomerDB, calls Payment Gateway, emits events to Notification service" | | User Touchpoints | How do users interact with it? | "Support agents access via the admin dashboard" | | Data Considerations | What data does it create/read/update? | "Creates consolidated views from three data sources, caches in Redis" | | Dependency Direction | What depends on what? | "Depends on Customer service and Payment service; Notification service will consume its events" |
Output: A concise prose description (5-10 sentences). Think of it as explaining to a new team member where this feature sits and what it touches. Avoid code-level details.
Present to the user for validation. This context map flows into:
{{ARCHITECTURAL_CONTEXT}} block in /workflows:work/workflows:plan/workflows:reviewSummarize everything in a structured brainstorm document.
Document Template:
---
date: YYYY-MM-DD
topic: <kebab-case-topic>
status: complete
handoff:
problem_narrative: true
user_story: true
architectural_context: true
success_criteria: true
---
# <Topic Title>
## Problem Narrative
[2-4 sentences: who has the problem, what triggers it, what the impact is, why now.]
## User Story
As a [persona],
I need to [action]
so that [outcome],
because currently [pain point]
which causes [impact].
## Success Criteria
- [Measurable outcome tied to the user story]
- [Observable behavior that proves the problem is solved]
## Architectural Context
- **Lives in:** [service/module/layer]
- **Interacts with:** [neighboring systems]
- **User entry point:** [UI/API/CLI/event]
- **Data:** [what data flows, where it lives]
- **Dependencies:** [depends on X; Y may depend on this]
## Chosen Approach
[What we're building and WHY this approach -- tied to the problem narrative]
## Key Decisions
- [Decision 1]: [Rationale tied to problem/user story]
- [Decision 2]: [Rationale tied to problem/user story]
## Approaches Considered
[Alternatives and why they were not chosen, relative to the user story]
## Stakeholder Impact
- **End users:** [experience change]
- **Developers:** [codebase/maintenance impact]
- **Operations:** [deployment/monitoring impact]
- **Business:** [revenue/cost/compliance impact]
## Open Questions
- [Unresolved questions for the planning phase]
## Resolved Questions
- [Questions resolved during brainstorming, with answers]
## Next Steps
-> `/workflows:plan` for implementation details
Output Location: docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md
Handoff Contract: The handoff frontmatter fields signal to downstream phases which lynchpin sections are present. All four should be true before handing off to /workflows:plan.
Present clear options for what to do next:
/workflows:plan (will auto-detect and consume this brainstorm's lynchpin artifacts)During brainstorming, YAGNI applies to building scope, not understanding scope:
Keep sections short -- 200-300 words maximum. After each section of output, pause to validate understanding:
This prevents wasted effort on misaligned designs.
| Anti-Pattern | Better Approach | |--------------|-----------------| | Asking 5 questions at once | Ask one at a time | | Jumping to solutions before understanding the problem | Establish WHY before exploring WHAT | | Evaluating approaches in a vacuum | Evaluate against the user story | | 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 | | Skipping architectural context | Map where it lives before handing to plan | | Treating the doc as disposable prose | It's a contract consumed by downstream phases |
The brainstorm document is the feature-level spec and handoff contract for downstream work. The project constitution, when present, remains the repo-wide governing artifact:
/workflows:plan consumes:
/deepen-plan consumes:
/workflows:work consumes:
{{ARCHITECTURAL_CONTEXT}} for every execution agent/workflows:review consumes:
tools
Package one plan execution packet into a compact ticket-local execution packet with parent refs, scope fences, feature-home ownership, and evidence commands. Use when converting plans into local tickets or when execution needs one ticket-sized context pack without the full plan.
tools
Package one plan execution packet into a compact ticket-local execution packet with parent refs, scope fences, feature-home ownership, and evidence commands. Use when converting plans into local tickets or when execution needs one ticket-sized context pack without the full plan.
testing
Run a deep adversarial review of plans and architecture before implementation. Use when validating strategy docs, contracts, roadmaps, and competitive positioning with scored findings and prioritized recommendations.
testing
Run a deep adversarial review of plans and architecture before implementation. Use when validating strategy docs, contracts, roadmaps, and competitive positioning with scored findings and prioritized recommendations.