From quirk
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/quirk:brainstormingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, present the design and get user approval.
Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it. This applies to EVERY project regardless of perceived simplicity.Every project goes through this process. A todo list, a single-function utility, a config change — all of them. "Simple" projects are where unexamined assumptions cause the most wasted work. The design can be short (a few sentences for truly simple projects), but you MUST present it and get approval.
You MUST create a task for each of these items and complete them in order:
adhd skill first (see Gray Areas → Step 0), then present domain-specific ambiguous decision areas via AskUserQuestion (multiSelect), then drill into each selected area with batched clarifying questions.docs/quirk/specs/YYYY-MM-DD-<topic>-design.md and commitdigraph brainstorming {
"Explore project context" [shape=box];
"Detect domain +\ndispatch context research" [shape=box];
"Visual questions ahead?" [shape=diamond];
"Offer Visual Companion\n(own message, no other content)" [shape=box];
"Resolve gray areas\n(multiSelect → drill-in)" [shape=box];
"Ask remaining\nclarifying questions" [shape=box];
"Dispatch option-validation\nresearch (parallel)" [shape=box];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design doc" [shape=box];
"Spec self-review\n(fix inline)" [shape=box];
"User reviews spec?" [shape=diamond];
"Invoke writing-plans skill" [shape=doublecircle];
"Explore project context" -> "Detect domain +\ndispatch context research";
"Detect domain +\ndispatch context research" -> "Visual questions ahead?";
"Visual questions ahead?" -> "Offer Visual Companion\n(own message, no other content)" [label="yes"];
"Visual questions ahead?" -> "Resolve gray areas\n(multiSelect → drill-in)" [label="no"];
"Offer Visual Companion\n(own message, no other content)" -> "Resolve gray areas\n(multiSelect → drill-in)";
"Resolve gray areas\n(multiSelect → drill-in)" -> "Ask remaining\nclarifying questions";
"Ask remaining\nclarifying questions" -> "Dispatch option-validation\nresearch (parallel)";
"Dispatch option-validation\nresearch (parallel)" -> "Propose 2-3 approaches";
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design doc" [label="yes"];
"Write design doc" -> "Spec self-review\n(fix inline)";
"Spec self-review\n(fix inline)" -> "User reviews spec?";
"User reviews spec?" -> "Write design doc" [label="changes requested"];
"User reviews spec?" -> "Invoke writing-plans skill" [label="approved"];
}
The terminal state is invoking writing-plans. Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans.
Brainstorming uses parallel research-agent swarms (via the Task tool) to ground design decisions in current external knowledge — best practices, anti-patterns, post-mortems, and real-world experience reports — instead of leaning purely on training data.
| Agent | Model | Purpose | Sources/agent |
|---|---|---|---|
web-research-agent | haiku | Fast parallel searches; pattern + anti-pattern validation | ~3 |
deep-research-agent | sonnet | Multi-round investigation of the chosen approach (depth=2) | ~5–7 |
Spawn agents in a single message per phase (parallel execution is mandatory — sequential same-phase agents are a defect):
Get current year first (used in every prompt to avoid stale results):
date +%Y
Phase A — Context research (Checklist step 2) — 2 parallel web-research-agent:
"[domain from task] simple architecture patterns minimalist implementation [YEAR]""[domain/technology] common pitfalls anti-patterns lessons learned post-mortems [YEAR]"Phase B — Option-validation research (Checklist step 6) — 1 web-research-agent per candidate option (typically 3 total, in parallel):
"[option approach name] real world experience pros cons [YEAR]"Phase C (optional) — Deep validation of the chosen approach — 1 deep-research-agent (sonnet, depth=2), only when the chosen approach is novel, high-stakes, or production-bound:
"Investigate [chosen approach] for [domain]: implementation best practices, testing strategies, common mistakes, edge cases. Focus on [YEAR] production lessons."From each agent response, extract: Key Findings (distilled bullets that change a decision) and Sources (URLs/refs for traceability). Feed these into:
web-research-agent calls.A gray area is a domain-specific decision space where the request is ambiguous and multiple defensible answers exist. Resolving gray areas up front — in batched, multi-select form — is faster and clearer than discovering them mid-design.
Classify the work from the task description before clarifying questions:
| Domain | Signals |
|---|---|
| Visual | "display", "show", "UI", "page", "component", "feed", "dashboard" |
| API | "API", "endpoint", "REST", "GraphQL", "request", "response" |
| CLI | "CLI", "command", "terminal", "script", "tool" |
| Docs | "docs", "documentation", "guide", "README", "tutorial" |
| Organization | "organize", "structure", "migrate", "refactor", "clean up" |
| Data | "import", "export", "ETL", "pipeline", "transform", "process" |
| Integration | "integrate", "sync", "connect", "webhook", "third-party" |
Use these as the seed set for the multi-select question. Pick the 3–4 most relevant for the specific request.
Before surfacing gray areas, offer to run the adhd skill to find non-obvious decision areas the static catalog would miss. The catalog is the cheap baseline; adhd is the opt-in, higher-cost expansion.
Skip this offer entirely on truly trivial work (for example: a config tweak or an obvious one-line utility). This is narrower than the research-swarm skip rule — do not suppress the offer just because you've already researched the domain in-session. Otherwise, present:
AskUserQuestion:
questions:
- question: "Before we pick what to clarify — want me to run adhd to surface non-obvious decision areas specific to this request? (~5–10× cost, parallel divergent ideation)"
header: "Find gray areas"
multiSelect: false
options:
- label: "Use the standard set (Recommended)"
description: "Surface gray areas from the domain catalog only. No extra cost."
- label: "Run adhd first"
description: "Spend 5–10× to surface non-obvious ambiguities the catalog misses; they're merged into the areas you choose from."
adhd skill with a discovery-framed delegation — the decision point you hand adhd is "what latent ambiguous decisions are in this request?", so its returned "options" are candidate gray areas (not solutions). adhd's frames (failure pre-mortem, stakeholder rotation, expert blind spots) are blind-spot finders well-suited to this.adhd: (e.g. adhd: offline-degradation) so the user sees which areas came from divergent ideation.Use AskUserQuestion with multiSelect: true. Each option is a domain-specific area with a description that explains why it's ambiguous:
AskUserQuestion:
questions:
- question: "Which of these areas should we clarify before designing?"
header: "Gray areas"
multiSelect: true
options:
- label: "[Area name]"
description: "[Why this area matters and what's ambiguous about it]"
# ... 3–4 total
For each selected gray area, generate 3–7 focused questions that progress from foundational (core behavior) to edge-case (errors, empties, limits). Use AskUserQuestion with up to 4 questions per call (2 calls if an area needs 5–7).
Per-question rules:
multiSelect: false (single choice per question)(Recommended) appended to its labeldescription ≥ 1 sentence explaining implications and trade-offsheader is a short category label (e.g., "Layout", "Auth", "Errors")Example — Visual / "Layout style" (5 questions):
AskUserQuestion.(Recommended) appended.Watch for "also add", "we should also", "what about adding", "could we also", "it would be nice if". When detected:
Understanding the idea:
Exploring approaches:
web-research-agent per candidate option, in parallel) so each option's pros/cons cite real-world findings.Presenting the design:
Design for isolation and clarity:
Working in existing codebases:
Documentation:
docs/quirk/specs/YYYY-MM-DD-<topic>-design.md
Spec Self-Review: After writing the spec document, look at it with fresh eyes:
Fix any issues inline. No need to re-review — just fix and move on.
User Review Gate: After the spec review loop passes, ask the user to review the written spec before proceeding:
"Spec written and committed to
<path>. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
Wait for the user's response. If they request changes, make them and re-run the spec review loop. Only proceed once the user approves.
Implementation:
AskUserQuestion (up to 4 per call), one area at a time.A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool — not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
Offering the companion: When you anticipate that upcoming questions will involve visual content (mockups, layouts, diagrams), offer it once for consent:
"Some of what we're working on might be easier to explain if I can show it to you in a web browser. I can put together mockups, diagrams, comparisons, and other visuals as we go. This feature is still new and runs on Agent Isles (needs Node available). Want to try it? (Requires opening a local URL)"
This offer MUST be its own message. Do not combine it with clarifying questions, context summaries, or any other content. The message should contain ONLY the offer above and nothing else. Wait for the user's response before continuing. If they decline, proceed with text-only brainstorming.
Per-question decision: Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal. The test: would the user understand this better by seeing it than reading it?
A question about a UI topic is not automatically a visual question. "What does personality mean in this context?" is a conceptual question — use the terminal. "Which wizard layout works better?" is a visual question — use the browser.
If they agree to the companion, read the detailed guide before proceeding:
skills/brainstorming/visual-companion.md
npx claudepluginhub zpyoung/quirk --plugin quirkCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.