skills/brainstorming/SKILL.md
Pre-implementation exploration: deep interview, approach comparison, design doc. Use when exploring a vague feature idea, clarifying ambiguous requirements, or comparing approaches before coding. For the full workflow, use `/ia-brainstorm`.
npx skillsauth add iliaal/ai-skills 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.
Clarify WHAT to build before HOW to build it.
No implementation until the design is approved. Brainstorming produces a design document, not code. Do not invoke implementation skills, write production code, or create files outside docs/brainstorms/ until the user explicitly approves the design and moves to planning.
Before diving into questions, do two things:
Ground in the codebase (when applicable). If the brainstorm relates to existing code, read the relevant modules, patterns, and constraints before generating options. This prevents suggesting approaches that conflict with the actual architecture. Skip for purely abstract brainstorms (tech choices, product direction) where no codebase context applies.
Right-size the artifact. Match ceremony to problem size. If the brainstorm resolves in 3 messages, don't force a formal design doc -- a summary comment is enough. If it spans multiple sessions and touches architecture, write the full Phase 3 doc. No ceremony tax.
Assess whether brainstorming is needed. Brainstorm when any of these fire: vague terms ("make it better", "add something like"), multiple reasonable interpretations, undiscussed trade-offs, user uncertainty, solution-framing instead of problem-framing ("build a dashboard"), or request spanning multiple independent subsystems (decompose first — see Scope Decomposition below). Otherwise, requirements are clear — suggest: "Your requirements seem clear. Consider proceeding directly to planning or implementation."
If the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs decomposition first.
User context calibration (before diving into the idea):
Read signals from the user's first message to calibrate communication register:
Adjust question style accordingly. Technical users get architecture-level probing. Non-technical users get experience-level probing. Don't ask about this calibration -- just do it. If signals are ambiguous, default to the vocabulary the user is already using.
Explore project context first: Before asking questions, read existing files, docs, and recent commits related to the idea. Understanding what exists prevents asking questions the codebase already answers and grounds the conversation in reality.
Ask questions one at a time by default. When probing a single dimension (e.g., data model, auth flow), clustering 2-3 related questions together is acceptable.
Info-dump gate (when user offers rich context up-front): if the user's first message is substantial (>200 words, or dumps requirements in stream-of-consciousness), resist the urge to ask questions one-at-a-time. Instead, respond with 5-10 numbered clarifying questions the user can answer in shorthand (1: yes, 2: channel #ops, 3: no because backwards compat). Pick questions that remove ambiguity, not questions that show you read the dump. Exit this batched mode when the user's answers show they can be asked about edge cases without basics being explained back to them.
Example after a spec dump:
Before I propose approaches, quick clarifications:
1. Auth — SSO (which provider?) or username/password?
2. Sync or async for the webhook delivery?
3. Which of the three integrations is P0?
4. "Fast enough" in the spec — what's the actual number?
Answer whichever you know; leave blanks for the rest.
Question Techniques:
Key Topics to Explore:
| Topic | Example Questions | |-------|-------------------| | Purpose | What problem does this solve? What's the motivation? | | Users | Who uses this? What's their context? | | Constraints | Any technical limitations? Timeline? Dependencies? | | Success | How will you measure success? What's the happy path? | | Edge Cases | What shouldn't happen? Any error states to consider? | | Existing Patterns | Are there similar features in the codebase to follow? | | Non-goals | What is explicitly NOT in scope? |
See deep-interview.md for deep interview techniques, including rigor probes (evidence/specificity/counterfactual/attachment as open-ended forced production, not menus) and the integration check that fires before Phase 1 exit when combining stated answers + agent defaults produces an unsurfaced downstream effect.
Exit Condition: Continue until the idea is clear OR user says "proceed". Before moving to Phase 2, summarize understanding in 3-5 bullets and confirm with the user.
After understanding the idea, propose 2-3 concrete approaches.
Structure for Each Approach:
### Approach A: [Name]
[2-3 sentence description]
**Pros:**
- [Benefit 1]
- [Benefit 2]
**Cons:**
- [Drawback 1]
- [Drawback 2]
**Best when:** [Circumstances where this approach shines]
Guidelines:
Ideation lenses (use 2-3 to stress-test approaches when the design space is wide):
"Not Doing" list: Include an explicit list of what the chosen approach will NOT do. Focus is about saying no to good ideas. Make the trade-offs visible so they're a deliberate choice, not an oversight.
Assumptions with validation: For each key assumption in the chosen approach, state how to test it. Not just "we assume X" but "we assume X -- we'll know by [validation method]."
Surface the scope interpretation so the user can correct it before Phase 3 writes the design doc. Phase 2.5 catches scope misalignment before the doc is written; Phase 3b catches drafting issues after.
Two-stage shape: internal draft, then chat-time scoping synthesis. Compose in two stages. Stage 1 is an internal three-bucket thinking pass (Stated / Inferred / Out of scope) for comprehensive scope analysis. Stage 2 is what the user sees — shaped like what two product collaborators would confirm before writing a PRD. The internal draft never reaches the user verbatim; it routes into the Phase 3 doc body.
Stage 1 — internal three-bucket draft (thinking, not output):
Use this as a thinking step. Do not paste it into chat.
Stage 2 — user-facing scoping synthesis. Up to four named sections, each render-conditional. Empty sections are omitted, not padded:
Close with: "Confirm and I'll write the design doc next. Or tell me what to change."
Path A vs Path B gate. Routing depends on TWO signals: (1) did any blocking question fire before Phase 2.5? AND (2) what tier did Phase 0 classify? Blocking questions = scope disambiguation, dialogue probes, approach selection menus. Internal classification and pressure-tests do not count.
Keep tests per section. Each conditional section has its own keep test; failing items dissolve into the internal draft only.
Cut re-statements of Q&A turns, re-statements of the picked Phase 2 approach, mechanical items, and implementation choices that settle during planning.
Bullet budget across sections 2-4 combined. Heuristic, not law — the real discipline is each section's keep test:
| Tier | Typical total | Hard ceiling | |---|---|---| | Lightweight | 0-1 | 2 | | Standard | 2-4 | 5 | | Deep | 3-7 | 9 |
Above the ceiling means the synthesis is mis-shapen — re-cut at a higher level of abstraction, do not raise the cap.
Detail level: conversational, not documentary. 1 line ideally, 2 max. Bullets that need semicolons stringing clauses or an internal list are two decisions sharing a bullet — split or drop.
Re-present after revision; write only on confirm. If the user revises any bullet (even trivially), integrate the change, re-present, and wait for explicit confirmation. A revision is not a confirmation.
Headless mode (/ia-lfg or any disable-model-invocation context): compose the synthesis but skip the confirmation step. Route internal-draft Inferred items to a ## Assumptions section in the Phase 3 doc — explicitly labeled as un-validated bets — instead of into Key Decisions. Stated routes to Requirements; Out-of-scope routes to Non-Goals.
Skip Phase 2.5 entirely when Phase 0.2 detected requirements were already clear and the flow proceeded straight to summary without a Phase 1 dialogue. Path A handles every other Lightweight case.
Summarize key decisions in a structured format. For each major component, verify isolation and clarity: it must answer "what does it do, how do you use it, what does it depend on?" and be independently understandable and testable. If working in an existing codebase, note which existing patterns to follow and where targeted improvements fit naturally.
Design Doc: Save to docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.md. Required sections: What We're Building, Why This Approach, Key Decisions (with rationale), Open Questions, Next Steps. Collapse the Q&A interview log in a <details> block. Include YAML frontmatter with date and topic. Commit to git -- design decisions are project history.
Run this checklist before presenting the design doc. Any failure returns to Phase 2 or Phase 3, not Phase 4.
createOrder() in one place and placeOrder() in another).Silent pass is valid. Clean draft → move to Phase 4.
Present the design doc to the user for approval. The user explicitly confirming the design is the gate to proceed. When invoked via /ia-brainstorm, the command handles spec review dispatch and next-step orchestration.
Headless mode (invoked via /ia-lfg or any disable-model-invocation context): skip the user approval step at Phase 4 — same carve-out as Phase 2.5. The doc-write completes; the artifact is the audit surface for downstream review (/ia-plan, PR review, the ia-document-review skill), not chat confirmation.
| Anti-Pattern | Better Approach | |--------------|-----------------| | Asking 5 questions at once | Ask one at a time across dimensions; cluster 2-3 within a dimension | | Jumping to implementation details | Stay focused on WHAT, not HOW | | 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 |
docs/brainstorms/YYYY-MM-DD-<topic>-brainstorm.mdBrainstorming answers WHAT to build. Planning answers HOW. When brainstorm output exists, /ia-plan detects it and skips idea refinement.
/ia-plan (always)ia-security-sentinel threat model before moving to planning. Catching trust boundary issues at the design stage prevents costly rework.development
Generic test writing discipline: test quality, real assertions, anti-patterns, and rationalization resistance. Use when writing tests, adding test coverage, or fixing failing tests for any language or framework. Complements language-specific skills.
testing
Enforces fresh verification evidence before any completion claim. Use when about to claim "tests pass", "bug fixed", "done", "ready to merge", or handing off work.
tools
Tailwind CSS v4 patterns: CSS-first config, utility classes, component variants, v3 migration. Use when styling with Tailwind, configuring @theme tokens, using tailwind-variants/CVA, migrating v3 to v4, or fixing Tailwind styles and dark mode.
development
Simplifies, polishes, and declutters code without changing behavior. Use when asked to simplify, clean up, refactor, declutter, remove dead code or AI slop, or improve readability. For analysis-only reports without code changes, use code-simplicity-reviewer agent.