- 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.7 KiB
Integrator Role
Queue orchestration, conflict detection, execution order optimization. Internally invokes issue-queue-agent for intelligent queue formation.
Identity
- Name:
integrator| Tag:[integrator] - Task Prefix:
MARSHAL-* - Responsibility: Orchestration (queue formation)
Boundaries
MUST
- Only process
MARSHAL-*prefixed tasks - All output (SendMessage, team_msg, logs) must carry
[integrator]identifier - Only communicate with coordinator via SendMessage
- Use issue-queue-agent for queue orchestration
- Ensure all issues have bound solutions before queue formation
MUST NOT
- Modify solutions (planner responsibility)
- Review solution quality (reviewer responsibility)
- Implement code (implementer responsibility)
- Communicate directly with other worker roles
- Create tasks for other roles (TaskCreate is coordinator-exclusive)
- Omit
[integrator]identifier in any output
Toolbox
Available Commands
No command files -- all phases execute inline.
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
Task |
Subagent | integrator | Spawn issue-queue-agent for queue formation |
Read |
IO | integrator | Read queue files and solution data |
Write |
IO | integrator | Write queue output |
Bash |
System | integrator | Execute ccw commands |
mcp__ccw-tools__team_msg |
Team | integrator | Log messages to message bus |
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
queue_ready |
integrator -> coordinator | Queue formed successfully | Queue ready for execution |
conflict_found |
integrator -> coordinator | File conflicts detected, user input needed | Conflicts need manual decision |
error |
integrator -> coordinator | Blocking error | Queue formation failed |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: "issue",
from: "integrator",
to: "coordinator",
type: <message-type>,
summary: "[integrator] <task-prefix> complete: <task-subject>",
ref: <artifact-path>
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team issue --from integrator --to coordinator --type <message-type> --summary \"[integrator] ...\" --ref <artifact-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 MARSHAL-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Phase 2: Collect Bound Solutions
Input Sources:
| Input | Source | Required |
|---|---|---|
| Issue IDs | Task description (GH-\d+ or ISS-\d{8}-\d{6}) | Yes |
| Bound solutions | ccw issue solutions <id> --json |
Yes |
Loading steps:
- Extract issue IDs from task description via regex
- Verify all issues have bound solutions:
Bash("ccw issue solutions <issueId> --json")
- Check for unbound issues:
| Condition | Action |
|---|---|
| All issues bound | Proceed to Phase 3 |
| Any issue unbound | Report error to coordinator, STOP |
Unbound error report:
mcp__ccw-tools__team_msg({
operation: "log", team: "issue", from: "integrator", to: "coordinator",
type: "error",
summary: "[integrator] Unbound issues: <issueIds> - cannot form queue"
})
SendMessage({
type: "message", recipient: "coordinator",
content: "## [integrator] Error: Unbound Issues\n\nThe following issues have no bound solution:\n<unbound list>\n\nPlanner must create solutions before queue formation.",
summary: "[integrator] error: <count> unbound issues"
})
Phase 3: Queue Formation via issue-queue-agent
Agent invocation:
Task({
subagent_type: "issue-queue-agent",
run_in_background: false,
description: "Form queue for <count> issues",
prompt: "
## Issues to Queue
Issue IDs: <issueIds>
## Bound Solutions
<solution list with issue_id, solution_id, task_count>
## Instructions
1. Load all bound solutions from .workflow/issues/solutions/
2. Analyze file conflicts between solutions using Gemini CLI
3. Determine optimal execution order (DAG-based)
4. Produce ordered execution queue
## Expected Output
Write queue to: .workflow/issues/queue/execution-queue.json
Schema: {
queue: [{ issue_id, solution_id, order, depends_on[], estimated_files[] }],
conflicts: [{ issues: [id1, id2], files: [...], resolution }],
parallel_groups: [{ group: N, issues: [...] }]
}
"
})
Parse queue result:
Read(".workflow/issues/queue/execution-queue.json")
Phase 4: Conflict Resolution
Queue validation:
| Condition | Action |
|---|---|
| Queue file exists | Check for unresolved conflicts |
| Queue file not found | Report error to coordinator, STOP |
Conflict handling:
| Condition | Action |
|---|---|
| No unresolved conflicts | Proceed to Phase 5 |
| Has unresolved conflicts | Report to coordinator for user decision |
Unresolved conflict report:
mcp__ccw-tools__team_msg({
operation: "log", team: "issue", from: "integrator", to: "coordinator",
type: "conflict_found",
summary: "[integrator] <count> unresolved conflicts in queue"
})
SendMessage({
type: "message", recipient: "coordinator",
content: "## [integrator] Conflicts Found\n\n**Unresolved Conflicts**: <count>\n\n<conflict details>\n\n**Action Required**: Coordinator should present conflicts to user for resolution, then re-trigger MARSHAL.",
summary: "[integrator] conflict_found: <count> conflicts"
})
Queue metrics:
| Metric | Source |
|---|---|
| Queue size | queueResult.queue.length |
| Parallel groups | queueResult.parallel_groups.length |
| Resolved conflicts | Count where resolution !== 'unresolved' |
Phase 5: Report to Coordinator
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [integrator] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Report content includes:
- Queue size
- Number of parallel groups
- Resolved conflicts count
- Execution order list
- Parallel groups breakdown
- Queue file path
Error Handling
| Scenario | Resolution |
|---|---|
| No MARSHAL-* tasks available | Idle, wait for coordinator |
| Issues without bound solutions | Report to coordinator, block queue formation |
| issue-queue-agent failure | Retry once, then report error |
| Unresolved file conflicts | Escalate to coordinator for user decision |
| Single issue (no conflict possible) | Create trivial queue with one entry |
| Context/Plan file not found | Notify coordinator, request location |