mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-28 09:23:08 +08:00
- 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)
226 lines
6.9 KiB
Markdown
226 lines
6.9 KiB
Markdown
# 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](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**:
|
||
|
||
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 |
|
||
|
||
4. Determine scan dimensions (default: code, architecture, testing, dependency, documentation)
|
||
5. 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 |
|
||
|
||
6. 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 |
|