Brainstorming
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
Interactive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement.
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-file --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .claude/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .claude/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-fileType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-file --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .agents/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .agents/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-file --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .cursor/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .cursor/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/catlog22/Claude-Code-Workflow.git --path .codex/skills/brainstorm-with-file--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-file --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .gemini/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .gemini/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-fileInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .github/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .github/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install catlog22/Claude-Code-Workflow brainstorm-with-file --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/catlog22/Claude-Code-Workflow.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/brainstorm-with-file .opencode/skills/brainstorm-with-file && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "brainstorm-with-file" agent skill from https://github.com/catlog22/Claude-Code-Workflow/tree/main/.codex/skills/brainstorm-with-file into .opencode/skills/brainstorm-with-file/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "brainstorm-with-file", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
brainstorm-with-fileInteractive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement.
Brainstorm With File is an agent skill from catlog22/Claude-Code-Workflow. Interactive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement. Serial execution with no agent delegation.
Its SKILL.md is about 11k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Brainstorming. The repository describes itself as: JSON-driven multi-agent cadence-team development framework with intelligent CLI orchestration (Gemini/Qwen/Codex), context-first architecture, and automated workflow execution. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 07491b0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, markdown and bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Brainstorm With File loads about 11k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 2,402 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from catlog22/Claude-Code-Workflow at commit 07491b0, republished under its MIT licence (© catlog22). 2,402 words, ~11,081 tokens.
.claude/skills/brainstorm-with-file/SKILL.md (or your agent's skills folder).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.
# 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 |
> **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:
### 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]const 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.
Match topic keywords against brainstorm dimensions (see Dimensions Reference):
// 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)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:
For new brainstorm sessions, gather user preferences before exploration (skipped in auto mode or continue mode):
if (!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" }
]
}
]
})
}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.
const 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.
const 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))
}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:
const 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))
})// 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))Search for external inspiration, industry best practices, and prior art to enrich brainstorming context.
// 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 evidenceAppend Round 1 with exploration results using the Round Documentation Pattern.
Round 1 Sections (Multi-Perspective Exploration):
// 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.
Current Understanding Summary (Round >= 2, BEFORE presenting new findings):
// 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
}]
})
}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. |
When user selects "deep dive", provide comprehensive inline analysis:
// 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))
})When user selects "challenge", perform inline critical analysis:
selectedIdeas.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
})When user selects "merge", synthesize inline:
const 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))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.
const 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))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.
Batch review of top ideas (max 4 questions per call, so group top ideas accordingly):
// 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):
### 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] |CRITICAL: This gate MUST execute. The workflow MUST NOT end without this functions.request_user_input call.
// 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:
### 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.
© catlog22, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/brainstorm-with-file of catlog22/Claude-Code-Workflow.
Open the folder on GitHubat commit 07491b0
Brainstorm With File next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Brainstorm With File this skillcatlog22/Claude-Code-Workflow | 2.1k | — | ~11k | Automated safety check: Pass | MIT | |
| Brainstormingxpinjection/test-driven-spring-boot | 112 | 54 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Typesafe AIOpenAgentsInc/openagents | 455 | 9 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Yao Meta Skillyaojingang/yao-meta-skill | 2.7k | — | ~768 | Automated safety check: Pass | MIT | |
| Trellis StartROYIANS/foliq-print-template-designer | 135 | 6 repos | ~646 | Automated safety check: Pass | MIT | |
| Brainstorming Before BuildingjnMetaCode/superpowers-zh | 8.3k | — | ~1.8k | Automated safety check: Pass | MIT |
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
OpenAgentsInc/openagents
Build AI-powered software with TypeSafe: small units of AI intelligence you can use like programming primitives.
yaojingang/yao-meta-skill
Create, improve, or evaluate an existing skill from workflows, prompts, SOPs, scripts.
ROYIANS/foliq-print-template-designer
Initializes an AI development session by reading workflow guides, developer identity, git status, active tasks, and project guidelines from .trellis/.
jnMetaCode/superpowers-zh
Turns a rough idea into an approved design before any code is written, sorting the request into spike, bounded or architectural and enforcing an approval gate.
go-musicfox/go-musicfox
Divergent conversation before any artifact exists — open questions one at a time, alternatives including building nothing, converging on a routing decision and a handoff brief for the next skill.
catlog22/Claude-Code-Workflow
CCW command help system. An agent skill from catlog22/Claude-Code-Workflow.
catlog22/Claude-Code-Workflow
Unified brainstorming skill with dual-mode operation — auto mode (framework generation, parallel multi-role analysis, cross-role synthesis) and single role analysis.
catlog22/Claude-Code-Workflow
Chain-based CCW workflow orchestrator. An agent skill from catlog22/Claude-Code-Workflow.
catlog22/Claude-Code-Workflow
Check workflow delegation prompts against agent role definitions for content separation violations.
catlog22/Claude-Code-Workflow
Systematic debugging with Iron Law methodology. An agent skill from catlog22/Claude-Code-Workflow.
catlog22/Claude-Code-Workflow
Unified issue discovery and creation. An agent skill from catlog22/Claude-Code-Workflow.
Categories
Interactive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement. Brainstorm With File is an agent skill from catlog22/Claude-Code-Workflow. Interactive brainstorming with documented thought evolution, multi-perspective analysis, and iterative refinement.
Brainstorm With File fits situations like: tasks that involve Brainstorming.
Run `npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a claude-code`. Or copy the skill folder (.codex/skills/brainstorm-with-file in catlog22/Claude-Code-Workflow) into .claude/skills/brainstorm-with-file in your project. Claude Code loads it when a task matches its description.
Run `npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a codex`. Or copy the skill folder (.codex/skills/brainstorm-with-file in catlog22/Claude-Code-Workflow) into .agents/skills/brainstorm-with-file in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add catlog22/Claude-Code-Workflow --skill brainstorm-with-file -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/brainstorm-with-file, .gemini/skills/brainstorm-with-file, .github/skills/brainstorm-with-file and .opencode/skills/brainstorm-with-file in your project.
SKILL.md names no scripts, command-line tools or credentials: Brainstorm With File is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Brainstorm With File is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 11k tokens (SKILL.md is roughly 44k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Brainstorm With File: Brainstorming (xpinjection/test-driven-spring-boot, 112 stars), Typesafe AI (OpenAgentsInc/openagents, 455 stars), Yao Meta Skill (yaojingang/yao-meta-skill, 2.7k stars) and Trellis Start (ROYIANS/foliq-print-template-designer, 135 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
catlog22 (a GitHub user) maintains it in catlog22/Claude-Code-Workflow, which has 2,130 GitHub stars. The repository holds 82 skills in this directory. The repository was last updated on June 18, 2026.
Source: catlog22/Claude-Code-Workflow on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.