
Team Brainstorm
- 62 installs
- 2.1k repo stars
- Updated June 18, 2026
- catlog22/claude-code-workflow
Support for team-brainstorm
About
Provides workflow support for team-brainstorm. Solo builders use this to streamline development.
- team-brainstorm
Team Brainstorm by the numbers
- 62 all-time installs (skills.sh)
- Ranked #1,543 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/catlog22/claude-code-workflow --skill team-brainstormAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 62 |
|---|---|
| repo stars | ★ 2.1k |
| Last updated | June 18, 2026 |
| Repository | catlog22/claude-code-workflow ↗ |
What it does
Support for team-brainstorm
Files
Team Brainstorm
Orchestrate multi-agent brainstorming: generate ideas → challenge assumptions → synthesize → evaluate. Supports Quick, Deep, and Full pipelines with Generator-Critic loop.
Architecture
Skill(skill="team-brainstorm", args="topic description")
|
SKILL.md (this file) = Router
|
+--------------+--------------+
| |
no --role flag --role <name>
| |
Coordinator Worker
roles/coordinator/role.md roles/<name>/role.md
|
+-- analyze → dispatch → spawn workers → STOP
|
+-------+-------+-------+
v v v v
[ideator][challenger][synthesizer][evaluator]Role Registry
| Role | Path | Prefix | Inner Loop |
|---|---|---|---|
| coordinator | roles/coordinator/role.md | — | — |
| ideator | roles/ideator/role.md | IDEA-* | false |
| challenger | roles/challenger/role.md | CHALLENGE-* | false |
| synthesizer | roles/synthesizer/role.md | SYNTH-* | false |
| evaluator | roles/evaluator/role.md | EVAL-* | false |
Role Router
Parse $ARGUMENTS:
- Has
--role <name>→ Readroles/<name>/role.md, execute Phase 2-4 - No
--role→@roles/coordinator/role.md, execute entry router
Shared Constants
- Session prefix:
BRS - Session path:
.workflow/.team/BRS-<slug>-<date>/ - CLI tools:
ccw cli --mode analysis(read-only),ccw cli --mode write(modifications) - Message bus:
mcp__ccw-tools__team_msg(session_id=<session-id>, ...)
Worker Spawn Template
Coordinator spawns workers using this template:
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker",
team_name: "brainstorm",
name: "<role>",
run_in_background: true,
prompt: `## Role Assignment
role: <role>
role_spec: <skill_root>/roles/<role>/role.md
session: <session-folder>
session_id: <session-id>
team_name: brainstorm
requirement: <topic-description>
inner_loop: false
## Progress Milestones
session_id: <session-id>
Report progress via team_msg at natural phase boundaries (context loaded -> core work done -> verification).
Report blockers immediately via team_msg type="blocker".
Report completion via team_msg type="task_complete" after final SendMessage.
Read role_spec file (@<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
})Parallel ideator spawn (Full pipeline with N angles):
When Full pipeline has N parallel IDEA tasks, spawn N distinct team-worker agents named ideator-1, ideator-2, etc.
Agent({
subagent_type: "team-worker",
name: "ideator-<N>",
team_name: "brainstorm",
run_in_background: true,
prompt: `## Role Assignment
role: ideator
role_spec: <skill_root>/roles/ideator/role.md
session: <session-folder>
session_id: <session-id>
team_name: brainstorm
requirement: <topic-description>
agent_name: ideator-<N>
inner_loop: false
## Progress Milestones
session_id: <session-id>
Report progress via team_msg at natural phase boundaries (context loaded -> core work done -> verification).
Report blockers immediately via team_msg type="blocker".
Report completion via team_msg type="task_complete" after final SendMessage.
Read role_spec file (@<skill_root>/roles/ideator/role.md) to load Phase 2-4 domain instructions.
Execute built-in Phase 1 (task discovery, owner=ideator-<N>) -> role Phase 2-4 -> built-in Phase 5 (report).`
})User Commands
| Command | Action |
|---|---|
check / status | View execution status graph, no advancement |
resume / continue | Check worker states, advance next step |
Session Directory
.workflow/.team/BRS-<slug>-<date>/
├── session.json # Session metadata + pipeline + gc_round
├── task-analysis.json # Coordinator analyze output
├── .msg/
│ ├── messages.jsonl # Message bus log
│ └── meta.json # Session state + cross-role state
├── wisdom/ # Cross-task knowledge
│ ├── learnings.md
│ ├── decisions.md
│ ├── conventions.md
│ └── issues.md
├── ideas/ # Ideator output
│ ├── idea-001.md
│ └── idea-002.md
├── critiques/ # Challenger output
│ ├── critique-001.md
│ └── critique-002.md
├── synthesis/ # Synthesizer output
│ └── synthesis-001.md
└── evaluation/ # Evaluator output
└── evaluation-001.mdSpecs Reference
- specs/pipelines.md — Pipeline definitions and task registry
Error Handling
| Scenario | Resolution |
|---|---|
| Unknown command | Error with available command list |
| Role not found | Error with role registry |
| CLI tool fails | Worker fallback to direct implementation |
| Fast-advance conflict | Coordinator reconciles on next callback |
| Completion action fails | Default to Keep Active |
| Generator-Critic loop exceeds 2 rounds | Force convergence to synthesizer |
| No ideas generated | Coordinator prompts with seed questions |
Challenger
Devil's advocate role. Assumption challenging, feasibility questioning, risk identification. Acts as the Critic in the Generator-Critic loop.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| Session folder | Task description (Session: line) | Yes |
| Ideas | <session>/ideas/*.md files | Yes |
| Previous critiques | <session>/.msg/meta.json critique_insights | No |
1. Extract session path from task description (match "Session: <path>") 2. Glob idea files from <session>/ideas/ 3. Read all idea files for analysis 4. Read .msg/meta.json critique_insights to avoid repeating past challenges
Phase 3: Critical Analysis
Challenge Dimensions (apply to each idea):
| Dimension | Focus |
|---|---|
| Assumption Validity | Does the core assumption hold? Counter-examples? |
| Feasibility | Technical/resource/time feasibility? |
| Risk Assessment | Worst case scenario? Hidden risks? |
| Competitive Analysis | Better alternatives already exist? |
Severity Classification:
| Severity | Criteria |
|---|---|
| CRITICAL | Fundamental issue, idea may need replacement |
| HIGH | Significant flaw, requires revision |
| MEDIUM | Notable weakness, needs consideration |
| LOW | Minor concern, does not invalidate the idea |
Generator-Critic Signal:
| Condition | Signal |
|---|---|
| Any CRITICAL or HIGH severity | REVISION_NEEDED |
| All MEDIUM or lower | CONVERGED |
Output: Write to <session>/critiques/critique-<num>.md
- Sections: Ideas Reviewed, Per-idea challenges with severity, Summary table with counts, GC Signal
Phase 4: Severity Summary
1. Count challenges by severity level 2. Determine signal: REVISION_NEEDED if critical+high > 0, else CONVERGED 3. Update shared state:
- Append challenges to .msg/meta.json critique_insights
- Each entry: idea, severity, key_challenge, round
Analyze Task
Parse user topic -> detect brainstorming capabilities -> assess complexity -> select pipeline.
CONSTRAINT: Text-level analysis only. NO source code reading, NO codebase exploration.
Signal Detection
| Keywords | Capability | Prefix |
|---|---|---|
| generate, create, brainstorm, ideas, explore | ideator | IDEA |
| challenge, critique, argue, devil, risk | challenger | CHALLENGE |
| synthesize, integrate, combine, merge, themes | synthesizer | SYNTH |
| evaluate, score, rank, prioritize, select | evaluator | EVAL |
Dependency Graph
Natural ordering tiers:
- Tier 0: ideator (divergent generation -- no dependencies)
- Tier 1: challenger (requires ideator output)
- Tier 2: ideator-revision (requires challenger output, GC loop)
- Tier 3: synthesizer (requires last challenger output)
- Tier 4: evaluator (requires synthesizer output, deep/full only)
Complexity Scoring
| Factor | Points |
|---|---|
| Per capability needed | +1 |
| Strategic/systemic topic | +3 |
| Multi-dimensional analysis | +2 |
| Innovation-focused request | +2 |
| Simple/basic topic | -2 |
Results: 0-1 Low (quick), 2-3 Medium (deep), 4+ High (full)
Pipeline Selection
| Complexity | Pipeline | Tasks |
|---|---|---|
| Low | quick | IDEA → CHALLENGE → SYNTH |
| Medium | deep | IDEA → CHALLENGE → IDEA-fix → CHALLENGE-2 → SYNTH → EVAL |
| High | full | 3x IDEA (parallel) → CHALLENGE → IDEA-fix → SYNTH → EVAL |
Output
Write <session>/task-analysis.json:
{
"task_description": "<original>",
"pipeline_type": "<quick|deep|full>",
"capabilities": [{ "name": "<cap>", "prefix": "<PREFIX>", "keywords": ["..."] }],
"dependency_graph": { "<TASK-ID>": { "role": "<role>", "blockedBy": ["..."], "priority": "P0|P1|P2" } },
"roles": [{ "name": "<role>", "prefix": "<PREFIX>", "inner_loop": false }],
"complexity": { "score": 0, "level": "Low|Medium|High" },
"angles": ["Technical", "Product", "Innovation", "Risk"]
}Command: Dispatch
Create the brainstorm task chain with correct dependencies and structured task descriptions based on selected pipeline mode.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| User topic | From coordinator Phase 1 | Yes |
| Session folder | From coordinator Phase 2 | Yes |
| Pipeline mode | From session.json pipeline | Yes |
| Angles | From session.json angles | Yes |
1. Load topic, pipeline mode, and angles from session.json 2. Determine task chain from pipeline mode
Phase 3: Task Chain Creation
Task Description Template
Every task description uses structured format:
TaskCreate({
subject: "<TASK-ID>",
description: "PURPOSE: <what this task achieves> | Success: <completion criteria>
TASK:
- <step 1>
- <step 2>
- <step 3>
CONTEXT:
- Session: <session-folder>
- Topic: <topic>
- Angles: <angle-list>
- Upstream artifacts: <artifact-list>
EXPECTED: <deliverable path> + <quality criteria>
CONSTRAINTS: <scope limits>
---
InnerLoop: false"
})
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })Pipeline Router
| Mode | Action |
|---|---|
| quick | Create 3 tasks (IDEA -> CHALLENGE -> SYNTH) |
| deep | Create 6 tasks (IDEA -> CHALLENGE -> IDEA-fix -> CHALLENGE-2 -> SYNTH -> EVAL) |
| full | Create 7 tasks (3 parallel IDEAs -> CHALLENGE -> IDEA-fix -> SYNTH -> EVAL) |
---
Quick Pipeline
IDEA-001 (ideator):
TaskCreate({
subject: "IDEA-001",
description: "PURPOSE: Generate multi-angle ideas for brainstorm topic | Success: >= 6 unique ideas across all angles
TASK:
- Read topic and angles from session context
- Generate 3+ ideas per angle with title, description, assumption, impact
- Self-review for coverage and uniqueness
CONTEXT:
- Session: <session-folder>
- Topic: <topic>
- Angles: <angle-list>
EXPECTED: <session>/ideas/idea-001.md with >= 6 ideas
CONSTRAINTS: Divergent thinking only, no evaluation
---
InnerLoop: false"
})
TaskUpdate({ taskId: "IDEA-001", owner: "ideator" })CHALLENGE-001 (challenger):
TaskCreate({
subject: "CHALLENGE-001",
description: "PURPOSE: Challenge assumptions and assess feasibility of generated ideas | Success: Each idea rated by severity
TASK:
- Read all idea files from ideas/ directory
- Challenge each idea across 4 dimensions (assumption, feasibility, risk, competition)
- Assign severity (CRITICAL/HIGH/MEDIUM/LOW) per idea
- Determine GC signal (REVISION_NEEDED or CONVERGED)
CONTEXT:
- Session: <session-folder>
- Upstream artifacts: ideas/idea-001.md
EXPECTED: <session>/critiques/critique-001.md with severity table and GC signal
CONSTRAINTS: Critical analysis only, do not generate alternative ideas
---
InnerLoop: false"
})
TaskUpdate({ taskId: "CHALLENGE-001", addBlockedBy: ["IDEA-001"], owner: "challenger" })SYNTH-001 (synthesizer):
TaskCreate({
subject: "SYNTH-001",
description: "PURPOSE: Synthesize ideas and critiques into integrated proposals | Success: >= 1 consolidated proposal
TASK:
- Read all ideas and critiques
- Extract themes, resolve conflicts, group complementary ideas
- Generate 1-3 integrated proposals with feasibility and innovation scores
CONTEXT:
- Session: <session-folder>
- Upstream artifacts: ideas/*.md, critiques/*.md
EXPECTED: <session>/synthesis/synthesis-001.md with proposals
CONSTRAINTS: Integration and synthesis only, no new ideas
---
InnerLoop: false"
})
TaskUpdate({ taskId: "SYNTH-001", addBlockedBy: ["CHALLENGE-001"], owner: "synthesizer" })Deep Pipeline
Creates all 6 tasks. First 2 same as Quick, then:
IDEA-002 (ideator, GC revision):
TaskCreate({
subject: "IDEA-002",
description: "PURPOSE: Revise ideas based on critique feedback (GC Round 1) | Success: HIGH/CRITICAL challenges addressed
TASK:
- Read critique feedback from critiques/
- Revise challenged ideas, replace unsalvageable ones
- Retain unchallenged ideas intact
CONTEXT:
- Session: <session-folder>
- Upstream artifacts: critiques/critique-001.md
EXPECTED: <session>/ideas/idea-002.md with revised ideas
CONSTRAINTS: Address critique only, focused revision
---
InnerLoop: false"
})
TaskUpdate({ taskId: "IDEA-002", addBlockedBy: ["CHALLENGE-001"], owner: "ideator" })CHALLENGE-002 (challenger, round 2):
TaskCreate({
subject: "CHALLENGE-002",
description: "PURPOSE: Validate revised ideas (GC Round 2) | Success: Severity assessment of revised ideas
TASK:
- Read revised idea files
- Re-evaluate previously challenged ideas
- Assess new replacement ideas
CONTEXT:
- Session: <session-folder>
- Upstream artifacts: ideas/idea-002.md
EXPECTED: <session>/critiques/critique-002.md
CONSTRAINTS: Focus on revised/new ideas
---
InnerLoop: false"
})
TaskUpdate({ taskId: "CHALLENGE-002", addBlockedBy: ["IDEA-002"], owner: "challenger" })SYNTH-001 blocked by CHALLENGE-002. EVAL-001 blocked by SYNTH-001:
TaskCreate({
subject: "EVAL-001",
description: "PURPOSE: Score and rank synthesized proposals | Success: Ranked list with weighted scores
TASK:
- Read synthesis results
- Score each proposal across 4 dimensions (Feasibility 30%, Innovation 25%, Impact 25%, Cost 20%)
- Generate final ranking and recommendation
CONTEXT:
- Session: <session-folder>
- Upstream artifacts: synthesis/synthesis-001.md
EXPECTED: <session>/evaluation/evaluation-001.md with scoring matrix
CONSTRAINTS: Evaluation only, no new proposals
---
InnerLoop: false"
})
TaskUpdate({ taskId: "EVAL-001", addBlockedBy: ["SYNTH-001"], owner: "evaluator" })Full Pipeline
Creates 7 tasks. Parallel ideators:
| Task | Owner | BlockedBy |
|---|---|---|
| IDEA-001 | ideator-1 | (none) |
| IDEA-002 | ideator-2 | (none) |
| IDEA-003 | ideator-3 | (none) |
| CHALLENGE-001 | challenger | IDEA-001, IDEA-002, IDEA-003 |
| IDEA-004 | ideator | CHALLENGE-001 |
| SYNTH-001 | synthesizer | IDEA-004 |
| EVAL-001 | evaluator | SYNTH-001 |
Each parallel IDEA task scoped to a specific angle from the angles list.
Phase 4: Validation
1. Verify all tasks created with TaskList() 2. Check dependency chain integrity:
- No circular dependencies
- All blockedBy references exist
- First task(s) have empty blockedBy
3. Log task count and pipeline mode
Monitor Pipeline
Event-driven pipeline coordination. Beat model: coordinator wake -> process -> spawn -> STOP.
Constants
- SPAWN_MODE: background
- ONE_STEP_PER_INVOCATION: true
- FAST_ADVANCE_AWARE: true
- WORKER_AGENT: team-worker
- MAX_GC_ROUNDS: 2
Handler Router
| Source | Handler |
|---|---|
| Message contains [ideator], [challenger], [synthesizer], [evaluator] | handleCallback |
| "consensus_blocked" | handleConsensus |
| "capability_gap" | handleAdapt |
| "check" or "status" | handleCheck |
| "resume" or "continue" | handleResume |
| All tasks completed | handleComplete |
| Default | handleSpawnNext |
handleCallback
Worker completed. Process and advance.
1. Parse message to identify role and task ID:
| Message Pattern | Role Detection |
|---|---|
[ideator] or task ID IDEA-* | ideator |
[challenger] or task ID CHALLENGE-* | challenger |
[synthesizer] or task ID SYNTH-* | synthesizer |
[evaluator] or task ID EVAL-* | evaluator |
2. Mark task as completed: TaskUpdate({ taskId: "<task-id>", status: "completed" }) 3. Record completion in session state 4. Generator-Critic check (when challenger completes):
- If completed task is CHALLENGE-* AND pipeline is deep or full:
- Read critique file for GC signal
- Read .msg/meta.json for gc_round
| GC Signal | gc_round < max | Action |
|---|---|---|
| REVISION_NEEDED | Yes | Increment gc_round, unblock IDEA-fix task |
| REVISION_NEEDED | No (>= max) | Force convergence, unblock SYNTH |
| CONVERGED | - | Unblock SYNTH (skip remaining GC tasks) |
- Log team_msg with type "gc_loop_trigger" or "task_unblocked"
- If skipping GC tasks, mark them as completed (skip)
5. Proceed to handleSpawnNext
handleCheck
Read-only status report, then STOP.
Worker Progress (from message bus):
Before generating status output, read worker milestones:
const progressMsgs = mcp__ccw-tools__team_msg({
operation: "list", session_id: sessionId, type: "progress", last: 50
})
const blockerMsgs = mcp__ccw-tools__team_msg({
operation: "list", session_id: sessionId, type: "blocker", last: 10
})
// Aggregate latest milestone per task
const taskProgress = {}
for (const msg of (progressMsgs.result?.messages || [])) {
const tid = msg.data?.task_id
if (tid && (!taskProgress[tid] || msg.ts > taskProgress[tid].ts)) {
taskProgress[tid] = { phase: msg.data.phase, pct: msg.data.progress_pct, ts: msg.ts }
}
}Include in status output:
- Per-worker latest milestone (phase + progress_pct) next to task status
- Active blockers section (if any blockerMsgs found)
[coordinator] Pipeline Status (<pipeline-mode>)
[coordinator] Progress: <done>/<total> (<pct>%)
[coordinator] Active: <workers with elapsed time>
[coordinator] Ready: <pending tasks with resolved deps>
[coordinator] GC Rounds: <gc_round>/<max_gc_rounds>
[coordinator] Commands: 'resume' to advance | 'check' to refreshhandleResume
1. Audit task list: Tasks stuck in "in_progress" -> reset to "pending" 2. Proceed to handleSpawnNext
handleSpawnNext
Find ready tasks, spawn workers, STOP.
1. Collect: completedSubjects, inProgressSubjects, readySubjects 2. No ready + work in progress -> report waiting, STOP 3. No ready + nothing in progress -> handleComplete 4. Has ready -> for each: a. TaskUpdate -> in_progress b. team_msg log -> task_unblocked c. Spawn team-worker (see SKILL.md Spawn Template):
Agent({
subagent_type: "team-worker",
description: "Spawn <role> worker for <task-id>",
team_name: "brainstorm",
name: "<role>",
run_in_background: true,
prompt: `## Role Assignment
role: <role>
role_spec: ~ or <project>/.claude/skills/team-brainstorm/roles/<role>/role.md
session: <session-folder>
session_id: <session-id>
team_name: brainstorm
requirement: <task-description>
inner_loop: false
## Progress Milestones
session_id: <session-id>
Report progress via team_msg at natural phase boundaries (context loaded -> core work done -> verification).
Report blockers immediately via team_msg type="blocker".
Report completion via team_msg type="task_complete" after final SendMessage.
Read role_spec file to load Phase 2-4 domain instructions.
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
})d. Add to active_workers 5. Parallel spawn rules:
| Pipeline | Scenario | Spawn Behavior |
|---|---|---|
| Quick | Single sequential | One worker at a time |
| Deep | Sequential with GC | One worker at a time |
| Full | IDEA-001/002/003 unblocked | Spawn ALL 3 ideator workers in parallel |
| Full | Other stages | One worker at a time |
Parallel ideator spawn (Full pipeline):
Agent({
subagent_type: "team-worker",
name: "ideator-<N>",
...
prompt: `...agent_name: ideator-<N>...`
})6. Update session, output summary, STOP
handleComplete
Pipeline done. Generate report and completion action.
Completion check by mode:
| Mode | Completion Condition |
|---|---|
| quick | All 3 tasks completed |
| deep | All 6 tasks (+ any skipped GC tasks) completed |
| full | All 7 tasks (+ any skipped GC tasks) completed |
1. Verify all tasks completed via TaskList() 2. If any tasks not completed, return to handleSpawnNext 3. If all completed -> transition to coordinator Phase 5
handleConsensus
Handle consensus_blocked signals.
| Severity | Action |
|---|---|
| HIGH | Pause pipeline, notify user with findings summary |
| MEDIUM | Log finding, attempt to continue |
| LOW | Log finding, continue pipeline |
handleAdapt
Capability gap reported mid-pipeline.
1. Parse gap description 2. Check if existing role covers it -> redirect 3. Role count < 5 -> generate dynamic role-spec in <session>/role-specs/ 4. Create new task, spawn worker 5. Role count >= 5 -> merge or pause
Fast-Advance Reconciliation
On every coordinator wake: 1. Read team_msg entries with type="fast_advance" 2. Sync active_workers with spawned successors 3. No duplicate spawns
Coordinator
Orchestrate team-brainstorm: topic clarify -> dispatch -> spawn -> monitor -> report.
Identity
- Name: coordinator | Tag: [coordinator]
- Responsibility: Topic clarification -> Create team -> Dispatch tasks -> Monitor progress -> Report results
Boundaries
MUST
- Use
team-workeragent type for all worker spawns (NOTgeneral-purpose) - Follow Command Execution Protocol for dispatch and monitor commands
- Respect pipeline stage dependencies (blockedBy)
- Stop after spawning workers -- wait for callbacks
- Manage Generator-Critic loop count (max 2 rounds)
- Execute completion action in Phase 5
MUST NOT
- Generate ideas, challenge assumptions, synthesize, or evaluate -- workers handle this
- Spawn workers without creating tasks first
- Force-advance pipeline past GC loop decisions
- Modify artifact files (ideas/.md, critiques/.md, etc.) -- delegate to workers
- Skip GC severity check when critique arrives
Command Execution Protocol
When coordinator needs to execute a specific phase: 1. Read commands/<command>.md 2. Follow the workflow defined in the command 3. Commands are inline execution guides, NOT separate agents 4. Execute synchronously, complete before proceeding
Entry Router
| Detection | Condition | Handler |
|---|---|---|
| Worker callback | Message contains [ideator], [challenger], [synthesizer], [evaluator] | -> handleCallback (monitor.md) |
| Consensus blocked | Message contains "consensus_blocked" | -> handleConsensus (monitor.md) |
| Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
| Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
| Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
| Pipeline complete | All tasks completed | -> handleComplete (monitor.md) |
| Interrupted session | Active session in .workflow/.team/BRS-* | -> Phase 0 |
| New session | None of above | -> Phase 1 |
For callback/check/resume/consensus/adapt/complete: load @commands/monitor.md, execute handler, STOP.
Phase 0: Session Resume Check
1. Scan .workflow/.team/BRS-*/session.json for active/paused sessions 2. No sessions -> Phase 1 3. Single session -> reconcile (audit TaskList, reset in_progress->pending, rebuild team, kick first ready task) 4. Multiple -> AskUserQuestion for selection
Phase 1: Topic Clarification + Complexity Assessment
TEXT-LEVEL ONLY. No source code reading.
1. Parse topic from $ARGUMENTS 2. Assess topic complexity:
| Signal | Weight | Keywords |
|---|---|---|
| Strategic/systemic | +3 | strategy, architecture, system, framework, paradigm |
| Multi-dimensional | +2 | multiple, compare, tradeoff, versus, alternative |
| Innovation-focused | +2 | innovative, creative, novel, breakthrough |
| Simple/basic | -2 | simple, quick, straightforward, basic |
| Score | Complexity | Pipeline Recommendation |
|---|---|---|
| >= 4 | High | full |
| 2-3 | Medium | deep |
| 0-1 | Low | quick |
3. AskUserQuestion for pipeline mode and divergence angles 4. Store requirements: mode, scope, angles, constraints
Phase 2: Create Team + Initialize Session
1. Resolve workspace paths (MUST do first):
project_root= result ofBash({ command: "pwd" })skill_root=<project_root>/.claude/skills/team-brainstorm
2. Generate session ID: BRS-<topic-slug>-<date> 3. Create session folder structure: ideas/, critiques/, synthesis/, evaluation/, wisdom/, .msg/ 4. TeamCreate with team name brainstorm 5. Write session.json with pipeline, angles, gc_round=0, max_gc_rounds=2 6. Initialize meta.json via team_msg state_update:
mcp__ccw-tools__team_msg({
operation: "log", session_id: "<id>", from: "coordinator",
type: "state_update", summary: "Session initialized",
data: { pipeline_mode: "<mode>", pipeline_stages: ["ideator","challenger","synthesizer","evaluator"], team_name: "brainstorm", topic: "<topic>", angles: [...], gc_round: 0 }
})7. Write session.json
Phase 3: Create Task Chain
Delegate to @commands/dispatch.md: 1. Read pipeline mode and angles from session.json 2. Create tasks for selected pipeline, then set dependencies via TaskUpdate({ addBlockedBy }) 3. Update session.json with task count
Phase 4: Spawn-and-Stop
Delegate to @commands/monitor.md#handleSpawnNext: 1. Find ready tasks (pending + blockedBy resolved) 2. Spawn team-worker agents (see SKILL.md Spawn Template) 3. Output status summary 4. STOP
Phase 5: Report + Completion Action
1. Load session state -> count completed tasks, calculate duration 2. List deliverables:
| Deliverable | Path |
|---|---|
| Ideas | <session>/ideas/*.md |
| Critiques | <session>/critiques/*.md |
| Synthesis | <session>/synthesis/*.md |
| Evaluation | <session>/evaluation/*.md (deep/full only) |
3. Output pipeline summary: topic, pipeline mode, GC rounds, total ideas, key themes
4. Execute completion action per session.completion_action:
- interactive -> AskUserQuestion (Archive/Keep/Export)
- auto_archive -> Archive & Clean (status=completed, TeamDelete)
- auto_keep -> Keep Active (status=paused)
Error Handling
| Error | Resolution |
|---|---|
| Task too vague | AskUserQuestion for clarification |
| Session corruption | Attempt recovery, fallback to manual |
| Worker crash | Reset task to pending, respawn |
| GC loop exceeded | Force convergence to synthesizer |
| No ideas generated | Coordinator prompts with seed questions |
Evaluator
Scoring, ranking, and final selection. Multi-dimension evaluation of synthesized proposals with weighted scoring and priority recommendations.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| Session folder | Task description (Session: line) | Yes |
| Synthesis results | <session>/synthesis/*.md files | Yes |
| All ideas | <session>/ideas/*.md files | No (for context) |
| All critiques | <session>/critiques/*.md files | No (for context) |
1. Extract session path from task description (match "Session: <path>") 2. Glob synthesis files from <session>/synthesis/ 3. Read all synthesis files for evaluation 4. Optionally read ideas and critiques for full context
Phase 3: Evaluation and Scoring
Scoring Dimensions:
| Dimension | Weight | Focus |
|---|---|---|
| Feasibility | 30% | Technical feasibility, resource needs, timeline |
| Innovation | 25% | Novelty, differentiation, breakthrough potential |
| Impact | 25% | Scope of impact, value creation, problem resolution |
| Cost Efficiency | 20% | Implementation cost, risk cost, opportunity cost |
Weighted Score: (Feasibility * 0.30) + (Innovation * 0.25) + (Impact * 0.25) + (Cost * 0.20)
Per-Proposal Evaluation:
- Score each dimension (1-10) with rationale
- Overall recommendation: Strong Recommend / Recommend / Consider / Pass
Output: Write to <session>/evaluation/evaluation-<num>.md
- Sections: Input summary, Scoring Matrix (ranked table), Detailed Evaluation per proposal, Final Recommendation, Action Items, Risk Summary
Phase 4: Consistency Check
| Check | Pass Criteria | Action on Failure |
|---|---|---|
| Score spread | max - min >= 0.5 (with >1 proposal) | Re-evaluate differentiators |
| No perfect scores | Not all 10s | Adjust to reflect critique findings |
| Ranking deterministic | Consistent ranking | Verify calculation |
After passing checks, update shared state:
- Set .msg/meta.json evaluation_scores
- Each entry: title, weighted_score, rank, recommendation
Ideator
Multi-angle idea generator. Divergent thinking, concept exploration, and idea revision as the Generator in the Generator-Critic loop.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| Session folder | Task description (Session: line) | Yes |
| Topic | <session>/.msg/meta.json | Yes |
| Angles | <session>/.msg/meta.json | Yes |
| GC Round | <session>/.msg/meta.json | Yes |
| Previous critique | <session>/critiques/*.md | For revision tasks only |
| Previous ideas | <session>/.msg/meta.json generated_ideas | No |
1. Extract session path from task description (match "Session: <path>") 2. Read .msg/meta.json for topic, angles, gc_round 3. Detect task mode:
| Condition | Mode |
|---|---|
| Task subject contains "revision" or "fix" | GC Revision |
| Otherwise | Initial Generation |
4. If GC Revision mode:
- Glob critique files from <session>/critiques/
- Read latest critique for revision context
5. Read previous ideas from .msg/meta.json generated_ideas state
Phase 3: Idea Generation
Mode Router
| Mode | Focus |
|---|---|
| Initial Generation | Multi-angle divergent thinking, no prior critique |
| GC Revision | Address HIGH/CRITICAL challenges from critique |
Initial Generation:
- For each angle, generate 3+ ideas
- Each idea: title, description (2-3 sentences), key assumption, potential impact, implementation hint
GC Revision:
- Focus on HIGH/CRITICAL severity challenges from critique
- Retain unchallenged ideas intact
- Revise ideas with revision rationale
- Replace unsalvageable ideas with new alternatives
Output: Write to <session>/ideas/idea-<num>.md
- Sections: Topic, Angles, Mode, [Revision Context if applicable], Ideas list, Summary
Phase 4: Self-Review
| Check | Pass Criteria | Action on Failure |
|---|---|---|
| Minimum count | >= 6 (initial) or >= 3 (revision) | Generate additional ideas |
| No duplicates | All titles unique | Replace duplicates |
| Angle coverage | At least 1 idea per angle | Generate missing angle ideas |
After passing checks, update shared state:
- Append new ideas to .msg/meta.json generated_ideas
- Each entry: id, title, round, revised flag
Synthesizer
Cross-idea integrator. Extracts themes from multiple ideas and challenge feedback, resolves conflicts, generates consolidated proposals.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| Session folder | Task description (Session: line) | Yes |
| All ideas | <session>/ideas/*.md files | Yes |
| All critiques | <session>/critiques/*.md files | Yes |
| GC rounds completed | <session>/.msg/meta.json gc_round | Yes |
1. Extract session path from task description (match "Session: <path>") 2. Glob all idea files from <session>/ideas/ 3. Glob all critique files from <session>/critiques/ 4. Read all idea and critique files for synthesis 5. Read .msg/meta.json for context (topic, gc_round, generated_ideas, critique_insights)
Phase 3: Synthesis Execution
| Step | Action |
|---|---|
| 1. Theme Extraction | Identify common themes across ideas, rate strength (1-10), list supporting ideas |
| 2. Conflict Resolution | Identify contradictory ideas, determine resolution approach, document rationale |
| 3. Complementary Grouping | Group complementary ideas together |
| 4. Gap Identification | Discover uncovered perspectives |
| 5. Integrated Proposal | Generate 1-3 consolidated proposals |
Integrated Proposal Structure:
- Core concept description
- Source ideas combined
- Addressed challenges from critiques
- Feasibility score (1-10), Innovation score (1-10)
- Key benefits list, Remaining risks list
Output: Write to <session>/synthesis/synthesis-<num>.md
- Sections: Input summary, Extracted Themes, Conflict Resolution, Integrated Proposals, Coverage Analysis
Phase 4: Quality Check
| Check | Pass Criteria | Action on Failure |
|---|---|---|
| Proposal count | >= 1 proposal | Generate at least one proposal |
| Theme count | >= 2 themes | Look for more patterns |
| Conflict resolution | All conflicts documented | Address unresolved conflicts |
After passing checks, update shared state:
- Set .msg/meta.json synthesis_themes
- Each entry: name, strength, supporting_ideas
Pipeline Definitions — team-brainstorm
Available Pipelines
Quick Pipeline (3 beats, strictly serial)
IDEA-001 → CHALLENGE-001 → SYNTH-001
[ideator] [challenger] [synthesizer]Deep Pipeline (6 beats, Generator-Critic loop)
IDEA-001 → CHALLENGE-001 → IDEA-002(fix) → CHALLENGE-002 → SYNTH-001 → EVAL-001GC loop check: if critique.severity >= HIGH → create IDEA-fix → CHALLENGE-2 → SYNTH; else skip to SYNTH
Full Pipeline (7 tasks, fan-out parallel ideation + GC)
[IDEA-001 + IDEA-002 + IDEA-003](parallel) → CHALLENGE-001(batch) → IDEA-004(fix) → SYNTH-001 → EVAL-001Task Metadata Registry
| Task ID | Role | Phase | Dependencies | Description |
|---|---|---|---|---|
| IDEA-001 | ideator | generate | (none) | Multi-angle idea generation |
| IDEA-002 | ideator | generate | (none) | Parallel angle (Full pipeline only) |
| IDEA-003 | ideator | generate | (none) | Parallel angle (Full pipeline only) |
| CHALLENGE-001 | challenger | challenge | IDEA-001 (or all IDEA-*) | Devil's advocate critique and feasibility challenge |
| IDEA-004 | ideator | gc-fix | CHALLENGE-001 | Revision based on critique (GC loop, if triggered) |
| CHALLENGE-002 | challenger | gc-fix | IDEA-004 | Re-critique of revised ideas (GC loop round 2) |
| SYNTH-001 | synthesizer | synthesize | last CHALLENGE-* | Cross-idea integration, theme extraction, conflict resolution |
| EVAL-001 | evaluator | evaluate | SYNTH-001 | Scoring, ranking, priority recommendation, final selection |
Checkpoints
| Trigger | Location | Behavior |
|---|---|---|
| Generator-Critic loop | After CHALLENGE-* | If severity >= HIGH → create IDEA-fix task; else proceed to SYNTH |
| GC loop limit | Max 2 rounds | Exceeds limit → force convergence to SYNTH |
| Pipeline stall | No ready + no running | Check missing tasks, report to user |
Completion Conditions
| Mode | Completion Condition |
|---|---|
| quick | All 3 tasks completed |
| deep | All 6 tasks (+ any skipped GC tasks) completed |
| full | All 7 tasks (+ any skipped GC tasks) completed |
Shared State (meta.json)
| Role | State Key |
|---|---|
| ideator | generated_ideas |
| challenger | critique_insights |
| synthesizer | synthesis_themes |
| evaluator | evaluation_scores |
Message Types
| Role | Types |
|---|---|
| coordinator | pipeline_selected, gc_loop_trigger, task_unblocked, error, shutdown |
| ideator | ideas_ready, ideas_revised, error |
| challenger | critique_ready, error |
| synthesizer | synthesis_ready, error |
| evaluator | evaluation_ready, error |
{
"team_name": "team-brainstorm",
"team_display_name": "Team Brainstorm",
"description": "Head brainstorming team with Generator-Critic loop, shared memory, and dynamic pipeline selection",
"version": "1.0.0",
"roles": {
"coordinator": {
"task_prefix": null,
"responsibility": "Topic clarification, complexity assessment, pipeline selection, convergence monitoring",
"message_types": ["pipeline_selected", "gc_loop_trigger", "task_unblocked", "error", "shutdown"]
},
"ideator": {
"task_prefix": "IDEA",
"responsibility": "Multi-angle idea generation, concept exploration, divergent thinking",
"message_types": ["ideas_ready", "ideas_revised", "error"]
},
"challenger": {
"task_prefix": "CHALLENGE",
"responsibility": "Devil's advocate, assumption challenging, feasibility questioning",
"message_types": ["critique_ready", "error"]
},
"synthesizer": {
"task_prefix": "SYNTH",
"responsibility": "Cross-idea integration, theme extraction, conflict resolution",
"message_types": ["synthesis_ready", "error"]
},
"evaluator": {
"task_prefix": "EVAL",
"responsibility": "Scoring and ranking, priority recommendation, final selection",
"message_types": ["evaluation_ready", "error"]
}
},
"pipelines": {
"quick": {
"description": "Simple topic: generate → challenge → synthesize",
"task_chain": ["IDEA-001", "CHALLENGE-001", "SYNTH-001"],
"gc_loops": 0
},
"deep": {
"description": "Complex topic with Generator-Critic loop (max 2 rounds)",
"task_chain": ["IDEA-001", "CHALLENGE-001", "IDEA-002", "CHALLENGE-002", "SYNTH-001", "EVAL-001"],
"gc_loops": 2
},
"full": {
"description": "Parallel fan-out ideation + Generator-Critic + evaluation",
"task_chain": ["IDEA-001", "IDEA-002", "IDEA-003", "CHALLENGE-001", "IDEA-004", "SYNTH-001", "EVAL-001"],
"gc_loops": 1,
"parallel_groups": [["IDEA-001", "IDEA-002", "IDEA-003"]]
}
},
"innovation_patterns": {
"generator_critic": {
"generator": "ideator",
"critic": "challenger",
"max_rounds": 2,
"convergence_trigger": "critique.severity < HIGH"
},
"shared_memory": {
"file": "shared-memory.json",
"fields": {
"ideator": "generated_ideas",
"challenger": "critique_insights",
"synthesizer": "synthesis_themes",
"evaluator": "evaluation_scores"
}
},
"dynamic_pipeline": {
"selector": "coordinator",
"criteria": "topic_complexity + scope + time_constraint"
}
},
"collaboration_patterns": ["CP-1", "CP-3", "CP-7"],
"session_dirs": {
"base": ".workflow/.team/BRS-{slug}-{YYYY-MM-DD}/",
"ideas": "ideas/",
"critiques": "critiques/",
"synthesis": "synthesis/",
"evaluation": "evaluation/",
"messages": ".workflow/.team-msg/{team-name}/"
}
}