Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Interactive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement. Serial execution with no agent delegation.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-22 | ✗→✓ | ▲ Improved | 692% | 0% |
| case-04 | ✓→✗ | ▼ Worse | 651% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 660% | 0% |
| case-06 | ✓→✗ | ▼ Worse | 284% | 0% |
| case-20 | ✓→✗ | ▼ Worse | 421% | 0% |
Interactive brainstorming workflow with documented thought evolution. Expands initial ideas through questioning, inline multi-perspective analysis, external research, and iterative refinement.
Core workflow: Seed Idea → Expand → Multi-Perspective Explore → Research → Refine → Crystallize → Next Step
Key features:
web.runfunctions.update_plan for real-time phase progress visibilityWhen --yes or -y: Auto-confirm exploration decisions, use recommended perspectives, skip interactive scoping.
bash# Basic usage /codex:brainstorm-with-file TOPIC="How to improve developer onboarding experience" # With perspective selection /codex:brainstorm-with-file TOPIC="New caching strategy" --perspectives=creative,pragmatic,systematic # Continue existing session /codex:brainstorm-with-file TOPIC="caching strategy" --continue # Auto mode (skip confirmations) /codex:brainstorm-with-file -y TOPIC="Plugin architecture ideas"
$TOPIC
| Flag | Default | Description | |------|---------|-------------| | -y, --yes | false | Auto-confirm all decisions | | --continue | false | Continue existing session | | --perspectives | creative,pragmatic,systematic | Comma-separated perspective list | | --max-ideas | 15 | Maximum ideas to track |
Session ID format: BS-{YYYY-MM-DD}-{slug}
Step 0: Session Setup
├─ Parse topic, flags (--perspectives, --continue, -y)
├─ Generate session ID: BS-{date}-{slug}
├─ Create session folder (or detect existing → continue mode)
└─ functions.update_plan (5 phases: Seed → Explore → Refine → Converge → GATE)
Step 1: Seed Understanding
├─ Parse topic, identify brainstorm dimensions
├─ Role/perspective selection with user (or auto)
├─ Initial scoping via functions.request_user_input (mode, focus, constraints)
├─ Expand seed into exploration vectors
└─ Initialize brainstorm.md
Step 2: Divergent Exploration (Inline, No Agents)
├─ Detect codebase → search relevant modules, patterns
│ ├─ Run `ccw spec load --category exploration` (if spec system available)
│ └─ Use Grep, Glob, Read, mcp__ace-tool__search_context
├─ Multi-perspective analysis (serial, inline)
│ ├─ Creative perspective: innovation, cross-domain, challenge assumptions
│ ├─ Pragmatic perspective: feasibility, effort, blockers
│ └─ Systematic perspective: decomposition, patterns, scalability
├─ External research via web.run (optional — patterns, best practices, inspiration)
├─ Aggregate findings → perspectives.json + research.json
├─ Update brainstorm.md with Round 1
└─ Initial Idea Coverage Check
Step 3: Interactive Refinement (Multi-Round, max 6)
├─ Present current ideas and perspectives (Cumulative Context)
├─ Record findings to brainstorm.md BEFORE updating Current Ideas
├─ Gather user feedback via functions.request_user_input
├─ Process response:
│ ├─ Deep Dive → deeper inline analysis on selected ideas
│ ├─ Diverge → new inline analysis with different angles
│ ├─ Challenge → devil's advocate inline analysis
│ ├─ Merge → synthesize complementary ideas inline
│ ├─ 外部研究 → web.run for external inspiration/validation
│ └─ Converge → exit loop for synthesis
├─ Update brainstorm.md with round details
└─ Repeat until user selects converge or max rounds
Step 4: Convergence & Crystallization
├─ Consolidate all insights → synthesis.json
├─ Update brainstorm.md with final synthesis
├─ Batch top-idea review via functions.request_user_input
└─ MANDATORY Terminal Gate: 执行任务 / 产出Issue / 完成
├─ Execute Task → handoff-spec.json with implementation scope
├─ Create Issue → display issue creation command
└─ Done → end workflow| Artifact | Purpose | |----------|---------| | brainstorm.md | Initialized with session metadata, seed expansion, and exploration vectors | | Session variables | Topic slug, brainstorm mode, dimensions, exploration vectors |
| Artifact | Purpose | |----------|---------| | exploration-codebase.json | Codebase context: relevant files, patterns, architecture constraints | | perspectives/*.json | Individual perspective outputs (creative, pragmatic, systematic) | | perspectives.json | Aggregated findings with synthesis (convergent/conflicting themes) | | Updated brainstorm.md | Round 1: Exploration results and multi-perspective analysis |
| Artifact | Purpose | |----------|---------| | ideas/{idea-slug}.md | Deep-dive analysis for selected ideas | | ideas/merged-idea-{n}.md | Merged idea documents | | Updated brainstorm.md | Round 2-6: User feedback, idea selections, refinement cycles |
| Artifact | Purpose | |----------|---------| | synthesis.json | Final synthesis: top ideas, recommendations, insights | | Final brainstorm.md | Complete thought evolution with conclusions |
CRITICAL: During brainstorming, the following situations MUST trigger immediate recording to brainstorm.md:
| Trigger | What to Record | Target Section | |---------|---------------|----------------| | Idea generated | Idea content, source perspective, novelty/feasibility ratings | #### Ideas Generated | | Perspective shift | Old framing → new framing, trigger reason | #### Decision Log | | User feedback | User's original input, which ideas selected/rejected | #### User Input | | Assumption challenged | Original assumption → challenge result, survivability | #### Challenged Assumptions | | Ideas merged | Source ideas, merged concept, what was preserved/discarded | #### Decision Log | | Scope adjustment | Before/after scope, trigger reason | #### Decision Log |
markdown> **Decision**: [Description of the decision] > - **Context**: [What triggered this decision] > - **Options considered**: [Alternatives evaluated] > - **Chosen**: [Selected approach] — **Reason**: [Rationale] > - **Rejected**: [Why other options were discarded] > - **Impact**: [Effect on brainstorming direction]
Append after each round update:
markdown### Round N: Narrative Synthesis **Starting point**: Based on previous round's [conclusions/questions], this round explored [starting point]. **Key progress**: [New ideas/findings] [confirmed/refuted/expanded] previous understanding of [topic area]. **Decision impact**: User selected [feedback type], directing brainstorming toward [adjusted/deepened/maintained]. **Current state**: After this round, top ideas are [updated idea rankings]. **Open directions**: [remaining exploration angles for next round]
javascriptconst getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString() // Parse flags const autoYes = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y') const continueMode = $ARGUMENTS.includes('--continue') const perspectivesMatch = $ARGUMENTS.match(/--perspectives[=\s]([\w,]+)/) const selectedPerspectiveNames = perspectivesMatch ? perspectivesMatch[1].split(',') : ['creative', 'pragmatic', 'systematic'] // Extract topic const topic = $ARGUMENTS.replace(/--yes|-y|--continue|--perspectives[=\s][\w,]+|--max-ideas[=\s]\d+|TOPIC=/g, '').replace(/^["']|["']$/g, '').trim() // Determine project root const projectRoot = functions.exec_command('git rev-parse --show-toplevel 2>/dev/null || pwd').trim() const slug = topic.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, '-').substring(0, 40) const dateStr = getUtc8ISOString().substring(0, 10) const sessionId = `BS-${dateStr}-${slug}` const sessionFolder = `${projectRoot}/.workflow/.brainstorm/${sessionId}` // Auto-detect continue: session folder + brainstorm.md exists → continue mode // If continue → load brainstorm.md + perspectives, resume from last round functions.exec_command(`mkdir -p ${sessionFolder}`) // Initialize progress tracking (MANDATORY) functions.update_plan([ { id: "phase-1", title: "Phase 1: Seed Understanding", status: "in_progress" }, { id: "phase-2", title: "Phase 2: Divergent Exploration", status: "pending" }, { id: "phase-3", title: "Phase 3: Interactive Refinement", status: "pending" }, { id: "phase-4", title: "Phase 4: Convergence & Crystallization", status: "pending" }, { id: "next-step", title: "GATE: Post-Completion Next Step", status: "pending" } ])
Objective: Parse the initial idea, identify exploration vectors, scope preferences, and initialize the brainstorm document.
##### Step 1.1: Parse Seed & Identify Dimensions
Match topic keywords against brainstorm dimensions (see Dimensions Reference):
javascript// Match topic text against keyword lists from Dimensions Reference // If multiple dimensions match, include all // If none match, default to "technical" and "innovation" const dimensions = identifyDimensions(topic, BRAINSTORM_DIMENSIONS)
##### Step 1.2: Role Selection
Recommend roles based on topic keywords, then let user confirm or override.
Professional Roles (recommended based on topic keywords):
| Role | Perspective Focus | Keywords | |------|------------------|----------| | system-architect | Architecture, patterns | 架构, architecture, system, 系统, design pattern | | product-manager | Business value, roadmap | 产品, product, feature, 功能, roadmap | | ui-designer | Visual design, interaction | UI, 界面, interface, visual, 视觉 | | ux-expert | User research, usability | UX, 体验, experience, user, 用户 | | data-architect | Data modeling, storage | 数据, data, database, 存储, storage | | test-strategist | Quality, testing | 测试, test, quality, 质量, QA | | subject-matter-expert | Domain knowledge | 领域, domain, industry, 行业, expert |
Simple Perspectives (fallback — always available):
| Perspective | Focus | Best For | |-------------|-------|----------| | creative | Innovation, cross-domain | Generating novel ideas | | pragmatic | Implementation, feasibility | Reality-checking ideas | | systematic | Architecture, structure | Organizing solutions |
Selection Strategy:
##### Step 1.3: Initial Scoping (New Session Only)
For new brainstorm sessions, gather user preferences before exploration (skipped in auto mode or continue mode):
javascriptif (!autoYes && !continueMode) { // Single batch: Mode + Focus + Constraints (max 4 questions per call) const scoping = functions.request_user_input({ questions: [ { header: "Mode", // max 12 chars question: "Select brainstorming intensity:", multiSelect: false, options: [ { label: "Balanced (Recommended)", description: "Moderate, 3 perspectives" }, { label: "Creative", description: "Fast, high novelty, 1 perspective" }, { label: "Deep", description: "Comprehensive, 3 perspectives + deep refinement" } ] }, { header: "Focus", question: "Select brainstorming focus areas:", multiSelect: true, options: generateFocusOptions(dimensions) // Dynamic based on dimensions }, { header: "Constraints", question: "Any constraints to consider?", multiSelect: true, options: [ { label: "Existing Arch", description: "Must fit current system" }, { label: "Time Limited", description: "Short implementation timeline" }, { label: "Resource Limited", description: "Limited team/budget" }, { label: "No Constraints", description: "Blue-sky thinking" } ] } ] }) }
##### Step 1.4: Expand Seed into Exploration Vectors
Generate key questions that guide the brainstorming exploration. Done inline — no agent delegation.
Exploration Vectors:
Analyze the topic inline against user focus areas and constraints to produce 5-7 exploration vectors.
##### Step 1.5: Initialize brainstorm.md
javascriptconst brainstormMd = `# Brainstorm Session **Session ID**: ${sessionId} **Topic**: ${topic} **Started**: ${getUtc8ISOString()} **Dimensions**: ${dimensions.join(', ')} **Mode**: ${brainstormMode} ## Table of Contents <!-- TOC: Auto-updated after each round/phase. --> - [Session Context](#session-context) - [Current Ideas](#current-ideas) - [Thought Evolution Timeline](#thought-evolution-timeline) ## Current Ideas <!-- REPLACEABLE BLOCK: Overwrite (not append) after each round with latest ranked ideas. --> > To be populated after exploration. ## Session Context - Focus areas: ${focusAreas.join(', ')} - Perspectives: ${selectedPerspectiveNames.join(', ')} - Constraints: ${constraints.join(', ')} - Mode: ${brainstormMode} ## Exploration Vectors ${explorationVectors.map((v, i) => `${i+1}. ${v}`).join('\n')} ## Initial Decisions > Record why these perspectives and focus areas were selected. --- ## Thought Evolution Timeline > Rounds will be appended below as brainstorming progresses. --- ## Decision Trail > Consolidated critical decisions across all rounds (populated in Phase 4). ` Write(`${sessionFolder}/brainstorm.md`, brainstormMd)
Success Criteria:
Objective: Gather codebase context and execute multi-perspective analysis to generate diverse viewpoints. All exploration done inline — no agent delegation.
##### Step 2.1: Detect Codebase & Explore
javascriptconst hasCodebase = functions.exec_command(` test -f package.json && echo "nodejs" || test -f go.mod && echo "golang" || test -f Cargo.toml && echo "rust" || test -f pyproject.toml && echo "python" || test -f pom.xml && echo "java" || test -d src && echo "generic" || echo "none" `).trim() if (hasCodebase !== 'none') { // 1. Read project metadata (if exists) // - Run `ccw spec load --category exploration` (load project specs) // - Run `ccw spec load --category debug` (known issues and root-cause notes) // - .workflow/specs/*.md (project conventions) // 2. Search codebase for relevant content // Use: Grep, Glob, Read, or mcp__ace-tool__search_context // Focus on: modules/components, patterns/structure, integration points, config/dependencies // 3. Write findings Write(`${sessionFolder}/exploration-codebase.json`, JSON.stringify({ project_type: hasCodebase, relevant_files: [...], // [{path, relevance, summary}] existing_patterns: [...], // [{pattern, files, description}] architecture_constraints: [...], // Constraints found integration_points: [...], // [{location, description}] key_findings: [...], // Main insights from code search _metadata: { timestamp: getUtc8ISOString(), exploration_scope: '...' } }, null, 2)) }
##### Step 2.2: Multi-Perspective Analysis (Serial, Inline)
Analyze from each selected perspective. All analysis done inline by the AI — no agents.
Perspective Definitions:
| Perspective | Focus | Tasks | |-------------|-------|-------| | Creative | Innovation, cross-domain | Think beyond obvious, explore cross-domain inspiration, challenge assumptions, generate moonshot ideas | | Pragmatic | Implementation reality | Evaluate feasibility, identify existing patterns/libraries, estimate complexity, highlight blockers | | Systematic | Architecture thinking | Decompose problem, identify architectural patterns, map dependencies, consider scalability |
Serial execution — analyze each perspective sequentially:
javascriptconst perspectives = ['creative', 'pragmatic', 'systematic'] perspectives.forEach(perspective => { // Analyze inline using exploration-codebase.json as context // Generate ideas from this perspective's focus Write(`${sessionFolder}/perspectives/${perspective}.json`, JSON.stringify({ perspective: perspective, ideas: [ // 3-5 ideas per perspective { title: '...', description: '...', novelty: 1-5, feasibility: 1-5, rationale: '...' } ], key_findings: [...], challenged_assumptions: [...], open_questions: [...], _metadata: { perspective, timestamp: getUtc8ISOString() } }, null, 2)) })
##### Step 2.3: Aggregate Multi-Perspective Findings
javascript// Update progress functions.update_plan([{ id: "phase-2", title: "Phase 2: Divergent Exploration", status: "in_progress" }]) const synthesis = { session_id: sessionId, timestamp: getUtc8ISOString(), topic, // Individual perspective findings creative: readJson(`${sessionFolder}/perspectives/creative.json`), pragmatic: readJson(`${sessionFolder}/perspectives/pragmatic.json`), systematic: readJson(`${sessionFolder}/perspectives/systematic.json`), // Cross-perspective synthesis synthesis: { convergent_themes: [...], // What all perspectives agree on conflicting_views: [...], // Where perspectives differ unique_contributions: [...] // Insights unique to specific perspectives }, // Aggregated for refinement aggregated_ideas: [...], // Merged and deduplicated ideas from all perspectives key_findings: [...] // Main insights across all perspectives } Write(`${sessionFolder}/perspectives.json`, JSON.stringify(synthesis, null, 2))
##### Step 2.3b: External Research (Optional)
Search for external inspiration, industry best practices, and prior art to enrich brainstorming context.
javascript// Triggered when: topic involves established patterns, industry trends, or competitive landscape const researchQueries = generateResearchQueries(topic, dimensions) researchQueries.forEach(query => { const results = web.run({ search_query: query }) // Extract: patterns, inspiration, best practices, case studies }) // Write research findings Write(`${sessionFolder}/research.json`, JSON.stringify({ queries: researchQueries, findings: [...], // [{source, insight, relevance_to_topic}] inspiration: [...], // Cross-domain ideas from external sources best_practices: [...], _metadata: { timestamp: getUtc8ISOString() } }, null, 2)) // Merge research findings into perspectives.json synthesis // Update convergent_themes and unique_contributions with external evidence
##### Step 2.4: Update brainstorm.md
Append Round 1 with exploration results using the Round Documentation Pattern.
Round 1 Sections (Multi-Perspective Exploration):
##### Step 2.5: Initial Idea Coverage Check
javascript// Check exploration vectors against Round 1 findings appendToBrainstorm(` #### Initial Idea Coverage Check (Post-Exploration) ${explorationVectors.map((vector, i) => { const status = assessCoverage(vector, explorationFindings) return `- ${status.icon} Vector ${i+1}: ${vector} — ${status.detail}` }).join('\n')} > Next rounds will focus on uncovered and in-progress vectors. `)
Success Criteria:
Objective: Iteratively refine ideas through multi-round user-guided exploration cycles. Max Rounds: 6. All analysis done inline.
Auto mode behavior (--yes):
Cumulative Context Rule: Each round's analysis MUST include ALL prior findings as context. Never analyze in isolation — always build on:
Record-Before-Continue Rule: MUST write round findings to brainstorm.md BEFORE updating Current Ideas or presenting next interaction.
##### Step 3.1: Present Findings & Gather User Direction
Current Understanding Summary (Round >= 2, BEFORE presenting new findings):
javascript// Update progress functions.update_plan([{ id: "phase-3", title: "Phase 3: Interactive Refinement", status: "in_progress" }]) if (!autoYes) { // Dynamic options based on round context const baseOptions = [ { label: "Deep Dive", description: "Explore selected ideas in detail" }, { label: "Diverge More", description: "Generate more ideas from different angles" }, { label: "Challenge", description: "Devil's advocate — test ideas critically" }, { label: "Merge Ideas", description: "Combine complementary ideas" } ] // Add research option if not yet done or if new angles emerged if (!researchDone || newAnglesEmerged) { baseOptions.push({ label: "外部研究", description: "Search for external inspiration and best practices" }) } // Always include converge as final option baseOptions.push({ label: "Ready to Converge", description: "Sufficient ideas, proceed to synthesis" }) const feedback = functions.request_user_input({ questions: [{ header: "Direction", // max 12 chars question: `Brainstorm round ${round}: What would you like to do next?`, multiSelect: false, options: baseOptions.slice(0, 4) // max 4 options per schema }] }) }
##### Step 3.2: Process User Response
Recording Checkpoint: Regardless of option selected, MUST record to brainstorm.md:
| Response | Action | |----------|--------| | Deep Dive | Ask which ideas to explore. Inline analysis: elaborate concept, identify requirements/dependencies, analyze challenges, suggest PoC approach, define success metrics. Write to ideas/{idea-slug}.md. | | Diverge More | Inline analysis with different angles: alternative framings, cross-domain inspiration, what-if scenarios, constraint relaxation. Generate new ideas. | | Challenge | Inline devil's advocate analysis: 3 strongest objections per idea, challenge assumptions, failure scenarios, competitive alternatives, survivability rating (1-5). | | Merge Ideas | Ask which ideas to merge. Inline synthesis: identify complementary elements, resolve contradictions, create unified concept, preserve strengths. Write to ideas/merged-idea-{n}.md. | | 外部研究 | Execute web.run with topic-specific queries. Search for: industry patterns, competitive solutions, best practices, academic research. Merge findings into current round. Update research.json. | | Ready to Converge | Record why concluding. Exit loop → Phase 4. |
##### Step 3.3: Deep Dive on Selected Ideas
When user selects "deep dive", provide comprehensive inline analysis:
javascript// For each selected idea, analyze inline selectedIdeas.forEach(idea => { const deepDive = { title: idea.title, detailed_description: '...', // Elaborated concept technical_requirements: [...], // Implementation needs dependencies: [...], // What this depends on challenges: [ // Risk/challenge matrix { challenge: '...', severity: 'high|medium|low', mitigation: '...' } ], poc_approach: '...', // Proof-of-concept suggestion success_metrics: [...], // How to measure success source_perspectives: [...] // Which perspectives contributed } Write(`${sessionFolder}/ideas/${ideaSlug}.md`, formatIdeaMarkdown(deepDive)) })
##### Step 3.4: Devil's Advocate Challenge
When user selects "challenge", perform inline critical analysis:
javascriptselectedIdeas.forEach(idea => { const challenge = { idea: idea.title, objections: [...], // 3+ strongest objections challenged_assumptions: [...], // Core assumptions tested failure_scenarios: [...], // When/how this fails alternatives: [...], // Competitive/alternative solutions survivability_rating: 1-5, // How well idea survives challenge strengthened_version: '...' // Improved version post-challenge } // Record in brainstorm.md })
##### Step 3.5: Merge Multiple Ideas
When user selects "merge", synthesize inline:
javascriptconst merged = { title: '...', // New merged concept name description: '...', // Unified concept description source_ideas: [...], // Which ideas were merged elements_from_each: [...], // What was taken from each source contradictions_resolved: [...], // How conflicts were handled combined_strengths: [...], // New combined advantages implementation_considerations: '...' } Write(`${sessionFolder}/ideas/merged-idea-${n}.md`, formatMergedIdeaMarkdown(merged))
##### Step 3.6: Document Each Round
Update brainstorm.md using the Round Documentation Pattern.
Append to Thought Evolution Timeline: User Direction, Decision Log, Ideas Generated/Updated, Analysis Results, Challenged Assumptions, Open Items, Narrative Synthesis.
Replace (not append):
| Section | Update Rule | |---------|-------------| | ## Current Ideas | Overwrite with latest ranked idea list | | ## Table of Contents | Update links to include new Round N sections |
Success Criteria:
ideas/ folder for selected deep-divesObjective: Synthesize final ideas, generate conclusions and recommendations, and offer next steps.
##### Step 4.1: Consolidate Insights
javascriptconst synthesis = { session_id: sessionId, topic, completed: getUtc8ISOString(), total_rounds: roundCount, top_ideas: [ // Top 5 ranked ideas { title: '...', description: '...', source_perspective: '...', score: 1-10, // Final viability score novelty: 1-5, // Innovation rating feasibility: 1-5, // Implementation feasibility key_strengths: [...], main_challenges: [...], next_steps: [...], review_status: 'accepted|modified|rejected|pending' } ], parked_ideas: [...], // Ideas for future consideration key_insights: [...], // Key learnings from brainstorming recommendations: { primary: '...', // Best path forward alternatives: [...] // Other viable options }, follow_up: [ // Suggested next steps { type: 'implement|research|validate', summary: '...' } ], decision_trail: [ // Consolidated from all phases { round: 1, decision: '...', context: '...', chosen: '...', reason: '...', impact: '...' } ] } Write(`${sessionFolder}/synthesis.json`, JSON.stringify(synthesis, null, 2))
##### Step 4.2: Final brainstorm.md Update
Synthesis & Conclusions:
Current Ideas (Final):
| Subsection | Content | |------------|---------| | Top Ideas | Ranked by score with strengths/challenges | | Idea Evolution | How top ideas developed across rounds | | Key Insights | Valuable learnings for future reference |
Decision Trail:
| Subsection | Content | |------------|---------| | Critical Decisions | Pivotal decisions that shaped the outcome | | Direction Changes | Timeline of scope/focus adjustments with rationale | | Trade-offs Made | Key trade-offs and why certain paths were chosen |
Session Statistics: Total rounds, ideas generated, ideas survived challenges, perspectives used, artifacts generated.
##### Step 4.3: Interactive Top-Idea Review (skip in auto mode)
Batch review of top ideas (max 4 questions per call, so group top ideas accordingly):
javascript// Update progress functions.update_plan([{ id: "phase-4", title: "Phase 4: Convergence & Crystallization", status: "in_progress" }]) if (!autoYes) { // Batch review: up to 4 ideas per functions.request_user_input call const batchSize = 4 for (let batch = 0; batch < rankedIdeas.length; batch += batchSize) { const batchIdeas = rankedIdeas.slice(batch, batch + batchSize) const review = functions.request_user_input({ questions: batchIdeas.map((idea, i) => ({ header: `Idea #${batch + i + 1}`, // max 12 chars question: `"${idea.title}" (score: ${idea.score}). Your decision:`, multiSelect: false, options: [ { label: "Accept", description: "Keep in final recommendations" }, { label: "Modify", description: "Adjust scope or priority" }, { label: "Reject", description: "Remove from recommendations" }, { label: "Accept Rest", description: "Accept all remaining ideas" } ] })) }) // Process: Accept → "accepted" | Modify → gather text → "modified" | Reject → "rejected" // Accept Rest → mark all remaining as "accepted", break outer loop // Record review decisions to brainstorm.md Decision Log + update synthesis.json } }
Review Summary (append to brainstorm.md):
markdown### Top Idea Review Summary | # | Idea | Score | Novelty | Feasibility | Review Status | Notes | |---|------|-------|---------|-------------|---------------|-------| | 1 | [title] | 8 | 4 | 3 | Accepted | | | 2 | [title] | 7 | 5 | 2 | Modified | [notes] | | 3 | [title] | 6 | 3 | 4 | Rejected | [reason] |
##### Step 4.4: MANDATORY Terminal Gate (Post-Completion Next Step)
CRITICAL: This gate MUST execute. The workflow MUST NOT end without this functions.request_user_input call.
javascript// Update progress — mark phase 4 complete, activate terminal gate functions.update_plan([ { id: "phase-4", title: "Phase 4: Convergence & Crystallization", status: "completed" }, { id: "next-step", title: "GATE: Post-Completion Next Step", status: "in_progress" } ]) const nextStep = functions.request_user_input({ questions: [{ header: "Next Step", // max 12 chars question: "Brainstorming complete. What would you like to do next?", multiSelect: false, options: [ { label: "Execute Task", description: "Build implementation scope and handoff spec from top ideas" }, { label: "Create Issue", description: "Convert top ideas into trackable issues" }, { label: "Done", description: "End workflow, all artifacts saved" } ] }] }) // Handle next step if (nextStep === "Execute Task") { // Build implementation scope from accepted ideas // Step A: Identify scope items from top ideas // Step B: Generate handoff-spec.json with implementation details // Step C: Write handoff-spec.json to session folder Write(`${sessionFolder}/handoff-spec.json`, JSON.stringify({ session_id: sessionId, topic, scope_items: acceptedIdeas.map(idea => ({ title: idea.title, description: idea.description, implementation_approach: idea.next_steps, priority: idea.score >= 8 ? 'high' : idea.score >= 5 ? 'medium' : 'low', estimated_complexity: idea.feasibility <= 2 ? 'high' : idea.feasibility <= 4 ? 'medium' : 'low' })), recommended_workflow: 'workflow-lite-plan or workflow-plan', _metadata: { generated: getUtc8ISOString(), source_session: sessionId } }, null, 2)) // Display: "Handoff spec created. Run /workflow-lite-plan to execute." } else if (nextStep === "Create Issue") { // Display command for user to run manually // "/issue:from-brainstorm ${sessionFolder}" or "/issue:new ..." } // Mark terminal gate complete functions.update_plan([ { id: "next-step", title: "GATE: Post-Completion Next Step", status: "completed" } ])
Success Criteria:
Each round follows this structure in brainstorm.md:
markdown### Round N - [DeepDive|Diverge|Challenge|Merge] (timestamp) #### User Input What the user indicated they wanted to focus on #### Decision Log <!-- Use Decision Record Format from Recording Protocol --> #### Ideas Generated New ideas from this round with ratings #### Analysis Results Detailed findings from this round's analysis - Finding 1 (evidence: file:line or rationale) - Finding 2 (evidence: file:line or rationale) #### Challenged Assumptions - ~~Previous assumption~~ → New understanding - Reason: Why the assumption was wrong #### Open Items Remaining questions or exploration directions #### Narrative Synthesis <!-- Use Narrative Synthesis Format from Recording Protocol -->
{projectRoot}/.workflow/.brainstorm/BS-{date}-{slug}/
├── brainstorm.md # Complete thought evolution timeline
├── exploration-codebase.json # Phase 2: Codebase context
├── perspectives/ # Phase 2: Individual perspective outputs
│ ├── creative.json
│ ├── pragmatic.json
│ └── systematic.json
├── perspectives.json # Phase 2: Aggregated findings with synthesis
├── research.json # Phase 2/3: External research findings (if web.run used)
├── synthesis.json # Phase 4: Final synthesis
├── handoff-spec.json # Phase 4: Implementation scope (if "Execute Task" selected)
└── ideas/ # Phase 3: Individual idea deep-dives
├── idea-1.md
├── idea-2.md
└── merged-idea-1.md| File | Phase | Description | |------|-------|-------------| | brainstorm.md | 1-4 | Session metadata → thought evolution → conclusions | | exploration-codebase.json | 2 | Codebase context: relevant files, patterns, constraints | | perspectives/*.json | 2 | Per-perspective idea generation results | | perspectives.json | 2 | Aggregated findings with cross-perspective synthesis | | research.json | 2-3 | External research: patterns, best practices, inspiration | | ideas/*.md | 3 | Individual idea deep-dives and merged ideas | | synthesis.json | 4 | Final synthesis: top ideas, recommendations, insights | | handoff-spec.json | 4 | Implementation scope and handoff (if Execute Task selected) |
| Dimension | Keywords | Description | |-----------|----------|-------------| | technical | 技术, technical, implementation, code, 实现, architecture | Implementation approaches | | ux | 用户, user, experience, UX, UI, 体验, interaction | User-facing design ideas | | business | 业务, business, value, ROI, 价值, market | Business model innovations | | innovation | 创新, innovation, novel, creative, 新颖 | Breakthrough ideas | | feasibility | 可行, feasible, practical, realistic, 实际 | Realistic approaches | | scalability | 扩展, scale, growth, performance, 性能 | Large-scale solutions | | security | 安全, security, risk, protection, 风险 | Security considerations |
| Perspective | Focus | Best For | |-------------|-------|----------| | Creative | Innovation, cross-domain inspiration, challenging assumptions | Generating novel and surprising ideas | | Pragmatic | Implementation feasibility, effort estimates, blockers | Reality-checking ideas | | Systematic | Problem decomposition, patterns, scalability, architecture | Organizing and structuring solutions |
| Mode | Intensity | Perspectives | Description | |------|-----------|-------------|-------------| | Creative | High novelty | 1 perspective | Fast, focus on novel ideas | | Balanced | Mixed | 3 perspectives | Moderate, balanced exploration (default) | | Deep | Comprehensive | 3 perspectives + deep refinement | Thorough multi-round investigation |
| Pattern | Usage | Description | |---------|-------|-------------| | Parallel Divergence | New topic | All perspectives explored serially for comprehensive coverage | | Sequential Deep-Dive | Promising idea | One perspective elaborates, others critique | | Debate Mode | Controversial approach | Inline analysis arguing for/against | | Synthesis Mode | Ready to decide | Inline synthesis combining insights from all perspectives |
Per-Perspective Limits:
Synthesis Protection:
Recovery Steps:
| Situation | Action | Recovery | |-----------|--------|----------| | No codebase detected | Normal flow, pure topic brainstorming | Proceed without exploration-codebase.json | | Codebase search fails | Continue with available context | Note limitation in brainstorm.md | | Web research fails | Continue without external findings | Note in brainstorm.md, rely on inline analysis | | Research conflicts with ideas | Present as competing evidence | Let user decide which direction to pursue | | No good ideas | Reframe problem or adjust constraints | Try new exploration angles | | Perspectives conflict | Present as tradeoff options | Let user select preferred direction | | Max rounds reached (6) | Force synthesis phase | Highlight unresolved questions | | Session folder conflict | Append timestamp suffix | Create unique folder | | User timeout | Save state, show resume command | Use --continue to resume |
Use brainstorm-with-file when:
Consider alternatives when:
analyze-with-filedebug-with-filecollaborative-plan-with-filelite-planNow start brainstorming for topic: $TOPIC
IMPORTANT: This skill is brainstorming-only. It produces analysis, perspectives, and synthesis documents but NEVER executes code, modifies source files, or auto-launches other skills. All follow-up actions require user to manually run the suggested commands.
Other measured skills in the registry, with their headline benchmark lift.