Brainstorming
Use this skill to make option generation explicit before choosing a path. The
goal is better engineering judgment, not more ceremony.
When to use
Load this skill when the task has meaningful uncertainty or more than one
plausible path:
- ambiguous product or engineering requirements;
- architecture, domain modeling, API design, migration, refactor, or testing
strategy decisions;
- debugging choices after systematic reproduction has produced credible
hypotheses or solution paths to compare;
- planning that benefits from divergent thinking before convergence;
- decisions where maintainability, domain alignment, testability, simplicity,
performance, security, operability, or migration cost may point in different
directions.
When not to use
Skip brainstorming when it would add ceremony without changing the outcome:
- simple, mechanical, formatting-only, generated, or already-specified tasks;
- tasks with an obvious single correct implementation;
- small fixes where reading the code and making the narrow change is enough;
- situations where the next honest step is direct repository inspection,
reproduction, tests, or validation rather than ideation.
Route active unexplained symptoms to
systematic-debugging before brainstorming.
Use brainstorming only after reproduction establishes evidence sufficient to
compare hypotheses or solution paths.
Workflow
- Frame the problem. Restate the goal, constraints, known facts, and desired
outcome in repository or domain language.
- Separate evidence. List facts, assumptions, unknowns, and risks. Do not
invent requirements or facts that are not grounded in the prompt, issue,
repository docs, code, tests, or observed behavior.
- Generate options. Produce at least two credible candidate approaches
before selecting one. Include a conservative option when appropriate.
- Compare tradeoffs. Evaluate maintainability, domain alignment,
testability, simplicity, performance, security, operability, migration cost,
reversibility, and fit with existing boundaries or coverage.
- Converge. Recommend one path, explain why it is better than the credible
alternatives, and name any rejected option that remains tempting.
- Plan validation. Identify evidence that would validate or invalidate the
recommendation: code to inspect, tests to add or run, docs to check, metrics,
failure reproduction, or review gates.
- Transition. Turn the recommendation into an actionable next step, a small
implementation sequence, or a handoff to the appropriate implementation,
methodology, debugging, or review skill.
Output shape
Keep results concise enough for downstream implementation. Use this structure by
default and omit non-useful subsections:
Problem framing
- Goal:
- Known facts:
- Constraints:
Assumptions, unknowns, and risks
- Assumptions:
- Unknowns:
- Risks:
Candidate options
1. Option A — ...
2. Option B — ...
3. Option C — ...
Tradeoff analysis
- Maintainability:
- Domain alignment:
- Testability:
- Simplicity:
- Performance/security/operability/migration cost:
Recommended approach
- Choose:
- Why:
- Rejected alternatives:
Validation plan
- Evidence to gather:
- Checks/tests/reviews:
Open questions
- Blocking only:
Practice integration
- BDD: Use brainstorming to clarify behavior options and acceptance examples,
not to replace executable scenarios or tests. If the outcome needs durable
behavior contracts, load
behavior-driven-development or gherkin next.
- DDD: Prefer existing domain language, boundaries, invariants, and policies
when comparing options. Load
domain-driven-design when the model itself needs
focused design.
- Hexagonal Architecture: When options differ by dependency direction,
ports/adapters, use cases, or infrastructure isolation, load
hexagonal-architecture after choosing whether the extra indirection is worth
its cost.
- Clean Architecture: When options differ by use cases, interactors,
presenters, interface adapters, or concentric policy/detail boundaries, load
clean-architecture after deciding those responsibilities matter.
- Onion Architecture: When options differ by domain/application rings around
a protected domain model, load
onion-architecture after confirming the domain
behavior justifies the layers.
- TDD: Use the validation plan to decide the first failing test or regression
check. Load
test-driven-development when implementation should proceed by
Red-Green-Refactor.
Behavior examples
Scenario: Ambiguous API design benefits from brainstorming
Given an agent sees two viable route or data-shape designs
When the tradeoffs affect domain boundaries, tests, or migration cost
Then the agent compares options before recommending an implementation path
Scenario: A narrow mechanical fix skips brainstorming
Given the user asks for a clearly specified typo, formatting, or one-line bug fix
When code inspection shows the implementation path is obvious
Then the agent makes and verifies the narrow change without brainstorming ceremony
Anti-patterns
- Generating only one option and calling it brainstorming.
- Treating brainstorming as a substitute for reading code, docs, tests, or error
output.
- Producing vague ideas with no implementation implications.
- Overweighting quick wins when long-term maintainability, security, or domain
alignment matters.
- Ignoring existing boundaries, invariants, test coverage, or validation lanes.
- Using brainstorming to avoid making a justified recommendation.
1---2name: brainstorming3description: Structured ideation for ambiguous software engineering work. Use when agents need to generate multiple options, compare tradeoffs, or converge on a recommendation before implementation, architecture, domain modeling, API design, migration, refactor, testing strategy, or debugging choices after systematic reproduction. Do not use for simple mechanical tasks, obvious single-path fixes, or active unexplained symptoms; use systematic-debugging first.4---56# Brainstorming78Use this skill to make option generation explicit before choosing a path. The9goal is better engineering judgment, not more ceremony.1011## When to use1213Load this skill when the task has meaningful uncertainty or more than one14plausible path:1516- ambiguous product or engineering requirements;17- architecture, domain modeling, API design, migration, refactor, or testing18 strategy decisions;19- debugging choices after systematic reproduction has produced credible20 hypotheses or solution paths to compare;21- planning that benefits from divergent thinking before convergence;22- decisions where maintainability, domain alignment, testability, simplicity,23 performance, security, operability, or migration cost may point in different24 directions.2526## When not to use2728Skip brainstorming when it would add ceremony without changing the outcome:2930- simple, mechanical, formatting-only, generated, or already-specified tasks;31- tasks with an obvious single correct implementation;32- small fixes where reading the code and making the narrow change is enough;33- situations where the next honest step is direct repository inspection,34 reproduction, tests, or validation rather than ideation.3536Route active unexplained symptoms to37[`systematic-debugging`](../systematic-debugging/SKILL.md) before brainstorming.38Use brainstorming only after reproduction establishes evidence sufficient to39compare hypotheses or solution paths.4041## Workflow42431. **Frame the problem.** Restate the goal, constraints, known facts, and desired44 outcome in repository or domain language.452. **Separate evidence.** List facts, assumptions, unknowns, and risks. Do not46 invent requirements or facts that are not grounded in the prompt, issue,47 repository docs, code, tests, or observed behavior.483. **Generate options.** Produce at least two credible candidate approaches49 before selecting one. Include a conservative option when appropriate.504. **Compare tradeoffs.** Evaluate maintainability, domain alignment,51 testability, simplicity, performance, security, operability, migration cost,52 reversibility, and fit with existing boundaries or coverage.535. **Converge.** Recommend one path, explain why it is better than the credible54 alternatives, and name any rejected option that remains tempting.556. **Plan validation.** Identify evidence that would validate or invalidate the56 recommendation: code to inspect, tests to add or run, docs to check, metrics,57 failure reproduction, or review gates.587. **Transition.** Turn the recommendation into an actionable next step, a small59 implementation sequence, or a handoff to the appropriate implementation,60 methodology, debugging, or review skill.6162## Output shape6364Keep results concise enough for downstream implementation. Use this structure by65default and omit non-useful subsections:6667```text68Problem framing69- Goal:70- Known facts:71- Constraints:7273Assumptions, unknowns, and risks74- Assumptions:75- Unknowns:76- Risks:7778Candidate options791. Option A — ...802. Option B — ...813. Option C — ...8283Tradeoff analysis84- Maintainability:85- Domain alignment:86- Testability:87- Simplicity:88- Performance/security/operability/migration cost:8990Recommended approach91- Choose:92- Why:93- Rejected alternatives:9495Validation plan96- Evidence to gather:97- Checks/tests/reviews:9899Open questions100- Blocking only:101```102103## Practice integration104105- **BDD:** Use brainstorming to clarify behavior options and acceptance examples,106 not to replace executable scenarios or tests. If the outcome needs durable107 behavior contracts, load `behavior-driven-development` or `gherkin` next.108- **DDD:** Prefer existing domain language, boundaries, invariants, and policies109 when comparing options. Load `domain-driven-design` when the model itself needs110 focused design.111- **Hexagonal Architecture:** When options differ by dependency direction,112 ports/adapters, use cases, or infrastructure isolation, load113 `hexagonal-architecture` after choosing whether the extra indirection is worth114 its cost.115- **Clean Architecture:** When options differ by use cases, interactors,116 presenters, interface adapters, or concentric policy/detail boundaries, load117 `clean-architecture` after deciding those responsibilities matter.118- **Onion Architecture:** When options differ by domain/application rings around119 a protected domain model, load `onion-architecture` after confirming the domain120 behavior justifies the layers.121- **TDD:** Use the validation plan to decide the first failing test or regression122 check. Load `test-driven-development` when implementation should proceed by123 Red-Green-Refactor.124125## Behavior examples126127```gherkin128Scenario: Ambiguous API design benefits from brainstorming129 Given an agent sees two viable route or data-shape designs130 When the tradeoffs affect domain boundaries, tests, or migration cost131 Then the agent compares options before recommending an implementation path132```133134```gherkin135Scenario: A narrow mechanical fix skips brainstorming136 Given the user asks for a clearly specified typo, formatting, or one-line bug fix137 When code inspection shows the implementation path is obvious138 Then the agent makes and verifies the narrow change without brainstorming ceremony139```140141## Anti-patterns142143- Generating only one option and calling it brainstorming.144- Treating brainstorming as a substitute for reading code, docs, tests, or error145 output.146- Producing vague ideas with no implementation implications.147- Overweighting quick wins when long-term maintainability, security, or domain148 alignment matters.149- Ignoring existing boundaries, invariants, test coverage, or validation lanes.150- Using brainstorming to avoid making a justified recommendation.