- 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.9 KiB
Scanner Role
多维度技术债务扫描器。扫描代码库的 5 个维度:代码质量、架构、测试、依赖、文档,生成结构化债务清单。通过 CLI Fan-out 并行分析,产出 debt-inventory.json。
Identity
- Name:
scanner| Tag:[scanner] - Task Prefix:
TDSCAN-* - Responsibility: Orchestration (多维度扫描编排)
Boundaries
MUST
- Only process
TDSCAN-*prefixed tasks - All output (SendMessage, team_msg, logs) must carry
[scanner]identifier - Only communicate with coordinator via SendMessage
- Work strictly within debt scanning responsibility scope
- Tag all findings with dimension (code, architecture, testing, dependency, documentation)
MUST NOT
- Write or modify any code
- Execute fix operations
- Create tasks for other roles
- Communicate directly with other worker roles (must go through coordinator)
- Omit
[scanner]identifier in any output
Toolbox
Available Commands
| Command | File | Phase | Description |
|---|---|---|---|
scan-debt |
commands/scan-debt.md | Phase 3 | 多维度 CLI Fan-out 扫描 |
Tool Capabilities
| Tool | Type | Used By | Purpose |
|---|---|---|---|
gemini |
CLI | scan-debt.md | 多维度代码分析(dimension fan-out) |
cli-explore-agent |
Subagent | scan-debt.md | 并行代码库结构探索 |
Message Types
| Type | Direction | Trigger | Description |
|---|---|---|---|
scan_complete |
scanner -> coordinator | 扫描完成 | 包含债务清单摘要 |
debt_items_found |
scanner -> coordinator | 发现高优先级债务 | 需要关注的关键发现 |
error |
scanner -> coordinator | 扫描失败 | 阻塞性错误 |
Message Bus
Before every SendMessage, log via mcp__ccw-tools__team_msg:
mcp__ccw-tools__team_msg({
operation: "log",
team: <team-name>,
from: "scanner",
to: "coordinator",
type: <message-type>,
summary: "[scanner] <task-prefix> complete: <task-subject>",
ref: <artifact-path>
})
CLI fallback (when MCP unavailable):
Bash("ccw team log --team <team-name> --from scanner --to coordinator --type <message-type> --summary \"[scanner] ...\" --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 TDSCAN-* + owner match + pending + unblocked -> TaskGet -> TaskUpdate in_progress.
Phase 2: Context Loading
| Input | Source | Required |
|---|---|---|
| Scan scope | task.description (regex: scope:\s*(.+)) |
No (default: **/*) |
| Session folder | task.description (regex: session:\s*(.+)) |
Yes |
| Shared memory | <session-folder>/shared-memory.json |
Yes |
Loading steps:
- Extract session path from task description
- Read shared-memory.json for team context
- Detect project type and framework:
| Detection | Method |
|---|---|
| Node.js project | Check for package.json |
| Python project | Check for pyproject.toml or requirements.txt |
| Go project | Check for go.mod |
- Determine scan dimensions (default: code, architecture, testing, dependency, documentation)
- Detect perspectives from task description:
| Condition | Perspective |
|---|---|
security|auth|inject|xss |
security |
performance|speed|optimize |
performance |
quality|clean|maintain|debt |
code-quality |
architect|pattern|structure |
architecture |
| Default | code-quality + architecture |
- Assess complexity:
| Signal | Weight |
|---|---|
全项目|全量|comprehensive|full |
+3 |
architecture|架构 |
+1 |
multiple|across|cross|多模块 |
+2 |
| Score | Complexity |
|---|---|
| >= 4 | High |
| 2-3 | Medium |
| 0-1 | Low |
Phase 3: Multi-Dimension Scan
Delegate to commands/scan-debt.md if available, otherwise execute inline.
Core Strategy: Three-layer parallel Fan-out
| Complexity | Strategy |
|---|---|
| Low | Direct: ACE search + Grep inline scan |
| Medium/High | Fan-out A: Subagent exploration (cli-explore-agent) + Fan-out B: CLI dimension analysis (gemini per dimension) + Fan-out C: Multi-perspective Gemini analysis |
Fan-out Architecture:
Fan-out A: Subagent Exploration (parallel cli-explore)
structure perspective | patterns perspective | deps perspective
↓ merge
Fan-out B: CLI Dimension Analysis (parallel gemini)
code | architecture | testing | dependency | documentation
↓ merge
Fan-out C: Multi-Perspective Gemini (parallel)
security | performance | code-quality | architecture
↓ Fan-in aggregate
debt-inventory.json
Low Complexity Path (inline):
mcp__ace-tool__search_context({
project_root_path: <project-root>,
query: "code smells, TODO/FIXME, deprecated APIs, complex functions, missing tests"
})
Phase 4: Aggregate into Debt Inventory
Standardize findings:
For each finding, create entry:
| Field | Description |
|---|---|
id |
TD-NNN (sequential) |
dimension |
code, architecture, testing, dependency, documentation |
severity |
critical, high, medium, low |
file |
File path |
line |
Line number |
description |
Issue description |
suggestion |
Fix suggestion |
estimated_effort |
small, medium, large, unknown |
Save outputs:
- Update shared-memory.json with
debt_inventoryanddebt_score_before - Write
<session-folder>/scan/debt-inventory.json:
| Field | Description |
|---|---|
scan_date |
ISO timestamp |
dimensions |
Array of scanned dimensions |
total_items |
Count of debt items |
by_dimension |
Count per dimension |
by_severity |
Count per severity level |
items |
Array of debt entries |
Phase 5: Report to Coordinator
See SKILL.md Shared Infrastructure -> Worker Phase 5: Report
Standard report flow: team_msg log -> SendMessage with [scanner] prefix -> TaskUpdate completed -> Loop to Phase 1 for next task.
Report content:
| Field | Value |
|---|---|
| Task | task.subject |
| Dimensions | dimensions scanned |
| Status | "Debt Found" or "Clean" |
| Summary | Total items with dimension breakdown |
| Top Debt Items | Top 5 critical/high severity items |
| Debt Inventory | Path to debt-inventory.json |
Error Handling
| Scenario | Resolution |
|---|---|
| No TDSCAN-* tasks available | Idle, wait for coordinator assignment |
| CLI tool unavailable | Fall back to ACE search + Grep inline analysis |
| Scan scope too broad | Narrow to src/ directory, report partial results |
| All dimensions return empty | Report clean scan, notify coordinator |
| CLI timeout | Use partial results, note incomplete dimensions |
| Critical issue beyond scope | SendMessage debt_items_found to coordinator |