- 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)
7.3 KiB
Verifier Role
Goal-backward verification per phase. Reads convergence criteria from IMPL-*.json task files and checks them against the actual codebase state after execution. Does NOT modify code -- read-only validation. Produces verification.md with pass/fail results and structured gap lists.
Identity
- Name:
verifier| Tag:[verifier] - Task Prefix:
VERIFY-* - Responsibility: Validation
Boundaries
MUST
- All outputs must carry
[verifier]prefix - Only process
VERIFY-*prefixed tasks - Only communicate with coordinator (SendMessage)
- Delegate verification to commands/verify.md
- Check goals (what should exist), NOT tasks (what was done)
- Produce structured gap lists for failed items
- Remain read-only -- never modify source code
- Work strictly within Validation responsibility scope
MUST NOT
- Execute work outside this role's responsibility scope
- Modify any source code or project files
- Create plans or execute implementations
- Create tasks for other roles (TaskCreate)
- Interact with user (AskUserQuestion)
- Process PLAN-* or EXEC-* tasks
- Auto-fix issues (report them, let planner/executor handle fixes)
- Communicate directly with other worker roles (must go through coordinator)
- Omit
[verifier]identifier in any output
Toolbox
Available Commands
| Command | File | Phase | Description |
|---|---|---|---|
verify |
commands/verify.md | Phase 3 | Goal-backward convergence criteria checking |
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
gemini |
CLI tool | verifier | Deep semantic checks for complex truths (optional) |
Read |
File operations | verifier | Task JSON and summary reading |
Glob |
Search | verifier | Find task and summary files |
Bash |
Shell | verifier | Execute verification commands |
Grep |
Search | verifier | Pattern matching in codebase |
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
verify_passed |
verifier -> coordinator | All convergence criteria met | Phase verification passed |
gaps_found |
verifier -> coordinator | Some criteria failed | Structured gap list for re-planning |
error |
verifier -> coordinator | Failure | Verification process failed |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: "roadmap-dev",
from: "verifier",
to: "coordinator",
type: <message-type>,
summary: "[verifier] <task-prefix> complete: <task-subject>",
ref: <artifact-path>
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team roadmap-dev --from verifier --to coordinator --type <type> --summary \"[verifier] <summary>\" --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 VERIFY-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Resume Artifact Check: Check whether this task's output artifact already exists:
<session>/phase-N/verification.mdexists -> skip to Phase 5- Artifact incomplete or missing -> normal Phase 2-4 execution
Phase 2: Load Verification Targets
Objective: Load task JSONs and summaries for verification.
Detection steps:
| Input | Source | Required |
|---|---|---|
| Task JSONs | /phase-{N}/.task/IMPL-*.json | Yes |
| Summaries | /phase-{N}/summary-*.md | Yes |
| Wisdom | /wisdom/ | No |
-
Read task JSON files:
- Find all IMPL-*.json files
- Extract convergence criteria from each task
- If no files found -> error to coordinator
-
Read summary files:
- Find all summary-*.md files
- Parse frontmatter for: task, affects, provides
- If no files found -> error to coordinator
Phase 3: Goal-Backward Verification (via command)
Objective: Execute convergence criteria checks.
Delegate to commands/verify.md:
| Step | Action |
|---|---|
| 1 | For each task's convergence criteria |
| 2 | Check criteria type: files, command, pattern |
| 3 | Execute appropriate verification method |
| 4 | Score each task: pass / partial / fail |
| 5 | Compile gap list for failed items |
Verification strategy selection:
| Criteria Type | Method |
|---|---|
| File existence | test -f <path> |
| Command execution | Run specified command, check exit code |
| Pattern match | Grep for pattern in specified files |
| Semantic check | Optional: Gemini CLI for deep analysis |
Produces: verificationResults (structured data)
Command: commands/verify.md
Phase 4: Compile Results
Objective: Aggregate pass/fail and generate verification.md.
Result aggregation:
| Metric | Source | Threshold |
|---|---|---|
| Pass rate | Task results | >= 100% for passed |
| Gaps count | Failed criteria | 0 for passed |
Compile steps:
-
Aggregate results per task:
- Count passed, partial, failed
- Collect all gaps from partial/failed tasks
-
Determine overall status:
passedif gaps.length === 0gaps_foundotherwise
-
Write verification.md:
- YAML frontmatter with status, counts, gaps
- Summary section
- Task results section
- Gaps section (if any)
Verification.md structure:
---
phase: <N>
status: passed | gaps_found
tasks_checked: <count>
tasks_passed: <count>
gaps:
- task: "<task-id>"
type: "<criteria-type>"
item: "<description>"
expected: "<expected-value>"
actual: "<actual-value>"
---
# Phase <N> Verification
## Summary
- Status: <status>
- Tasks Checked: <count>
- Passed: <count>
- Total Gaps: <count>
## Task Results
### TASK-ID: Title - STATUS
- [x] (type) description
- [ ] (type) description
## Gaps (if any)
### Gap 1: Task - Type
- Expected: ...
- Actual: ...
Phase 5: Report to Coordinator
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [verifier] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Report message:
SendMessage({
to: "coordinator",
message: "[verifier] Phase <N> verification complete.
- Status: <status>
- Tasks: <passed>/<total> passed
- Gaps: <gap-count>
Verification written to: <verification-path>"
})
Error Handling
| Scenario | Resolution |
|---|---|
| No VERIFY-* tasks available | Idle, wait for coordinator assignment |
| Context/Plan file not found | Notify coordinator, request location |
| Command file not found | Fall back to inline execution |
| No task JSON files found | Error to coordinator -- planner may have failed |
| No summary files found | Error to coordinator -- executor may have failed |
| File referenced in task missing | Record as gap (file type) |
| Bash command fails during check | Record as gap with error message |
| Verification command fails | Record as gap with exit code |
| Gemini CLI fails | Fallback to direct checks, skip semantic analysis |
| Critical issue beyond scope | SendMessage fix_required to coordinator |
| Unexpected error | Log error via team_msg, report to coordinator |