skills/brainstorm/SKILL.md
Brainstorm competing solutions to a problem using parallel agents. Use when you need to explore multiple different approaches to the same problem, compare trade-offs, and choose the best path forward. Spawns parallel proposer agents who each design an independent solution, then peer-review each other's work before a structured comparison.
npx skillsauth add shhac/skills brainstormInstall 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.
Generate and evaluate competing solutions to a problem using parallel agents. Each proposer independently designs an approach, then all proposers critique each other's work. The lead synthesizes everything into a structured comparison for the user to choose from.
competing-hypotheses insteadteam-solve insteadYou are the facilitator orchestrating a structured brainstorm.
Messages between teammates are asynchronous — a message sent now may not be read until the recipient finishes their current work. You cannot rely on message timing for coordination. Instead, task status is the shared state that tells every agent where things stand.
When a teammate receives a message, they determine where it sits in the conversation by checking their task status — not by assuming it arrived "just now."
| Status | Who sets it | Meaning |
|--------|------------|---------|
| pending | Lead | Not started, waiting for assignment |
| in_progress | Teammate | Working, or finished and parked waiting for lead to acknowledge |
| completed | Lead only | Lead has read the teammate's report — this IS the acknowledgment |
The lead marks tasks completed — not the teammate. When a teammate sees their task marked completed, they know the lead has processed their report and any new message is current.
Include these rules in every teammate's spawn prompt:
in_progress when you begin workTaskGet — the task description contains everything you need (proposals to review, feedback to incorporate, etc.). Do NOT search the filesystem or other agents' files for this content.SendMessage, then park — stop all work, do not check TaskList or claim new tasks. Just wait.TaskGet:
in_progress → lead hasn't acknowledged your report yet. This message may pre-date your report. Reply with your current state instead of re-executing.completed → lead has processed your report. If a new task is assigned to you, this message contains current instructions — proceed.completed (your acknowledgment)completed and the new task is created/assignedTaskList — check that all relevant tasks show the expected status, don't track messages mentallyBefore spawning any agents, establish a clear problem frame.
Proposals are developed in parallel and independently — no cross-pollination.
TeamCreateTaskCreategeneral-purpose teammate per proposal using Task with team_name
simple-approach, event-driven-approach, plugin-architecture)SendMessage using the proposal format belowcompleted (acknowledging the report) and give the user brief progress updatesInclude the following in each proposer's prompt:
Use subagents (
Tasktool) to keep your context focused. Spawn subagents for:
- Exploring the codebase to understand existing patterns, dependencies, and constraints
- Researching specific libraries, APIs, or approaches you're considering
- Checking feasibility of a particular direction before committing to it
- Investigating how similar problems have been solved elsewhere in the codebase
Each subagent should report back:
- Relevant findings — what it discovered that matters to your proposal
- Dead ends (1-2 sentences) — approaches that look viable but aren't, and why
When choosing subagent types, prefer read-only or exploration-focused types for codebase searches, and full-capability types for targeted analysis needing deeper tool access (e.g., running commands to test feasibility) — but no changes to files.
Each proposer should structure their report as:
## Proposal: {title}
### Summary
{2-3 sentence overview of the approach}
### Design
- {how it works, key components, data flow}
- {which files/modules would be created or changed}
- {key implementation decisions and why}
### Strengths
- {what this approach does well}
- {which evaluation criteria it scores highest on}
### Weaknesses
- {known limitations or downsides}
- {which evaluation criteria it scores lowest on}
### Risks & Open Questions
- {what could go wrong}
- {unknowns that would need to be resolved during implementation}
### Effort Estimate
{relative sizing: small / medium / large, with brief justification}
### Confidence: {high/medium/low}
{how confident are you this approach would work well?}
Each proposer reviews all other proposals — not just votes, but substantive critique.
completed in TaskList, collect all proposalsTaskCreate. Include in the task description:
completed (acknowledging the report) and give the user brief progress updatesInclude the following in each review message:
Review each of the other proposals below. For each one, provide an honest assessment — you are not competing, you are helping the user make a good decision. Be specific and constructive.
Important:
- Identify genuine strengths even in approaches very different from yours
- Flag gaps or risks the proposer may have missed
- Note if a proposal overlaps significantly with yours or could be combined — but do NOT advocate for merging unless it's genuinely better. Distinct good options are more valuable than a forced compromise.
- If you see something in another proposal that makes you want to revise your own approach, note it — you'll get a chance to revise next
Each reviewer should structure their report as:
## Reviews by {your proposal title}
### Review of "{other proposal title}"
**Strengths I see:**
- {what this approach does well that's worth preserving}
**Gaps or risks missed:**
- {things the proposer didn't address}
**Questions:**
- {things that are unclear or need more detail}
**Would I adopt any of this?**
{yes/no — and what specifically, if yes}
### Review of "{another proposal title}"
...
### Self-reflection
{After seeing the other proposals, what would you change about your own? Be specific.}
Proposers get one chance to strengthen their proposal based on peer feedback.
completed in TaskList, collect all reviewsTaskCreate. Include in the task description:
completed (acknowledging the report) and give the user brief progress updatesInclude the following in each revision message:
You've received feedback from the other proposers. Revise your proposal to address legitimate gaps — but do not abandon your core approach to converge with others. The goal is to make YOUR approach as strong as possible, not to become a hybrid of all approaches.
Specifically:
- Address gaps and risks that reviewers flagged (if they're valid)
- Clarify anything reviewers found unclear
- Incorporate good ideas from other proposals only if they genuinely improve your approach without fundamentally changing it
- If a reviewer's criticism doesn't apply or is based on a misunderstanding, briefly explain why
Use the same Proposal Format as before, but mark what changed. Add a "Changes from v1" section at the end listing what you revised and why.
The lead synthesizes everything into a clear comparison for the user.
Once all revision tasks show completed in TaskList, gather final proposals
Build a trade-off matrix — evaluate each proposal against the criteria from Phase 1:
| Criteria | Proposal A | Proposal B | Proposal C | |----------|-----------|-----------|-----------| | Complexity | ... | ... | ... | | Risk | ... | ... | ... | | ... | ... | ... | ... |
For each proposal, summarize:
Note any surprising agreements — if all proposers flagged the same risk or praised the same aspect across proposals, highlight it
If proposals exist at different points on a genuine trade-off spectrum (e.g., simple-but-limited vs complex-but-flexible), present them as distinct options — do NOT try to merge them into a compromise unless the user asks for a hybrid
Provide a recommendation if one proposal clearly dominates, or frame the choice if it's genuinely a matter of preference/priorities
Present to the user and ask which direction they'd like to go (or if they want to explore further)
This skill ends at recommendation — it does not implement.
team-solve for structured implementationTaskUpdate status, not message timing. Always check TaskList to verify state.completed — only the lead marks tasks completed. This is the acknowledgment that closes the loop.TaskGet their assigned task to find everything they need. Do NOT search the filesystem, team config, or other agents' scratch files for proposals or feedback.team-solve or direct implementation.development
Review a GitHub pull request using the passive, neutral, assertive, or aggressive profile, optionally paired with a named reviewer persona that sets the review voice, by statically reading the PR diff, metadata, comments, and discovered issue/context links to determine whether it solves the stated issue. Use for automated or manual PR review flows that should leave an emoji-marked top-level review plus targeted inline comments or suggestion blocks, without running code or blocking except for malicious-looking changes.
development
Audit a codebase's module boundaries — enumerate modules, map their seams (import edges between modules), produce a layered topology diagram, and classify each module as narrow, hub-by-design, or accidental hub (with separate flags for cycles, layer violations, and uncertain import graphs). Outputs a diagram plus a flagged-for-review list; does not change code. Use when assessing whether abstractions live at the right boundaries, before/after a refactor to verify the boundaries improved, or when an unfamiliar codebase needs an architectural map. Not for intra-module refactoring (see improve-code-structure), bug hunting, or feature work.
testing
Investigate and solve problems using a team of specialist agents. Use when facing complex, multi-faceted problems that benefit from parallel research and structured implementation.
tools
Sync a forked repository with its upstream. Fetches both remotes, shows divergence, resets shared branches to upstream, re-merges local-only branches, cleans up branches already merged upstream, and pushes. Use when upstream has accepted PRs or moved ahead and you need to bring your fork in line.