Files
Claude-Code-Workflow/.claude/skills/team-tech-debt/roles/scanner/role.md
catlog22 8566e3af44 fix(team): use session-id instead of team-name in team_msg across all skills
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.
2026-02-27 18:48:39 +08:00

7.0 KiB
Raw Blame History

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: <session-id>,  // MUST be session ID (e.g., TD-xxx-date), NOT team name. Extract from Session: field in task description.
  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 <session-id> --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:

  1. Extract session path from task description
  2. Read shared-memory.json for team context
  3. 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
  1. Determine scan dimensions (default: code, architecture, testing, dependency, documentation)
  2. 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
  1. 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:

  1. Update shared-memory.json with debt_inventory and debt_score_before
  2. 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