look-before-you-leap/skills/brainstorming/SKILL.md
Use before any creative work — new features, components, behavior changes. Turns vague ideas into concrete designs through collaborative dialogue before any code is written. Make sure to use this skill whenever the user wants to think through design options, is torn between approaches, wants to brainstorm or explore tradeoffs, is unsure about data models or system design, or describes a feature idea with multiple possible solutions and hasn't decided on the approach yet. Do NOT use for: implementation planning (use writing-plans), debugging (use systematic-debugging), refactoring (use refactoring), or pure codebase exploration without a design goal.
npx skillsauth add miospotdevteam/claude-control 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.
Turn ideas into designs before writing code. Your job is not to produce a plan — it's to make sure the RIGHT thing gets built. That means challenging assumptions, shrinking scope, and finding the approach that solves the actual problem with the least complexity.
Announce at start: "I'm using the brainstorming skill to explore the design before any code is written."
No code until the design is approved. No exceptions, no matter how simple the task seems. Simple tasks are where unexamined assumptions waste the most time.
Follow engineering-discipline Phase 1 (Orient Before You Touch Anything) to build a picture of the relevant codebase.
For existing codebases — use the co-exploration protocol. First, initialize the plan directory so discovery.md has a place to live:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/init-plan-dir.sh
mkdir -p .temp/plan-mode/active/<plan-name>
Then dispatch Codex in the background to explore in parallel:
codex exec -C <project-root> --dangerously-bypass-approvals-and-sandbox \
</dev/null \
"Explore the codebase for the task: <task-description>. Focus on: \
1. All consumers of files in the feature area \
2. Blast radius — what breaks if these files change? \
3. Test infrastructure covering this area \
4. Edge cases and constraints in the current implementation \
5. Cross-module dependencies \
Write findings to <plan-dir>/discovery.md using append (>>)."
While Codex explores consumers and blast radius, Claude focuses on:
Write your findings to the same discovery.md using append (>>),
under ## [Claude: <topic>] headings — both agents share the file.
After both finish, read all of discovery.md and run a convergence round (see conductor's co-exploration protocol for the full flow).
If codex CLI is not available, Claude explores solo.
For greenfield projects with no existing codebase, skip the reads and note the greenfield context — proceed directly to questions.
Before diving into how to build it, question whether the request is the right thing to build. This is the step that separates brainstorming from just planning.
Ask yourself (and the user when appropriate):
If you realize the framing should change, say so directly: "The way I see it, the core problem is X. The simplest thing that solves X is Y. The other parts you mentioned (A, B, C) could come later. Does that match your thinking?"
While challenging the framing, also determine whether the task is creative — meaning its output has visual, tonal, or experiential qualities that matter beyond functional correctness.
Signals that a task is creative:
If creative: your dialogue in Step 3 should explore intent, feeling,
references, and tone — not just architecture and data flow. And Step 7
will include a Creative Brief in design.md.
If not creative: proceed normally. A refactor, API integration, or data pipeline doesn't need a creative brief.
Explore the idea through conversation. One question per message. When
presenting options or multiple-choice questions, use the AskUserQuestion
tool — it gives the user a structured selection UI instead of plain text.
Use open-ended text only when the question has no clear set of choices.
Go beyond surface-level requirements. The most valuable questions are the ones the user hasn't thought about yet:
Keep going until you could explain the feature to another engineer.
For creative tasks (identified in Step 2), also explore these dimensions. These questions surface the intent and soul that downstream skills (svg-art, frontend-design, immersive-frontend, react-native-mobile) need to produce work with genuine creative direction rather than defaulting to generic patterns:
If the user can't answer a question (doesn't know constraints yet, hasn't decided), propose reasonable defaults and flag them explicitly as assumptions that can be revised later.
Present 2-3 genuinely different ways to solve the problem. "Different" means different in concept, not just in technology choice.
Bad alternatives (same idea, different library):
Good alternatives (different concepts):
For each approach: what it looks like, what it's good at, what could go wrong, and how complex it is to build. Lead with your recommendation and say why — don't be neutral. Have an opinion.
Always include a "do less" option. One approach should be the smallest possible change that still solves the problem. This anchors the discussion and forces the other options to justify their additional complexity.
Before finalizing, pressure-test the design against real-world scenarios:
Don't just list these as "open questions" — make a decision for each one (even if the decision is "defer to v2") and explain why. The design should be specific enough that an engineer could start building without asking follow-up questions about these scenarios.
Walk through the design section by section. Scale detail to complexity — a few sentences for straightforward parts, more for nuanced ones. After each section, check: does this look right?
Cover what's relevant: architecture, components, data flow, error handling, testing. Skip sections that don't apply.
Once approved:
Initialize the plan directory:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/init-plan-dir.sh
mkdir -p .temp/plan-mode/active/<plan-name>
Write the design to .temp/plan-mode/active/<plan-name>/design.md
using the structure below
Run a mandatory Codex review of design.md before writing-plans:
codex exec -C <project-root> --dangerously-bypass-approvals-and-sandbox \
</dev/null \
"Read the design at <plan-dir>/design.md and the discovery at <plan-dir>/discovery.md. \
Review for: \
1. Technical feasibility — can this actually be built as described? \
2. Missed constraints — what does the design not account for? \
3. Blast radius — does the design underestimate what will break? \
4. Existing patterns — does the design conflict with codebase conventions? \
5. Failure modes — are the listed failure modes complete? \
Return specific, actionable findings."
If Codex raises issues, address them: fix the design or document why the concern doesn't apply. This ensures even creative work gets a technical sanity check before planning begins.
If codex CLI is not available, skip the review and proceed.
Call Skill(skill: "look-before-you-leap:writing-plans") to produce
the plan. Do NOT write plan.json or masterPlan.md yourself — the
writing-plans skill sets codexVerify: true on every step and applies
rules you cannot replicate by hand. The design.md feeds directly into
the plan's Context and Discovery Summary.
Stop here. The next step is the implementation plan, not code. The Skill tool call above is mandatory — do not skip it.
Use these sections. Problem, Scope, Chosen Approach, and Failure Modes are required — do not scatter their content into other sections. The rest can be skipped if they don't apply.
# Design: <Title>
## Problem
What problem this solves, for whom, and why it matters now. If the
problem framing changed during brainstorming, note what the original
request was and why the reframing is better.
## Scope
**Required section — do not skip or scatter.** Two subsections:
- **In scope**: What this version delivers (bullet list).
- **Out of scope**: What this version explicitly does NOT deliver, and
why. Every "we could add X later" thought belongs here, not buried
in other sections.
## Chosen Approach
The selected approach, how it works, and why it won over alternatives.
Include enough detail that an engineer could start building: data model
changes, API surface, component structure, key interactions.
## Alternatives Considered
Other approaches explored and why they were rejected. Include the
"do less" option and why it was or wasn't sufficient.
## Failure Modes
**Required section — do not skip.** What can go wrong and how the design
handles it. Network failures, concurrent edits, scale limits, permission
edge cases. For each one: what happens and what the user sees. This
section must appear in design.md, not just in the transcript.
## Key Decisions
Important design choices with rationale. Format as a table:
| Decision | Rationale |
## Assumptions
Items flagged during brainstorming where the user deferred to your
judgment. Each should be specific enough to validate or invalidate
later.
## Creative Brief
**Include this section only for creative tasks** (identified in Step 2).
Omit entirely for non-creative work. Each subsection should be written
expressively — this is where you prime downstream skills to treat the
work as craft, not just code. Research the direction fresh for each
task; never fall back on generic presets.
### Intent
What this piece is *about* — the feeling, the meaning, the story it
tells. Not what it does functionally, but what it communicates
emotionally. Write this section as if you're briefing a designer who
needs to understand the soul of the project before touching a single
pixel or choosing a single word.
### Conceptual Thread
The subtle reference, metaphor, or narrative woven into the work.
Someone familiar with the reference should feel it intuitively; everyone
else simply experiences quality. Can be "none" for purely functional
creative work, but consider it for anything with visual or emotional
ambition.
### Visual Direction
Mood, texture, composition approach, color temperature, density, rhythm.
Not specific hex codes or font names — those come later in
frontend-design's Decision Matrix or the implementing skill's own
process. This is the *why* behind those choices. Think in terms of
feeling, not specification.
### Copy Voice
Tone (authoritative? playful? intimate?), vocabulary level (technical?
conversational? poetic?), emotional register (calm? urgent? warm?),
sentence rhythm (short punchy? flowing? varied?). This applies to
every piece of text in the experience — headlines, CTAs, microcopy,
empty states, error messages, onboarding steps.
### Craftsmanship Standard
What "done well" looks like for this specific piece. What details would
make someone pause and think "this was made with care"? Be concrete —
not "high quality" but "the way the illustration's negative space
mirrors the content hierarchy" or "the microcopy that acknowledges the
user's context instead of being generic." This section primes
implementation toward mastery-level output.
development
Use after discovery to write implementation plans with TDD-granularity steps. Produces plan.json (immutable definition, frozen after approval), progress.json (mutable execution state), and masterPlan.md (user-facing proposal for Orbit review). Every step is one component/feature; TDD rhythm (test, verify fail, implement, verify pass, commit) lives in its progress items. Consumes discovery.md from exploration phase. Make sure to use this skill whenever the user says discovery is done, exploration is finished, discovery.md is ready, or asks to write/create/draft the implementation plan — even if they don't mention plan.json or masterPlan.md by name. Also use when the user references completed exploration findings, blast radius analysis, or consumer mappings and wants them converted into actionable steps. Do NOT use when: the user says 'just do it' or 'no plan', resuming or executing an existing plan, during exploration or brainstorming (discovery not yet complete), debugging, or code review.
tools
End-to-end webapp testing with Playwright MCP integration. Use when: writing Playwright tests, E2E testing, browser testing, webapp testing, visual regression testing, accessibility testing with axe-core, testing user flows through a web UI, verifying frontend behavior in a real browser. Integrates with test-driven-development skill for test-first browser tests and engineering-discipline for verification. Do NOT use when: unit tests only (no browser UI involved), API tests without UI, mobile native testing (use react-native-mobile), testing CLI tools, or writing backend-only integration tests.
development
Test-Driven Development workflow enforcing red-green-refactor cycles. Use when writing new features, adding behavior, or implementing functions where tests should drive design. Requires explicit test-first prompting because Claude naturally writes implementation first. Integrates with writing-plans (TDD rhythm in Progress items) and engineering-discipline (verification). Do NOT use when: fixing a bug in existing tested code (use systematic-debugging), writing tests for existing untested code (characterization tests are a different workflow), refactoring without behavior change (use refactoring), or the project has no test infrastructure.
development
Use when encountering any bug, test failure, or unexpected behavior. Enforces root cause investigation before fixes. Four phases: investigate, analyze patterns, form hypotheses, implement. Prevents guess-and-check thrashing. Use ESPECIALLY when under pressure or when 'just one quick fix' seems obvious. Do NOT use for: learning unfamiliar APIs (use exploration), performance optimization without a specific regression, or code review without a reported bug.