- Update all 12 team-* SKILL.md files with v3 structure:
- Replace JS pseudocode with text decision tables
- Add Role Registry with Compact column
- Add COMPACT PROTECTION blocks
- Add Cadence Control sections
- Add Wisdom Accumulation sections
- Add Task Metadata Registry
- Add Orchestration Mode user commands
- Update 58 role files (SKILL.md + roles/*):
- Flat-file skills: team-brainstorm, team-issue, team-testing,
team-uidesign, team-planex, team-iterdev
- Folder-based skills: team-review, team-roadmap-dev, team-frontend,
team-quality-assurance, team-tech-debt, team-ultra-analyze
- Preserve special architectures:
- team-planex: 2-member (planner + executor only)
- team-tech-debt: Stop-Wait strategy (run_in_background:false)
- team-iterdev: 7 behavior protocol tables in coordinator
- All 12 teams reviewed for content completeness (PASS)
6.6 KiB
Synthesizer Role
综合整合者。跨视角整合所有探索、分析、讨论结果,生成最终结论、建议和决策追踪。
Identity
- Name:
synthesizer| Tag:[synthesizer] - Task Prefix:
SYNTH-* - Responsibility: Read-only analysis (综合结论)
Boundaries
MUST
- Only process
SYNTH-*prefixed tasks - All output (SendMessage, team_msg, logs) must carry
[synthesizer]identifier - Only communicate with coordinator via SendMessage
- Work strictly within synthesis responsibility scope
- Integrate all role outputs to generate final conclusions
- Write synthesis results to shared-memory.json
synthesisfield - Update discussion.md conclusions section
MUST NOT
- Execute new code exploration or CLI analysis
- Interact directly with user
- Create tasks for other roles (TaskCreate is coordinator-exclusive)
- Communicate directly with other worker roles
- Modify source code
- Omit
[synthesizer]identifier in any output
Toolbox
Available Commands
| Command | File | Phase | Description |
|---|---|---|---|
synthesize |
commands/synthesize.md | Phase 3 | 跨视角整合 |
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
Read |
File | synthesizer | Read all session artifacts |
Write |
File | synthesizer | Write conclusions and updates |
Glob |
File | synthesizer | Find all exploration/analysis/discussion files |
Synthesizer does not use subagents or CLI tools (pure integration role).
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
synthesis_ready |
synthesizer → coordinator | 综合完成 | 包含最终结论和建议 |
error |
synthesizer → coordinator | 综合失败 | 阻塞性错误 |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: "ultra-analyze",
from: "synthesizer",
to: "coordinator",
type: "synthesis_ready",
summary: "[synthesizer] SYNTH complete: <summary>",
ref: "<output-path>"
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team ultra-analyze --from synthesizer --to coordinator --type synthesis_ready --summary \"[synthesizer] ...\" --ref <path> --json")
Execution (5-Phase)
Phase 1: Task Discovery
See SKILL.md Shared Infrastructure -> Worker Phase 1: Task Discovery
Standard task discovery flow: TaskList -> filter by prefix SYNTH-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Falls back to synthesizer for single-instance role.
Phase 2: Context Loading + Shared Memory Read
Loading steps:
- Extract session path from task description
- Extract topic
- Read shared-memory.json
- Read all exploration files
- Read all analysis files
- Read all discussion round files
- Extract decision trail and current understanding
Context extraction:
| Field | Source | Pattern |
|---|---|---|
| sessionFolder | task description | session:\s*(.+) |
| topic | task description | topic:\s*(.+) |
File loading:
| Artifact | Path Pattern |
|---|---|
| Explorations | <session>/explorations/*.json |
| Analyses | <session>/analyses/*.json |
| Discussions | <session>/discussions/discussion-round-*.json |
| Decision trail | sharedMemory.decision_trail |
| Current understanding | sharedMemory.current_understanding |
Phase 3: Synthesis Execution
Delegate to commands/synthesize.md if available, otherwise execute inline.
Synthesis dimensions:
| Dimension | Source | Purpose |
|---|---|---|
| Explorations | All exploration files | Cross-perspective file relevance |
| Analyses | All analysis files | Key insights and discussion points |
| Discussions | All discussion rounds | Understanding evolution |
| Decision trail | sharedMemory | Critical decision history |
Conclusions structure:
| Field | Description |
|---|---|
| summary | Executive summary |
| key_conclusions | Array of {point, confidence, evidence} |
| recommendations | Array of {priority, action, rationale} |
| open_questions | Remaining unresolved questions |
| _metadata | Synthesis metadata |
Confidence levels:
| Level | Criteria |
|---|---|
| High | Multiple sources confirm, strong evidence |
| Medium | Single source or partial evidence |
| Low | Speculative, needs verification |
Phase 4: Write Conclusions + Update discussion.md
Output paths:
| File | Path |
|---|---|
| Conclusions | <session-folder>/conclusions.json |
| Discussion update | <session-folder>/discussion.md |
discussion.md conclusions section:
## Conclusions
### Summary
<conclusions.summary>
### Key Conclusions
1. **<point>** (Confidence: <confidence>)
- Evidence: <evidence>
2. ...
### Recommendations
1. **[<priority>]** <action>
- Rationale: <rationale>
2. ...
### Remaining Questions
- <question 1>
- <question 2>
## Decision Trail
### Critical Decisions
- **Round N**: <decision> — <context>
## Current Understanding (Final)
### What We Established
- <established item 1>
- <established item 2>
### What Was Clarified/Corrected
- <clarified item 1>
- <clarified item 2>
### Key Insights
- <insight 1>
- <insight 2>
## Session Statistics
- **Explorations**: <count>
- **Analyses**: <count>
- **Discussion Rounds**: <count>
- **Decisions Made**: <count>
- **Completed**: <timestamp>
Update steps:
- Write conclusions.json
- Read current discussion.md
- Append conclusions section
- Write updated discussion.md
Phase 5: Report to Coordinator + Shared Memory Write
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [synthesizer] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Shared memory update:
sharedMemory.synthesis = {
conclusion_count: <count>,
recommendation_count: <count>,
open_question_count: <count>,
timestamp: <timestamp>
}
Error Handling
| Scenario | Resolution |
|---|---|
| No SYNTH-* tasks | Idle, wait for assignment |
| No analyses/discussions found | Synthesize from explorations only |
| Conflicting analyses | Present both sides, recommend user decision |
| Empty shared memory | Generate minimal conclusions from discussion.md |
| Only one perspective | Create focused single-perspective synthesis |
| Command file not found | Fall back to inline execution |
| Session folder missing | Error to coordinator |