maestro-flow 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.claude/commands/maestro-ralph.md +548 -377
  2. package/.claude/commands/maestro.md +220 -191
  3. package/.codex/skills/maestro/SKILL.md +495 -462
  4. package/.codex/skills/maestro-collab/SKILL.md +218 -117
  5. package/.codex/skills/maestro-execute/SKILL.md +13 -11
  6. package/.codex/skills/maestro-milestone-audit/SKILL.md +12 -10
  7. package/.codex/skills/maestro-ralph/SKILL.md +491 -339
  8. package/.codex/skills/maestro-ui-codify/SKILL.md +18 -16
  9. package/.codex/skills/manage-codebase-rebuild/SKILL.md +20 -13
  10. package/.codex/skills/manage-issue-discover/SKILL.md +19 -17
  11. package/.codex/skills/quality-debug/SKILL.md +35 -31
  12. package/.codex/skills/quality-refactor/SKILL.md +20 -12
  13. package/.codex/skills/quality-review/SKILL.md +21 -17
  14. package/.codex/skills/team-coordinate/SKILL.md +462 -235
  15. package/.codex/skills/team-coordinate/specs/role-catalog.md +132 -0
  16. package/.codex/skills/team-lifecycle-v4/SKILL.md +445 -191
  17. package/.codex/skills/team-quality-assurance/SKILL.md +205 -161
  18. package/.codex/skills/team-review/SKILL.md +198 -159
  19. package/.codex/skills/team-tech-debt/SKILL.md +214 -144
  20. package/.codex/skills/team-testing/SKILL.md +210 -158
  21. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +25 -33
  22. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  23. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +9 -3
  24. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
  25. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js +5 -2
  26. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js.map +1 -1
  27. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +20 -8
  28. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  29. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js +6 -3
  30. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js.map +1 -1
  31. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js +7 -1
  32. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js.map +1 -1
  33. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.d.ts +2 -0
  34. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js +40 -15
  35. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js.map +1 -1
  36. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.d.ts +1 -0
  37. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js +59 -0
  38. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js.map +1 -0
  39. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.d.ts +1 -0
  40. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js +78 -0
  41. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js.map +1 -0
  42. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.d.ts +25 -0
  43. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js +40 -0
  44. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js.map +1 -0
  45. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.d.ts +1 -0
  46. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js +89 -0
  47. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js.map +1 -0
  48. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +19 -8
  49. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  50. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.d.ts +6 -0
  51. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js +7 -1
  52. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js.map +1 -1
  53. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.d.ts +1 -0
  54. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js +46 -0
  55. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js.map +1 -0
  56. package/dashboard/dist-server/shared/agent-types.d.ts +6 -0
  57. package/dist/shared/agent-types.d.ts +6 -0
  58. package/dist/shared/agent-types.d.ts.map +1 -1
  59. package/dist/src/agents/cli-agent-runner.d.ts +3 -0
  60. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  61. package/dist/src/agents/cli-agent-runner.js +1 -0
  62. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  63. package/dist/src/commands/delegate.d.ts +2 -0
  64. package/dist/src/commands/delegate.d.ts.map +1 -1
  65. package/dist/src/commands/delegate.js +18 -0
  66. package/dist/src/commands/delegate.js.map +1 -1
  67. package/dist/src/config/cli-tools-config.d.ts +3 -0
  68. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  69. package/dist/src/config/cli-tools-config.js.map +1 -1
  70. package/package.json +1 -1
  71. package/shared/agent-types.ts +237 -231
  72. package/.codex/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +0 -247
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/dispatch.md +0 -126
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +0 -265
  75. package/.codex/skills/team-coordinate/roles/coordinator/role.md +0 -403
  76. package/.codex/skills/team-coordinate/specs/knowledge-transfer.md +0 -113
  77. package/.codex/skills/team-coordinate/specs/pipelines.md +0 -97
  78. package/.codex/skills/team-coordinate/specs/quality-gates.md +0 -112
  79. package/.codex/skills/team-coordinate/specs/role-spec-template.md +0 -192
  80. package/.codex/skills/team-executor/SKILL.md +0 -116
  81. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +0 -213
  82. package/.codex/skills/team-executor/roles/executor/role.md +0 -173
  83. package/.codex/skills/team-executor/specs/session-schema.md +0 -230
  84. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +0 -56
  85. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +0 -61
  86. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +0 -113
  87. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +0 -189
  88. package/.codex/skills/team-lifecycle-v4/schemas/tasks-schema.md +0 -100
  89. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +0 -204
  90. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +0 -72
  91. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +0 -108
  92. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +0 -163
  93. package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +0 -177
  94. package/.codex/skills/team-review/roles/coordinator/commands/analyze.md +0 -71
  95. package/.codex/skills/team-review/roles/coordinator/commands/dispatch.md +0 -90
  96. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +0 -135
  97. package/.codex/skills/team-review/roles/coordinator/role.md +0 -176
  98. package/.codex/skills/team-tech-debt/roles/coordinator/commands/analyze.md +0 -47
  99. package/.codex/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +0 -163
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +0 -133
  101. package/.codex/skills/team-tech-debt/roles/coordinator/role.md +0 -173
  102. package/.codex/skills/team-testing/roles/coordinator/commands/analyze.md +0 -70
  103. package/.codex/skills/team-testing/roles/coordinator/commands/dispatch.md +0 -106
  104. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +0 -156
  105. package/.codex/skills/team-testing/roles/coordinator/role.md +0 -185
@@ -1,159 +1,198 @@
1
- ---
2
- name: team-review
3
- description: Team code review -- scan, review, fix pipeline
4
- allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__maestro-tools__team_msg(*)
5
- ---
6
-
7
- <purpose>
8
- Orchestrate multi-agent code review: scanner -> reviewer -> fixer. Toolchain + LLM scan, deep analysis with root cause enrichment, and automated fix with rollback-on-failure.
9
-
10
- ```
11
- Skill(skill="team-review", args="task description")
12
- |
13
- SKILL.md (this file) = Router
14
- |
15
- +--------------+--------------+
16
- | |
17
- no --role flag --role <name>
18
- | |
19
- Coordinator Worker
20
- roles/coordinator/role.md roles/<name>/role.md
21
- |
22
- +-- analyze -> dispatch -> spawn workers -> STOP
23
- |
24
- +-------+-------+-------+
25
- v v v
26
- [scan] [review] [fix]
27
- team-worker agents, each loads roles/<role>/role.md
28
- ```
29
-
30
- </purpose>
31
-
32
- <context>
33
- ### Role Registry
34
-
35
- | Role | Path | Prefix | Inner Loop |
36
- |------|------|--------|------------|
37
- | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
38
- | scanner | [roles/scanner/role.md](roles/scanner/role.md) | SCAN-* | false |
39
- | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REV-* | false |
40
- | fixer | [roles/fixer/role.md](roles/fixer/role.md) | FIX-* | true |
41
-
42
- ### Role Router
43
-
44
- Parse `$ARGUMENTS`:
45
- - Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
46
- - No `--role` -> `roles/coordinator/role.md`, execute entry router
47
-
48
- ### Delegation Lock
49
-
50
- **Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
51
-
52
- Before calling ANY tool, apply this check:
53
-
54
- | Tool Call | Verdict | Reason |
55
- |-----------|---------|--------|
56
- | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
57
- | `list_agents` | ALLOWED | Agent health check |
58
- | `request_user_input` | ALLOWED | User interaction |
59
- | `mcp__maestro-tools__team_msg` | ALLOWED | Message bus |
60
- | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
61
- | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
62
- | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
63
- | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
64
- | `Bash("maestro delegate ...")` | BLOCKED | Only workers call CLI |
65
- | `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
66
-
67
- **If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
68
-
69
- **No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
70
-
71
- ### Shared Constants
72
-
73
- - **Session prefix**: `RV`
74
- - **Session path**: `.workflow/.team/RV-<slug>-<date>/`
75
- - **Team name**: `review`
76
- - **CLI tools**: `maestro delegate --mode analysis` (read-only), `maestro delegate --mode write` (modifications)
77
- - **Message bus**: `mcp__maestro-tools__team_msg(session_id=<session-id>, ...)`
78
-
79
- ### Worker Spawn Template
80
-
81
- Spawn via `team-worker` agent. Message includes: role, role_spec path, session folder/id, requirement, inner_loop flag, task context, upstream context. After spawning: `wait_agent` (30 min). Timeout: STATUS_CHECK (3 min) -> FINALIZE (3 min) -> close.
82
-
83
- ### Model Selection Guide
84
-
85
- | Role | reasoning_effort |
86
- |------|-------------------|
87
- | Scanner (SCAN-*) | medium |
88
- | Reviewer (REV-*) | high |
89
- | Fixer (FIX-*) | high |
90
-
91
- Override via `model`/`reasoning_effort` params in spawn_agent for cost optimization.
92
-
93
- ### User Commands
94
-
95
- | Command | Action |
96
- |---------|--------|
97
- | `check` / `status` | View pipeline status graph |
98
- | `resume` / `continue` | Advance to next step |
99
- | `--full` | Enable scan + review + fix pipeline |
100
- | `--fix` | Fix-only mode (skip scan/review) |
101
- | `-q` / `--quick` | Quick scan only |
102
- | `--dimensions=sec,cor,prf,mnt` | Custom dimensions |
103
- | `-y` / `--yes` | Skip confirmations |
104
-
105
- ### v4 Agent Coordination
106
-
107
- **Message Semantics**: `send_message` to queue scan findings to reviewer. `list_agents` for health checks. `followup_task` not used (sequential pipeline).
108
-
109
- **Pipeline Pattern**: Sequential 3-stage (scan -> review -> fix). May skip stages: 0 findings skips review+fix; user declines fix skips fix.
110
-
111
- **Agent Health Check**: Reconcile `tasks.json` with `list_agents({})`. Reset orphaned tasks to pending.
112
-
113
- **Named Targeting**: `send_message({ target: "REV-001" })`, `close_agent({ target: "SCAN-001" })`.
114
-
115
- ### Completion Action
116
-
117
- Present choice: **Archive & Clean** (recommended), **Keep Active**, **Export Results**.
118
-
119
- ### Session Directory
120
-
121
- ```
122
- .workflow/.team/RV-<slug>-<date>/
123
- +-- .msg/messages.jsonl # Team message bus
124
- +-- .msg/meta.json # Session state + cross-role state
125
- +-- wisdom/ # Cross-task knowledge
126
- +-- scan/ # Scanner output
127
- +-- review/ # Reviewer output
128
- +-- fix/ # Fixer output
129
- ```
130
-
131
- ### Specs Reference
132
-
133
- - [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
134
- - [specs/dimensions.md](specs/dimensions.md) -- Review dimension definitions (SEC/COR/PRF/MNT)
135
- - [specs/finding-schema.json](specs/finding-schema.json) -- Finding data schema
136
- - [specs/team-config.json](specs/team-config.json) -- Team configuration
137
- </context>
138
-
139
- <error_codes>
140
-
141
- | Scenario | Resolution |
142
- |----------|------------|
143
- | Unknown --role value | Error with available role list |
144
- | Role not found | Error with expected path (roles/<name>/role.md) |
145
- | CLI tool fails | Worker fallback to direct implementation |
146
- | Scanner finds 0 findings | Report clean, skip review + fix |
147
- | User declines fix | Delete FIX tasks, complete with review-only results |
148
- | Fast-advance conflict | Coordinator reconciles on next callback |
149
- | Completion action fails | Default to Keep Active |
150
- </error_codes>
151
-
152
- <success_criteria>
153
- - [ ] Role router correctly dispatches to coordinator or worker based on --role flag
154
- - [ ] Sequential pipeline: scan -> review -> fix executed in order
155
- - [ ] Scanner findings passed as upstream context to reviewer
156
- - [ ] Fix stage skipped when scanner finds 0 findings or user declines
157
- - [ ] Session state persisted after each pipeline stage
158
- - [ ] Completion action presented and handled correctly
159
- </success_criteria>
1
+ ---
2
+ name: team-review
3
+ description: Team code review -- scan, review, fix pipeline
4
+ argument-hint: "[scope] [-y|--yes] [-c|--concurrency N] [--continue] [--mode default|full|fix-only|quick]"
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
6
+ ---
7
+
8
+ <purpose>
9
+ Wave-based code review pipeline via `spawn_agents_on_csv`. Scanner → Reviewer → Fixer with 4-dimension analysis and user-gated fixes.
10
+
11
+ ```
12
+ +-------------------------------------------------------------------+
13
+ | REVIEW CSV WAVE WORKFLOW |
14
+ +-------------------------------------------------------------------+
15
+ | Phase 1: Mode Selection + CSV Generation |
16
+ | +-- Detect mode (default/full/fix-only/quick) |
17
+ | +-- Build tasks.csv from pipeline definition |
18
+ | |
19
+ | Phase 2: Wave Execution Engine |
20
+ | +-- Sequential waves |
21
+ | +-- User checkpoint before FIX wave (skip if -y) |
22
+ | +-- Fix scope: all / critical+high / skip |
23
+ | |
24
+ | Phase 3: Results Aggregation |
25
+ +-------------------------------------------------------------------+
26
+ ```
27
+ </purpose>
28
+
29
+ <context>
30
+ ```bash
31
+ $team-review "src/auth"
32
+ $team-review -y --mode full "src/"
33
+ $team-review --mode fix-only "fix-manifest.json"
34
+ $team-review --continue "20260518-rv-auth"
35
+ ```
36
+
37
+ **Flags**: `-y` (auto), `-c N` (concurrency, default 3), `--continue` (resume), `--mode default|full|fix-only|quick`
38
+
39
+ ### Role Registry (Fixed)
40
+
41
+ | Role | Path | Prefix |
42
+ |------|------|--------|
43
+ | scanner | [roles/scanner/role.md](roles/scanner/role.md) | SCAN-* |
44
+ | reviewer | [roles/reviewer/role.md](roles/reviewer/role.md) | REV-* |
45
+ | fixer | [roles/fixer/role.md](roles/fixer/role.md) | FIX-* |
46
+
47
+ **Session**: `.workflow/.csv-wave/{YYYYMMDD}-rv-{slug}/`
48
+
49
+ ### Review Dimensions
50
+ Security (SEC), Correctness (COR), Performance (PRF), Maintainability (MNT)
51
+ </context>
52
+
53
+ <csv_schema>
54
+
55
+ ### tasks.csv (Input columns)
56
+
57
+ ```csv
58
+ id,title,description,role,review_dimension,deps,context_from,wave
59
+ ```
60
+
61
+ | Column | Description |
62
+ |--------|-------------|
63
+ | `id` | Task ID: `{PREFIX}-{NNN}` |
64
+ | `title` | Short task title |
65
+ | `description` | PURPOSE/TASK/EXPECTED/CONSTRAINTS |
66
+ | `role` | Fixed role name |
67
+ | `review_dimension` | SEC/COR/PRF/MNT or empty |
68
+ | `deps` | Semicolon-separated dependency IDs |
69
+ | `context_from` | Context source IDs |
70
+ | `wave` | Wave number |
71
+
72
+ **Output columns** (via `output_schema` only):
73
+
74
+ | Column | Description |
75
+ |--------|-------------|
76
+ | `result_status` | completed / failed / blocked |
77
+ | `findings` | Key findings (max 500 chars) |
78
+ | `files_modified` | Semicolon-separated paths |
79
+ | `finding_count` | Number of issues found |
80
+ | `verdict` | APPROVE / CONDITIONAL / BLOCK (for REV tasks) |
81
+ | `error` | Error message |
82
+
83
+ **Column separation rule**: Input and Output MUST NOT share names.
84
+
85
+ ### Pipeline Wave Assignments
86
+
87
+ #### default (2 waves)
88
+
89
+ | Wave | Task | Role |
90
+ |------|------|------|
91
+ | 1 | SCAN-001 | scanner |
92
+ | 2 | REV-001 | reviewer |
93
+
94
+ #### full (3 waves + user checkpoint)
95
+
96
+ | Wave | Task | Role |
97
+ |------|------|------|
98
+ | 1 | SCAN-001 | scanner |
99
+ | 2 | REV-001 | reviewer |
100
+ | | User checkpoint: fix scope selection | — |
101
+ | 3 | FIX-001 | fixer |
102
+
103
+ #### fix-only (1 wave)
104
+
105
+ | Wave | Task | Role |
106
+ |------|------|------|
107
+ | 1 | FIX-001 | fixer |
108
+
109
+ #### quick (1 wave)
110
+
111
+ | Wave | Task | Role |
112
+ |------|------|------|
113
+ | 1 | SCAN-001 | scanner (quick=true) |
114
+ </csv_schema>
115
+
116
+ <invariants>
117
+ 1. **Wave Order Sacred**
118
+ 2. **CSV Source of Truth**
119
+ 3. **Column Separation Rule**
120
+ 4. **User Checkpoint Before Fix**: In full mode, pause after REV for user approval (skip if -y)
121
+ 5. **0 Findings Shortcut**: If scanner finds 0 issues → skip REV and FIX
122
+ 6. **Discovery Board Append-Only**
123
+ 7. **Cleanup Temp Files**
124
+ 8. **DO NOT STOP**: Continuous between checkpoints
125
+ 9. **Role Files Authoritative**
126
+ </invariants>
127
+
128
+ <state_machine>
129
+
130
+ <states>
131
+ S_PARSE — Parse arguments, detect mode
132
+ S_CSV_GEN — Generate tasks.csv
133
+ S_WAVE_{N} — Execute wave N
134
+ S_FIX_GATE — User approval before fix (full mode)
135
+ S_AGGREGATE — Generate report
136
+ </states>
137
+
138
+ <transitions>
139
+ S_PARSE → S_CSV_GEN
140
+ S_CSV_GEN → S_WAVE_1
141
+ S_WAVE_{N} S_FIX_GATE WHEN: mode=full, REV wave complete, FIX pending
142
+ S_WAVE_{N} → S_WAVE_{N+1} WHEN: more waves
143
+ S_WAVE_{N} S_AGGREGATE WHEN: last wave or 0 findings shortcut
144
+ S_FIX_GATE S_WAVE_{N+1} WHEN: user selects fix scope (all/critical+high)
145
+ S_FIX_GATE S_AGGREGATE WHEN: user selects skip
146
+ </transitions>
147
+
148
+ <actions>
149
+
150
+ ### Fix Gate Logic
151
+
152
+ After REV wave in full mode:
153
+ 1. Read reviewer's `findings` and `verdict`
154
+ 2. If `finding_count` = 0 or verdict = APPROVE skip fix, aggregate
155
+ 3. Display findings summary to user
156
+ 4. `request_user_input`: Fix all / Fix critical+high only / Skip fixes
157
+ 5. Update FIX-001 description with approved scope
158
+ 6. Continue to FIX wave
159
+
160
+ ### Instruction Builder
161
+
162
+ ```
163
+ You are a team-review agent.
164
+ Role: read 'role' column. Task: read 'description' column.
165
+
166
+ ## Role Definition
167
+ Read: {skillRoot}/roles/{role}/role.md
168
+
169
+ ## Context
170
+ Session: {sessionFolder}
171
+ Discovery board: {sessionFolder}/discoveries.ndjson
172
+ Previous context: 'prev_context' column
173
+ Dimensions: {skillRoot}/specs/dimensions.md
174
+
175
+ ## Output
176
+ result_status, findings, files_modified, finding_count, verdict (REV only), error
177
+ ```
178
+
179
+ </actions>
180
+ </state_machine>
181
+
182
+ <error_codes>
183
+
184
+ | Condition | Recovery |
185
+ |-----------|----------|
186
+ | Scanner found 0 issues | Skip to aggregate, report clean |
187
+ | Reviewer verdict: BLOCK | Pause for user decision |
188
+ | Fix introduces regressions | Mark blocked, report regression details |
189
+ </error_codes>
190
+
191
+ <success_criteria>
192
+ - [ ] Mode selected and CSV generated
193
+ - [ ] Scan → Review → Fix pipeline executed
194
+ - [ ] User checkpoint before fixes (unless -y)
195
+ - [ ] 0-findings shortcut works
196
+ - [ ] Column separation maintained
197
+ - [ ] results.csv and context.md generated
198
+ </success_criteria>