Brainstorm a Feature or Improvement
Note: The current year is 2026.
Use this when dating requirements documents.
Brainstorming helps answer
WHAT
to build through collaborative dialogue. It precedes
/ce:plan
, which answers
HOW
to build it.
The durable output of this workflow is a
requirements document
. In other workflows this might be called a lightweight PRD or feature brief. In compound engineering, keep the workflow name
brainstorm
, but make the written artifact strong enough that planning does not need to invent product behavior, scope boundaries, or success criteria.
This skill does not implement code. It explores, clarifies, and documents decisions for later planning or execution.
Core Principles
Assess scope first
- Match the amount of ceremony to the size and ambiguity of the work.
Be a thinking partner
- Suggest alternatives, challenge assumptions, and explore what-ifs instead of only extracting requirements.
Resolve product decisions here
- User-facing behavior, scope boundaries, and success criteria belong in this workflow. Detailed implementation belongs in planning.
Keep implementation out of the requirements doc by default
- Do not include libraries, schemas, endpoints, file layouts, or code-level design unless the brainstorm itself is inherently about a technical or architectural change.
Right-size the artifact
- Simple work gets a compact requirements document or brief alignment. Larger work gets a fuller document. Do not add ceremony that does not help planning.
Apply YAGNI to carrying cost, not coding effort
- Prefer the simplest approach that delivers meaningful value. Avoid speculative complexity and hypothetical future-proofing, but low-cost polish or delight is worth including when its ongoing cost is small and easy to maintain.
Interaction Rules
Ask one question at a time
- Do not batch several unrelated questions into one message.
Prefer single-select multiple choice
- Use single-select when choosing one direction, one priority, or one next step.
Use multi-select rarely and intentionally
- Use it only for compatible sets such as goals, constraints, non-goals, or success criteria that can all coexist. If prioritization matters, follow up by asking which selected item is primary.
Use the platform's question tool when available
- When asking the user a question, prefer the platform's blocking question tool if one exists (
AskUserQuestion
in Claude Code,
request_user_input
in Codex,
ask_user
in Gemini). Otherwise, present numbered options in chat and wait for the user's reply before proceeding.
Output Guidance
Keep outputs concise
- Prefer short sections, brief bullets, and only enough detail to support the next decision.
Feature Description
date : YYYY - MM - DD topic : <kebab - case - topic
Problem Frame [Who is affected, what is changing, and why it matters]
Requirements
R1. [Concrete user-facing behavior or requirement]
R2. [Concrete user-facing behavior or requirement]
Success Criteria
[How we will know this solved the right problem]
Scope Boundaries
[Deliberate non-goal or exclusion]
Key Decisions
[ Decision ] : [Rationale]
Dependencies / Assumptions
[Only include if material]
Outstanding Questions
Resolve Before Planning
[ Affects R1 ][ User decision ] [Question that must be answered before planning can proceed]
Deferred to Planning
[ Affects R2 ][ Technical ] [Question that should be answered during planning or codebase exploration] - [ Affects R2 ][ Needs research ] [Question that likely requires research during planning]
Next Steps
[If
Resolve Before Planning
is empty:
→ /ce:plan
for structured implementation planning]
[If
Resolve Before Planning
is not empty:
→ Resume /ce:brainstorm
to resolve blocking questions before planning]
For
Standard
and
Deep
brainstorms, a requirements document is usually warranted.
For
Lightweight
brainstorms, keep the document compact. Skip document creation when the user only needs brief alignment and no durable decisions need to be preserved.
For very small requirements docs with only 1-3 simple requirements, plain bullet requirements are acceptable. For
Standard
and
Deep
requirements docs, use stable IDs like
R1
,
R2
,
R3
so planning and later review can refer to them unambiguously.
When the work is simple, combine sections rather than padding them. A short requirements document is better than a bloated one.
Before finalizing, check:
What would
ce:plan
still have to invent if this brainstorm ended now?
Do any requirements depend on something claimed to be out of scope?
Are any unresolved items actually product decisions rather than planning questions?
Did implementation details leak in when they shouldn't have?
Is there a low-cost change that would make this materially more useful?
If planning would need to invent product behavior, scope boundaries, or success criteria, the brainstorm is not complete yet.
Ensure
docs/brainstorms/
directory exists before writing.
If a document contains outstanding questions:
Use
Resolve Before Planning
only for questions that truly block planning
If
Resolve Before Planning
is non-empty, keep working those questions during the brainstorm by default
If the user explicitly wants to proceed anyway, convert each remaining item into an explicit decision, assumption, or
Deferred to Planning
question before proceeding
Do not force resolution of technical questions during brainstorming just to remove uncertainty
Put technical questions, or questions that require validation or research, under
Deferred to Planning
when they are better answered there
Use tags like
[Needs research]
when the planner should likely investigate the question rather than answer it from repo context alone
Carry deferred questions forward explicitly rather than treating them as a failure to finish the requirements doc
Phase 4: Handoff
4.1 Present Next-Step Options
Present next steps using the platform's blocking question tool when available (see Interaction Rules). Otherwise present numbered options in chat and end the turn.
If
Resolve Before Planning
contains any items:
Ask the blocking questions now, one at a time, by default
If the user explicitly wants to proceed anyway, first convert each remaining item into an explicit decision, assumption, or
Deferred to Planning
question
If the user chooses to pause instead, present the handoff as paused or blocked rather than complete
Do not offer
Proceed to planning
or
Proceed directly to work
while
Resolve Before Planning
remains non-empty
Question when no blocking questions remain:
"Brainstorm complete. What would you like to do next?"
Question when blocking questions remain and user wants to pause:
"Brainstorm paused. Planning is blocked until the remaining questions are resolved. What would you like to do next?"
Present only the options that apply:
Proceed to planning (Recommended)
- Run
/ce:plan
for structured implementation planning
Proceed directly to work
- Only offer this when scope is lightweight, success criteria are clear, scope boundaries are clear, and no meaningful technical or research questions remain
Review and refine
- Offer this only when a requirements document exists and can be improved through structured review
Ask more questions
- Continue clarifying scope, preferences, or edge cases
Share to Proof
- Offer this only when a requirements document exists
Done for now
- Return later
If the direct-to-work gate is not satisfied, omit that option entirely.
4.2 Handle the Selected Option
If user selects "Proceed to planning (Recommended)":
Immediately run
/ce:plan
in the current session. Pass the requirements document path when one exists; otherwise pass a concise summary of the finalized brainstorm decisions. Do not print the closing summary first.
If user selects "Proceed directly to work":
Immediately run
/ce:work
in the current session using the finalized brainstorm output as context. If a compact requirements document exists, pass its path. Do not print the closing summary first.
If user selects "Share to Proof":
CONTENT
=
$(
cat
docs/brainstorms/YYYY-MM-DD-
<
topic
-requirements.md ) TITLE = "Requirements:
" RESPONSE = $( curl -s -X POST https://www.proofeditor.ai/share/markdown \ -H "Content-Type: application/json" \ -d " $( jq -n --arg title " $TITLE " --arg markdown " $CONTENT " --arg by "ai:compound" '{title: $title, markdown: $markdown, by: $by}' ) " ) PROOF_URL = $( echo " $RESPONSE " | jq -r '.tokenUrl' ) Display the URL prominently: View & collaborate in Proof: If the curl fails, skip silently. Then return to the Phase 4 options. If user selects "Ask more questions": Return to Phase 1.3 (Collaborative Dialogue) and continue asking the user questions one at a time to further refine the design. Probe deeper into edge cases, constraints, preferences, or areas not yet explored. Continue until the user is satisfied, then return to Phase 4. Do not show the closing summary yet. If user selects "Review and refine": Load the document-review skill and apply it to the requirements document. When document-review returns "Review complete", return to the normal Phase 4 options and present only the options that still apply. Do not show the closing summary yet. 4.3 Closing Summary Use the closing summary only when this run of the workflow is ending or handing off, not when returning to the Phase 4 options. When complete and ready for planning, display: Brainstorm complete! Requirements doc: docs/brainstorms/YYYY-MM-DD- -requirements.md # if one was created Key decisions: - [Decision 1] - [Decision 2] Recommended next step: /ce:planIf the user pauses with Resolve Before Planning still populated, display: Brainstorm paused. Requirements doc: docs/brainstorms/YYYY-MM-DD--requirements.md # if one was created Planning is blocked by: - [Blocking question 1] - [Blocking question 2] Resume with /ce:brainstormwhen ready to resolve these before planning.