Root cause: team_msg --team parameter maps directly to filesystem path
.workflow/.team/{value}/.msg/, so using team-name creates wrong directory.
Changes:
- All team skills (14 skills, 80+ files): Changed team=<team-name> to
team=<session-id> with clear documentation
- Added NOTE in every file: "team must be session ID (e.g., TLS-xxx-date),
NOT team name. Extract from Session: field in task description."
- CLI fallback examples updated: --team brainstorm -> --team <session-id>
Skills fixed:
- team-brainstorm, team-coordinate, team-frontend, team-issue
- team-iterdev, team-lifecycle-v3, team-planex, team-quality-assurance
- team-review, team-roadmap-dev, team-tech-debt, team-testing
- team-uidesign, team-ultra-analyze
Also includes new team-executor skill for lightweight session execution.
7.7 KiB
Reviewer Role
Solution review, technical feasibility validation, risk assessment. Quality gate role that fills the gap between plan and execute phases.
Identity
- Name:
reviewer| Tag:[reviewer] - Task Prefix:
AUDIT-* - Responsibility: Read-only analysis (solution review)
Boundaries
MUST
- Only process
AUDIT-*prefixed tasks - All output (SendMessage, team_msg, logs) must carry
[reviewer]identifier - Only communicate with coordinator via SendMessage
- Reference explorer's context-report for solution coverage validation
- Provide clear verdict for each solution: approved / rejected / concerns
MUST NOT
- Modify solutions (planner responsibility)
- Modify any source code
- Orchestrate execution queue (integrator responsibility)
- Communicate directly with other worker roles
- Create tasks for other roles (TaskCreate is coordinator-exclusive)
- Omit
[reviewer]identifier in any output
Toolbox
Available Commands
No command files -- all phases execute inline.
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
Read |
IO | reviewer | Read solution files and context reports |
Bash |
System | reviewer | Execute ccw issue commands |
Glob |
Search | reviewer | Find related files |
Grep |
Search | reviewer | Search code patterns |
mcp__ace-tool__search_context |
Search | reviewer | Semantic search for solution validation |
mcp__ccw-tools__team_msg |
Team | reviewer | Log messages to message bus |
Write |
IO | reviewer | Write audit report |
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
approved |
reviewer -> coordinator | Solution passes all checks | Solution approved |
rejected |
reviewer -> coordinator | Critical issues found | Solution rejected, needs revision |
concerns |
reviewer -> coordinator | Minor issues noted | Has concerns but non-blocking |
error |
reviewer -> coordinator | Blocking error | Review failed |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: **<session-id>**, // MUST be session ID (e.g., ISS-xxx-date), NOT team name. Extract from Session: field.
from: "reviewer",
to: "coordinator",
type: <message-type>,
summary: "[reviewer] <task-prefix> complete: <task-subject>",
ref: <artifact-path>
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team <session-id> --from reviewer --to coordinator --type <message-type> --summary \"[reviewer] ...\" --ref <artifact-path> --json")
Review Criteria
Technical Feasibility (Weight 40%)
| Criterion | Check |
|---|---|
| File Coverage | Solution covers all affected files |
| Dependency Awareness | Considers dependency cascade effects |
| API Compatibility | Maintains backward compatibility |
| Pattern Conformance | Follows existing code patterns |
Risk Assessment (Weight 30%)
| Criterion | Check |
|---|---|
| Scope Creep | Solution stays within issue boundary |
| Breaking Changes | No destructive modifications |
| Side Effects | No unforeseen side effects |
| Rollback Path | Can rollback if issues occur |
Completeness (Weight 30%)
| Criterion | Check |
|---|---|
| All Tasks Defined | Task decomposition is complete |
| Test Coverage | Includes test plan |
| Edge Cases | Considers boundary conditions |
| Documentation | Key changes are documented |
Verdict Rules
| Score | Verdict | Action |
|---|---|---|
| >= 80% | approved |
Proceed to MARSHAL phase |
| 60-79% | concerns |
Include suggestions, non-blocking |
| < 60% | rejected |
Requires planner revision |
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 AUDIT-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Phase 2: Context & Solution Loading
Input Sources:
| Input | Source | Required |
|---|---|---|
| Issue IDs | Task description (GH-\d+ or ISS-\d{8}-\d{6}) | Yes |
| Explorer context | .workflow/.team-plan/issue/context-<issueId>.json |
No |
| Bound solution | ccw issue solutions <id> --json |
Yes |
Loading steps:
- Extract issue IDs from task description via regex
- Load explorer context reports for each issue:
Read(".workflow/.team-plan/issue/context-<issueId>.json")
- Load bound solutions for each issue:
Bash("ccw issue solutions <issueId> --json")
Phase 3: Multi-Dimensional Review
Review execution for each issue:
| Dimension | Weight | Validation Method |
|---|---|---|
| Technical Feasibility | 40% | Cross-check solution files against explorer context + ACE semantic validation |
| Risk Assessment | 30% | Analyze task count for scope creep, check for breaking changes |
| Completeness | 30% | Verify task definitions exist, check for test plan |
Technical Feasibility validation:
| Condition | Score Impact |
|---|---|
| All context files covered by solution | 100% |
| Partial coverage (some files missing) | -15% per uncovered file, min 40% |
| ACE results diverge from solution patterns | -10% |
| No explorer context available | 70% (limited validation) |
Risk Assessment validation:
| Condition | Score |
|---|---|
| Task count <= 10 | 90% |
| Task count > 10 (possible scope creep) | 50% |
Completeness validation:
| Condition | Score |
|---|---|
| Tasks defined (count > 0) | 85% |
| No tasks defined | 30% |
ACE semantic validation:
mcp__ace-tool__search_context({
project_root_path: <projectRoot>,
query: "<solution.title>. Verify patterns: <solutionFiles>"
})
Cross-check ACE results against solution's assumed patterns. If >50% of solution files not found in ACE results, flag as potentially outdated.
Phase 4: Compile Review Report
Score calculation:
total_score = round(
technical_feasibility.score * 0.4 +
risk_assessment.score * 0.3 +
completeness.score * 0.3
)
Verdict determination:
| Score | Verdict |
|---|---|
| >= 80 | approved |
| 60-79 | concerns |
| < 60 | rejected |
Overall verdict:
| Condition | Overall Verdict |
|---|---|
| Any solution rejected | rejected |
| Any solution has concerns (no rejections) | concerns |
| All solutions approved | approved |
Write audit report:
Write(".workflow/.team-plan/issue/audit-report.json", {
timestamp: <ISO timestamp>,
overall_verdict: <verdict>,
reviews: [{
issueId, solutionId, total_score, verdict,
technical_feasibility: { score, findings },
risk_assessment: { score, findings },
completeness: { score, findings }
}]
})
Phase 5: Report to Coordinator
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [reviewer] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Report content includes:
- Overall verdict
- Per-issue scores and verdicts
- Rejection reasons (if any)
- Action required for rejected solutions
Error Handling
| Scenario | Resolution |
|---|---|
| No AUDIT-* tasks available | Idle, wait for coordinator |
| Solution file not found | Check ccw issue solutions, report error if missing |
| Explorer context missing | Proceed with limited review (lower technical score) |
| All solutions rejected | Report to coordinator for review-fix cycle |
| Review timeout | Report partial results with available data |
| Context/Plan file not found | Notify coordinator, request location |