maestro-flow 0.5.3 → 0.5.31

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 (259) hide show
  1. package/.agents/skills/learn-follow/SKILL.md +114 -114
  2. package/.agents/skills/learn-investigate/SKILL.md +138 -139
  3. package/.agents/skills/learn-second-opinion/SKILL.md +105 -109
  4. package/.agents/skills/maestro/SKILL.md +2 -10
  5. package/.agents/skills/maestro-amend/SKILL.md +152 -152
  6. package/.agents/skills/maestro-analyze/SKILL.md +201 -252
  7. package/.agents/skills/maestro-blueprint/SKILL.md +175 -190
  8. package/.agents/skills/maestro-brainstorm/SKILL.md +196 -200
  9. package/.agents/skills/maestro-collab/SKILL.md +159 -159
  10. package/.agents/skills/maestro-companion/SKILL.md +517 -517
  11. package/.agents/skills/maestro-composer/SKILL.md +173 -164
  12. package/.agents/skills/maestro-execute/SKILL.md +169 -170
  13. package/.agents/skills/maestro-fork/SKILL.md +97 -96
  14. package/.agents/skills/maestro-grill/SKILL.md +161 -162
  15. package/.agents/skills/maestro-guard/SKILL.md +93 -92
  16. package/.agents/skills/maestro-impeccable/SKILL.md +296 -253
  17. package/.agents/skills/maestro-init/SKILL.md +117 -118
  18. package/.agents/skills/maestro-merge/SKILL.md +73 -66
  19. package/.agents/skills/maestro-milestone-audit/SKILL.md +4 -10
  20. package/.agents/skills/maestro-milestone-complete/SKILL.md +6 -7
  21. package/.agents/skills/maestro-milestone-release/SKILL.md +122 -131
  22. package/.agents/skills/maestro-next/SKILL.md +241 -245
  23. package/.agents/skills/maestro-overlay/SKILL.md +176 -166
  24. package/.agents/skills/maestro-plan/SKILL.md +211 -197
  25. package/.agents/skills/maestro-player/SKILL.md +167 -167
  26. package/.agents/skills/maestro-quick/SKILL.md +69 -63
  27. package/.agents/skills/maestro-ralph/SKILL.md +2 -36
  28. package/.agents/skills/maestro-ralph-beta/SKILL.md +861 -872
  29. package/.agents/skills/maestro-ralph-execute/SKILL.md +234 -234
  30. package/.agents/skills/maestro-roadmap/SKILL.md +159 -172
  31. package/.agents/skills/maestro-swarm-workflow/SKILL.md +229 -250
  32. package/.agents/skills/maestro-tools-execute/SKILL.md +108 -103
  33. package/.agents/skills/maestro-tools-register/SKILL.md +148 -143
  34. package/.agents/skills/maestro-ui-codify/SKILL.md +103 -86
  35. package/.agents/skills/maestro-universal-workflow/SKILL.md +534 -547
  36. package/.agents/skills/maestro-update/SKILL.md +109 -106
  37. package/.agents/skills/manage-codebase-rebuild/SKILL.md +73 -71
  38. package/.agents/skills/manage-harvest/SKILL.md +83 -81
  39. package/.agents/skills/manage-issue/SKILL.md +59 -60
  40. package/.agents/skills/manage-issue-discover/SKILL.md +70 -68
  41. package/.agents/skills/manage-kg-extractors/SKILL.md +130 -0
  42. package/.agents/skills/manage-knowhow/SKILL.md +70 -66
  43. package/.agents/skills/manage-knowhow-capture/SKILL.md +79 -69
  44. package/.agents/skills/manage-knowledge-audit/SKILL.md +91 -74
  45. package/.agents/skills/manage-status/SKILL.md +52 -42
  46. package/.agents/skills/manage-wiki/SKILL.md +69 -58
  47. package/.agents/skills/odyssey-debug/SKILL.md +445 -459
  48. package/.agents/skills/odyssey-improve/SKILL.md +477 -491
  49. package/.agents/skills/odyssey-planex/SKILL.md +576 -587
  50. package/.agents/skills/odyssey-review-test-fix/SKILL.md +400 -413
  51. package/.agents/skills/odyssey-ui/SKILL.md +431 -448
  52. package/.agents/skills/quality-auto-test/SKILL.md +140 -123
  53. package/.agents/skills/quality-debug/SKILL.md +145 -106
  54. package/.agents/skills/quality-refactor/SKILL.md +91 -53
  55. package/.agents/skills/quality-retrospective/SKILL.md +109 -63
  56. package/.agents/skills/quality-review/SKILL.md +141 -114
  57. package/.agents/skills/quality-sync/SKILL.md +74 -38
  58. package/.agents/skills/quality-test/SKILL.md +133 -103
  59. package/.agents/skills/security-audit/SKILL.md +217 -166
  60. package/.agents/skills/spec-add/SKILL.md +66 -59
  61. package/.agents/skills/spec-load/SKILL.md +68 -68
  62. package/.agents/skills/spec-remove/SKILL.md +42 -42
  63. package/.agents/skills/spec-setup/SKILL.md +38 -41
  64. package/.agy/skills/learn-follow/SKILL.md +114 -114
  65. package/.agy/skills/learn-investigate/SKILL.md +138 -139
  66. package/.agy/skills/learn-second-opinion/SKILL.md +105 -109
  67. package/.agy/skills/maestro/SKILL.md +2 -10
  68. package/.agy/skills/maestro-amend/SKILL.md +152 -152
  69. package/.agy/skills/maestro-analyze/SKILL.md +201 -252
  70. package/.agy/skills/maestro-blueprint/SKILL.md +175 -190
  71. package/.agy/skills/maestro-brainstorm/SKILL.md +196 -200
  72. package/.agy/skills/maestro-collab/SKILL.md +159 -159
  73. package/.agy/skills/maestro-companion/SKILL.md +517 -517
  74. package/.agy/skills/maestro-composer/SKILL.md +173 -164
  75. package/.agy/skills/maestro-execute/SKILL.md +169 -170
  76. package/.agy/skills/maestro-fork/SKILL.md +97 -96
  77. package/.agy/skills/maestro-grill/SKILL.md +161 -162
  78. package/.agy/skills/maestro-guard/SKILL.md +93 -92
  79. package/.agy/skills/maestro-impeccable/SKILL.md +296 -253
  80. package/.agy/skills/maestro-init/SKILL.md +117 -118
  81. package/.agy/skills/maestro-merge/SKILL.md +73 -66
  82. package/.agy/skills/maestro-milestone-audit/SKILL.md +4 -10
  83. package/.agy/skills/maestro-milestone-complete/SKILL.md +6 -7
  84. package/.agy/skills/maestro-milestone-release/SKILL.md +122 -131
  85. package/.agy/skills/maestro-next/SKILL.md +241 -245
  86. package/.agy/skills/maestro-overlay/SKILL.md +176 -166
  87. package/.agy/skills/maestro-plan/SKILL.md +211 -197
  88. package/.agy/skills/maestro-player/SKILL.md +167 -167
  89. package/.agy/skills/maestro-quick/SKILL.md +69 -63
  90. package/.agy/skills/maestro-ralph/SKILL.md +2 -36
  91. package/.agy/skills/maestro-ralph-beta/SKILL.md +861 -872
  92. package/.agy/skills/maestro-ralph-execute/SKILL.md +234 -234
  93. package/.agy/skills/maestro-roadmap/SKILL.md +159 -172
  94. package/.agy/skills/maestro-swarm-workflow/SKILL.md +229 -250
  95. package/.agy/skills/maestro-tools-execute/SKILL.md +108 -103
  96. package/.agy/skills/maestro-tools-register/SKILL.md +148 -143
  97. package/.agy/skills/maestro-ui-codify/SKILL.md +103 -86
  98. package/.agy/skills/maestro-universal-workflow/SKILL.md +534 -547
  99. package/.agy/skills/maestro-update/SKILL.md +109 -106
  100. package/.agy/skills/manage-codebase-rebuild/SKILL.md +73 -71
  101. package/.agy/skills/manage-harvest/SKILL.md +83 -81
  102. package/.agy/skills/manage-issue/SKILL.md +59 -60
  103. package/.agy/skills/manage-issue-discover/SKILL.md +70 -68
  104. package/.agy/skills/manage-kg-extractors/SKILL.md +130 -0
  105. package/.agy/skills/manage-knowhow/SKILL.md +70 -66
  106. package/.agy/skills/manage-knowhow-capture/SKILL.md +79 -69
  107. package/.agy/skills/manage-knowledge-audit/SKILL.md +91 -74
  108. package/.agy/skills/manage-status/SKILL.md +52 -42
  109. package/.agy/skills/manage-wiki/SKILL.md +69 -58
  110. package/.agy/skills/odyssey-debug/SKILL.md +445 -459
  111. package/.agy/skills/odyssey-improve/SKILL.md +477 -491
  112. package/.agy/skills/odyssey-planex/SKILL.md +576 -587
  113. package/.agy/skills/odyssey-review-test-fix/SKILL.md +400 -413
  114. package/.agy/skills/odyssey-ui/SKILL.md +431 -448
  115. package/.agy/skills/quality-auto-test/SKILL.md +140 -123
  116. package/.agy/skills/quality-debug/SKILL.md +145 -106
  117. package/.agy/skills/quality-refactor/SKILL.md +91 -53
  118. package/.agy/skills/quality-retrospective/SKILL.md +109 -63
  119. package/.agy/skills/quality-review/SKILL.md +141 -114
  120. package/.agy/skills/quality-sync/SKILL.md +74 -38
  121. package/.agy/skills/quality-test/SKILL.md +133 -103
  122. package/.agy/skills/security-audit/SKILL.md +217 -166
  123. package/.agy/skills/spec-add/SKILL.md +66 -59
  124. package/.agy/skills/spec-load/SKILL.md +68 -68
  125. package/.agy/skills/spec-remove/SKILL.md +42 -42
  126. package/.agy/skills/spec-setup/SKILL.md +38 -41
  127. package/.claude/commands/learn-follow.md +127 -127
  128. package/.claude/commands/learn-investigate.md +151 -152
  129. package/.claude/commands/learn-second-opinion.md +118 -122
  130. package/.claude/commands/maestro-amend.md +164 -164
  131. package/.claude/commands/maestro-analyze.md +215 -266
  132. package/.claude/commands/maestro-blueprint.md +189 -204
  133. package/.claude/commands/maestro-brainstorm.md +209 -213
  134. package/.claude/commands/maestro-collab.md +172 -172
  135. package/.claude/commands/maestro-companion.md +531 -531
  136. package/.claude/commands/maestro-composer.md +188 -179
  137. package/.claude/commands/maestro-execute.md +183 -184
  138. package/.claude/commands/maestro-fork.md +111 -110
  139. package/.claude/commands/maestro-grill.md +175 -176
  140. package/.claude/commands/maestro-guard.md +103 -102
  141. package/.claude/commands/maestro-impeccable.md +311 -268
  142. package/.claude/commands/maestro-init.md +130 -131
  143. package/.claude/commands/maestro-merge.md +87 -80
  144. package/.claude/commands/maestro-milestone-audit.md +4 -10
  145. package/.claude/commands/maestro-milestone-complete.md +6 -7
  146. package/.claude/commands/maestro-milestone-release.md +136 -145
  147. package/.claude/commands/maestro-next.md +253 -257
  148. package/.claude/commands/maestro-overlay.md +188 -178
  149. package/.claude/commands/maestro-plan.md +225 -211
  150. package/.claude/commands/maestro-player.md +182 -182
  151. package/.claude/commands/maestro-quick.md +83 -77
  152. package/.claude/commands/maestro-ralph-beta.md +875 -886
  153. package/.claude/commands/maestro-ralph-execute.md +247 -247
  154. package/.claude/commands/maestro-ralph.md +2 -36
  155. package/.claude/commands/maestro-roadmap.md +173 -186
  156. package/.claude/commands/maestro-swarm-workflow.md +243 -264
  157. package/.claude/commands/maestro-tools-execute.md +122 -117
  158. package/.claude/commands/maestro-tools-register.md +162 -157
  159. package/.claude/commands/maestro-ui-codify.md +117 -100
  160. package/.claude/commands/maestro-universal-workflow.md +548 -561
  161. package/.claude/commands/maestro-update.md +122 -119
  162. package/.claude/commands/maestro.md +2 -10
  163. package/.claude/commands/manage-codebase-rebuild.md +87 -85
  164. package/.claude/commands/manage-harvest.md +97 -95
  165. package/.claude/commands/manage-issue-discover.md +83 -81
  166. package/.claude/commands/manage-issue.md +72 -73
  167. package/.claude/commands/manage-kg-extractors.md +128 -0
  168. package/.claude/commands/manage-knowhow-capture.md +92 -82
  169. package/.claude/commands/manage-knowhow.md +83 -79
  170. package/.claude/commands/manage-knowledge-audit.md +105 -88
  171. package/.claude/commands/manage-status.md +62 -52
  172. package/.claude/commands/manage-wiki.md +82 -71
  173. package/.claude/commands/odyssey-debug.md +459 -473
  174. package/.claude/commands/odyssey-improve.md +491 -505
  175. package/.claude/commands/odyssey-planex.md +590 -601
  176. package/.claude/commands/odyssey-review-test-fix.md +414 -427
  177. package/.claude/commands/odyssey-ui.md +445 -462
  178. package/.claude/commands/quality-auto-test.md +153 -136
  179. package/.claude/commands/quality-debug.md +159 -120
  180. package/.claude/commands/quality-refactor.md +105 -67
  181. package/.claude/commands/quality-retrospective.md +123 -77
  182. package/.claude/commands/quality-review.md +155 -128
  183. package/.claude/commands/quality-sync.md +88 -52
  184. package/.claude/commands/quality-test.md +147 -117
  185. package/.claude/commands/security-audit.md +230 -179
  186. package/.claude/commands/spec-add.md +77 -70
  187. package/.claude/commands/spec-load.md +78 -78
  188. package/.claude/commands/spec-remove.md +55 -55
  189. package/.claude/commands/spec-setup.md +49 -52
  190. package/dist/src/cli.js +1 -1
  191. package/dist/src/cli.js.map +1 -1
  192. package/dist/src/commands/kg.d.ts.map +1 -1
  193. package/dist/src/commands/kg.js +11 -5
  194. package/dist/src/commands/kg.js.map +1 -1
  195. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +2 -0
  196. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -1
  197. package/dist/src/graph/kg/extraction/code/code-extractor.js +32 -3
  198. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
  199. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts +35 -0
  200. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts.map +1 -0
  201. package/dist/src/graph/kg/extraction/code/plugin-engine.js +573 -0
  202. package/dist/src/graph/kg/extraction/code/plugin-engine.js.map +1 -0
  203. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts +95 -0
  204. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts.map +1 -0
  205. package/dist/src/graph/kg/extraction/code/plugin-types.js +5 -0
  206. package/dist/src/graph/kg/extraction/code/plugin-types.js.map +1 -0
  207. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
  208. package/dist/src/graph/kg/extraction/orchestrator.js +17 -5
  209. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
  210. package/dist/src/graph/kg/schema.sql +16 -11
  211. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
  212. package/dist/src/graph/kg/surface/cli.js +153 -56
  213. package/dist/src/graph/kg/surface/cli.js.map +1 -1
  214. package/dist/src/hooks/workspace.d.ts +4 -2
  215. package/dist/src/hooks/workspace.d.ts.map +1 -1
  216. package/dist/src/hooks/workspace.js +6 -2
  217. package/dist/src/hooks/workspace.js.map +1 -1
  218. package/package.json +91 -91
  219. package/workflows/analyze.md +25 -49
  220. package/workflows/auto-test.md +699 -699
  221. package/workflows/blueprint.md +403 -431
  222. package/workflows/brainstorm.md +54 -195
  223. package/workflows/business-test.md +570 -570
  224. package/workflows/claude-instructions.md +23 -51
  225. package/workflows/codex-instructions.md +27 -77
  226. package/workflows/coding-philosophy.md +69 -69
  227. package/workflows/command-authoring.md +823 -823
  228. package/workflows/debug.md +43 -98
  229. package/workflows/delegate-usage.md +39 -241
  230. package/workflows/execute.md +4 -53
  231. package/workflows/grill.md +12 -56
  232. package/workflows/harvest.md +22 -68
  233. package/workflows/init.md +148 -148
  234. package/workflows/instruction-authoring-guide.md +97 -0
  235. package/workflows/issue-execute.md +110 -110
  236. package/workflows/issue-gaps-analyze.codex.md +260 -260
  237. package/workflows/issue-gaps-analyze.md +216 -216
  238. package/workflows/issue-plan.md +110 -110
  239. package/workflows/issue.md +338 -346
  240. package/workflows/knowhow.md +0 -32
  241. package/workflows/learn.md +277 -277
  242. package/workflows/maestro-chain-execute.md +20 -20
  243. package/workflows/refactor.md +22 -44
  244. package/workflows/retrospective.md +16 -65
  245. package/workflows/review.md +446 -486
  246. package/workflows/roadmap.md +35 -132
  247. package/workflows/skill-authoring.md +265 -265
  248. package/workflows/spec-generate.md +470 -470
  249. package/workflows/specs-remove.md +104 -104
  250. package/workflows/sync.md +11 -41
  251. package/workflows/test-gen.md +226 -226
  252. package/workflows/test.md +385 -475
  253. package/workflows/ui-design.md +391 -391
  254. package/workflows/ui-style.md +199 -199
  255. package/workflows/wiki-connect.md +151 -151
  256. package/workflows/wiki-digest.md +178 -178
  257. package/workflows/wiki-manage.md +109 -109
  258. package/workflows/cli-tools-usage.md +0 -252
  259. package/workflows/delegate-protocol.codex.md +0 -65
@@ -1,260 +1,260 @@
1
- # Workflow: Issue Gaps Analysis (Codex — CSV Wave)
2
-
3
- Root cause analysis for issues via `spawn_agents_on_csv` wave execution.
4
- Supports single issue (ISS-ID) or batch with classification and parallel analysis.
5
- Produces analysis records in issues.jsonl and context.md for downstream `plan --gaps`.
6
-
7
- **Invoked by**: `maestro-analyze --gaps [ISS-ID]` (codex SKILL.md)
8
-
9
- ## Pipeline
10
-
11
- ```
12
- Load Issues → Classify & Group → Generate tasks.csv → Wave 1: Explore (parallel per issue) → Wave 2: Synthesize (per group) → Write issue.analysis → Output context.md
13
- ```
14
-
15
- ---
16
-
17
- ### Step 1: Load Issues
18
-
19
- ```
20
- If ISS-ID provided:
21
- Load single issue from .workflow/issues/issues.jsonl
22
- → fatal if file missing or ID not found (E_ISSUE_NOT_FOUND)
23
- → skip Step 2 (single issue = single group)
24
-
25
- If no ISS-ID:
26
- Load all issues where status == "open" || status == "registered"
27
- → fatal if none found (E_NO_ISSUES)
28
- ```
29
-
30
- ---
31
-
32
- ### Step 2: Classify & Group (batch mode only)
33
-
34
- ```
35
- Group loaded issues by affected area overlap:
36
-
37
- Classification dimensions:
38
- - location: file path prefix (first 2 segments, e.g. src/auth/)
39
- - component: affected_components field overlap
40
- - category: issue.category or severity
41
-
42
- Grouping rules:
43
- 1. Same location prefix → same group
44
- 2. Shared affected_components → same group
45
- 3. Remaining ungrouped → individual groups (1 issue each)
46
-
47
- Output: GROUPS[] = { group_id, label, issues[], shared_keywords[] }
48
-
49
- Display group breakdown (skip if AUTO_YES).
50
- ```
51
-
52
- ---
53
-
54
- ### Step 3: Generate tasks.csv
55
-
56
- Generate CSV with two waves:
57
- - **Wave 1**: One exploration row per issue (parallel within wave)
58
- - **Wave 2**: One synthesis row per group (parallel across groups, depends on its issues in wave 1)
59
-
60
- ```csv
61
- id,title,description,iss_id,group_id,group_label,deps,context_from,wave,status,findings,analysis_json,error
62
- ```
63
-
64
- **Wave 1 rows** — one per issue:
65
-
66
- ```csv
67
- "1","Explore: ISS-xxx {title}","Root cause exploration for ISS-xxx: {description}. Location: {location}. Severity: {severity}. Fix hint: {fix_direction}. Search keywords: {keywords from title+description+components}. TASK: grep keywords → read top matches → trace call chain → identify root cause (file:line) → assess impact → list related files → rate confidence → suggest fix. EXPECTED: JSON { root_cause, impact, related_files[], confidence, suggested_approach }. CONSTRAINTS: Evidence-only, use file reads to verify.","ISS-xxx","G1","src/auth","","","1","","","",""
68
- ```
69
-
70
- **Wave 2 rows** — one per group:
71
-
72
- ```csv
73
- "N","Synthesize: {group_label}","Compile exploration findings for group [{group_label}]. For each issue: validate root cause evidence, identify cross-issue relationships, build analysis record. Output: JSON array [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }]. Note shared root causes and dependency chains across issues in this group.","","G1","src/auth","1;2;3","1;2;3","2","","","",""
74
- ```
75
-
76
- **Column definitions**:
77
-
78
- | Column | Phase | Description |
79
- |--------|-------|-------------|
80
- | `id` | Input | Unique task identifier |
81
- | `title` | Input | Short task title |
82
- | `description` | Input | Full exploration/synthesis instructions |
83
- | `iss_id` | Input | Issue ID (wave 1 only, empty for wave 2) |
84
- | `group_id` | Input | Group identifier |
85
- | `group_label` | Input | Group label for display |
86
- | `deps` | Input | Semicolon-separated dependency task IDs |
87
- | `context_from` | Input | Task IDs whose findings this task needs |
88
- | `wave` | Input | 1 = explore, 2 = synthesize |
89
- | `status` | Output | `pending` → `completed` / `failed` |
90
- | `findings` | Output | Key findings summary (max 500 chars) |
91
- | `analysis_json` | Output | Structured analysis JSON (wave 2 only) |
92
- | `error` | Output | Error message if failed |
93
-
94
- Write `tasks.csv` to session folder.
95
-
96
- ---
97
-
98
- ### Step 4: Wave 1 — Explore (parallel per issue)
99
-
100
- Filter `wave == 1 && status == pending`. Write `wave-1.csv`.
101
-
102
- ```javascript
103
- spawn_agents_on_csv({
104
- csv_path: `${sessionFolder}/wave-1.csv`,
105
- id_column: "id",
106
- instruction: `You are analyzing a specific issue for root cause. Read the 'description' column for full instructions. Use file reads and grep to gather evidence. Write findings as a concise summary with file:line references. Write analysis_json as a JSON object: { root_cause, impact, related_files[], confidence, suggested_approach }.`,
107
- max_concurrency: maxConcurrency,
108
- max_runtime_seconds: 3600,
109
- output_csv_path: `${sessionFolder}/wave-1-results.csv`,
110
- output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
111
- })
112
- ```
113
-
114
- Merge results into master `tasks.csv`, delete `wave-1.csv`.
115
-
116
- **Per-issue agent responsibilities**:
117
- 1. **Keyword Search** — grep issue keywords in source, find top 20 relevant paths
118
- 2. **Context Read** — read top 5 matches with 10 lines surrounding context
119
- 3. **Call Chain Trace** — trace 2-3 levels from issue location
120
- 4. **Root Cause Identification** — pinpoint file:line with evidence
121
- 5. **Impact Assessment** — scope of affected functionality
122
-
123
- ---
124
-
125
- ### Step 5: Wave 2 — Synthesize (parallel per group)
126
-
127
- Filter `wave == 2 && status == pending`. Build `prev_context` from wave 1 findings of issues in same group. Write `wave-2.csv` with `prev_context` column.
128
-
129
- ```javascript
130
- spawn_agents_on_csv({
131
- csv_path: `${sessionFolder}/wave-2.csv`,
132
- id_column: "id",
133
- instruction: `You are synthesizing root cause analysis for a group of related issues. Read prev_context for per-issue exploration findings. Validate evidence, identify cross-issue relationships and shared root causes. Output analysis_json as a JSON array: [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }].`,
134
- max_concurrency: maxConcurrency,
135
- max_runtime_seconds: 3600,
136
- output_csv_path: `${sessionFolder}/wave-2-results.csv`,
137
- output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
138
- })
139
- ```
140
-
141
- Merge results into master `tasks.csv`, delete `wave-2.csv`.
142
-
143
- **Synthesis agent responsibilities**:
144
- 1. Parse per-issue findings from prev_context
145
- 2. Validate root cause evidence (file:line exists, logic holds)
146
- 3. Identify cross-issue relationships within group
147
- 4. Build consolidated analysis array with cross_refs
148
- 5. Flag shared root causes that affect multiple issues
149
-
150
- ---
151
-
152
- ### Step 6: Write Analysis to issues.jsonl
153
-
154
- ```
155
- Parse analysis_json from wave 2 results.
156
-
157
- For each issue in the analysis array:
158
- Build IssueAnalysis record:
159
- {
160
- root_cause,
161
- affected_files,
162
- impact_scope,
163
- fix_direction,
164
- confidence,
165
- cross_refs,
166
- analyzed_at: NOW_ISO,
167
- tool: "spawn_agents_on_csv",
168
- depth: DEPTH
169
- }
170
-
171
- Read-modify-write issues.jsonl (single pass):
172
- Set issue.analysis = ANALYSIS, updated_at = NOW_ISO
173
- Append issue.history: { action: "analyzed", at: NOW_ISO, by: "maestro-analyze --gaps" }
174
- Status unchanged (non-destructive enrichment).
175
-
176
- Verify: re-read, confirm analysis field present for all updated issues.
177
- ```
178
-
179
- ---
180
-
181
- ### Step 7: Output context.md
182
-
183
- ```
184
- Aggregate results organized by group:
185
-
186
- # Context: Issue Gaps Analysis
187
-
188
- **Date**: {date}
189
- **Issues analyzed**: {count}
190
- **Groups**: {group_count}
191
- **Session**: {sessionFolder}
192
-
193
- ## Group: {group.label}
194
-
195
- ### ISS-{id}: {title}
196
- - **Root cause**: {root_cause}
197
- - **Affected files**: {affected_files}
198
- - **Impact scope**: {impact_scope}
199
- - **Fix direction**: {fix_direction}
200
- - **Confidence**: {confidence}
201
- - **Cross-refs**: {related ISS-IDs}
202
-
203
- (repeat per issue, per group)
204
-
205
- ## Cross-Group Dependencies
206
- {issues sharing root causes across groups}
207
-
208
- ## Constraints
209
-
210
- ### Locked
211
- {constraints from root cause evidence}
212
-
213
- ### Free
214
- {implementation choices left to planner}
215
-
216
- Write context.md to session folder + copy to scratchDir.
217
- Register artifact in state.json.
218
- ```
219
-
220
- ---
221
-
222
- ### Step 8: Display Summary and Next Steps
223
-
224
- ```
225
- Display: group breakdown, per-issue root cause, confidence, cross-refs.
226
-
227
- Next steps:
228
- - maestro-plan --gaps (plan fix tasks linked to analyzed issues)
229
- - maestro-analyze --gaps {ISS-ID} (re-analyze specific issue)
230
- - manage-issue list (review all issues)
231
- ```
232
-
233
- ---
234
-
235
- ## Session Structure
236
-
237
- ```
238
- .workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/
239
- ├── tasks.csv # master state
240
- ├── results.csv # final export
241
- ├── wave-1.csv # temporary (deleted after merge)
242
- ├── wave-2.csv # temporary (deleted after merge)
243
- ├── discoveries.ndjson # shared board (append-only)
244
- ├── context.md # decisions for plan --gaps
245
- ```
246
-
247
- ## Output
248
-
249
- - **Updated**: `.workflow/issues/issues.jsonl` — enriched with `analysis` field per issue
250
- - **Created**: `context.md` — grouped root causes for downstream `plan --gaps`
251
- - **Created**: `results.csv` — full task execution results
252
-
253
- ## Quality Criteria
254
-
255
- - Issues classified into groups before CSV generation
256
- - Wave 1 agents run parallel (one per issue, bounded by maxConcurrency)
257
- - Wave 2 agents run parallel (one per group, after wave 1 deps met)
258
- - Cross-issue relationships captured via cross_refs
259
- - Single-pass JSONL update preserves integrity
260
- - context.md organized by group with cross-group section
1
+ # Workflow: Issue Gaps Analysis (Codex — CSV Wave)
2
+
3
+ Root cause analysis for issues via `spawn_agents_on_csv` wave execution.
4
+ Supports single issue (ISS-ID) or batch with classification and parallel analysis.
5
+ Produces analysis records in issues.jsonl and context.md for downstream `plan --gaps`.
6
+
7
+ **Invoked by**: `maestro-analyze --gaps [ISS-ID]` (codex SKILL.md)
8
+
9
+ ## Pipeline
10
+
11
+ ```
12
+ Load Issues → Classify & Group → Generate tasks.csv → Wave 1: Explore (parallel per issue) → Wave 2: Synthesize (per group) → Write issue.analysis → Output context.md
13
+ ```
14
+
15
+ ---
16
+
17
+ ### Step 1: Load Issues
18
+
19
+ ```
20
+ If ISS-ID provided:
21
+ Load single issue from .workflow/issues/issues.jsonl
22
+ → fatal if file missing or ID not found (E_ISSUE_NOT_FOUND)
23
+ → skip Step 2 (single issue = single group)
24
+
25
+ If no ISS-ID:
26
+ Load all issues where status == "open" || status == "registered"
27
+ → fatal if none found (E_NO_ISSUES)
28
+ ```
29
+
30
+ ---
31
+
32
+ ### Step 2: Classify & Group (batch mode only)
33
+
34
+ ```
35
+ Group loaded issues by affected area overlap:
36
+
37
+ Classification dimensions:
38
+ - location: file path prefix (first 2 segments, e.g. src/auth/)
39
+ - component: affected_components field overlap
40
+ - category: issue.category or severity
41
+
42
+ Grouping rules:
43
+ 1. Same location prefix → same group
44
+ 2. Shared affected_components → same group
45
+ 3. Remaining ungrouped → individual groups (1 issue each)
46
+
47
+ Output: GROUPS[] = { group_id, label, issues[], shared_keywords[] }
48
+
49
+ Display group breakdown (skip if AUTO_YES).
50
+ ```
51
+
52
+ ---
53
+
54
+ ### Step 3: Generate tasks.csv
55
+
56
+ Generate CSV with two waves:
57
+ - **Wave 1**: One exploration row per issue (parallel within wave)
58
+ - **Wave 2**: One synthesis row per group (parallel across groups, depends on its issues in wave 1)
59
+
60
+ ```csv
61
+ id,title,description,iss_id,group_id,group_label,deps,context_from,wave,status,findings,analysis_json,error
62
+ ```
63
+
64
+ **Wave 1 rows** — one per issue:
65
+
66
+ ```csv
67
+ "1","Explore: ISS-xxx {title}","Root cause exploration for ISS-xxx: {description}. Location: {location}. Severity: {severity}. Fix hint: {fix_direction}. Search keywords: {keywords from title+description+components}. TASK: grep keywords → read top matches → trace call chain → identify root cause (file:line) → assess impact → list related files → rate confidence → suggest fix. EXPECTED: JSON { root_cause, impact, related_files[], confidence, suggested_approach }. CONSTRAINTS: Evidence-only, use file reads to verify.","ISS-xxx","G1","src/auth","","","1","","","",""
68
+ ```
69
+
70
+ **Wave 2 rows** — one per group:
71
+
72
+ ```csv
73
+ "N","Synthesize: {group_label}","Compile exploration findings for group [{group_label}]. For each issue: validate root cause evidence, identify cross-issue relationships, build analysis record. Output: JSON array [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }]. Note shared root causes and dependency chains across issues in this group.","","G1","src/auth","1;2;3","1;2;3","2","","","",""
74
+ ```
75
+
76
+ **Column definitions**:
77
+
78
+ | Column | Phase | Description |
79
+ |--------|-------|-------------|
80
+ | `id` | Input | Unique task identifier |
81
+ | `title` | Input | Short task title |
82
+ | `description` | Input | Full exploration/synthesis instructions |
83
+ | `iss_id` | Input | Issue ID (wave 1 only, empty for wave 2) |
84
+ | `group_id` | Input | Group identifier |
85
+ | `group_label` | Input | Group label for display |
86
+ | `deps` | Input | Semicolon-separated dependency task IDs |
87
+ | `context_from` | Input | Task IDs whose findings this task needs |
88
+ | `wave` | Input | 1 = explore, 2 = synthesize |
89
+ | `status` | Output | `pending` → `completed` / `failed` |
90
+ | `findings` | Output | Key findings summary (max 500 chars) |
91
+ | `analysis_json` | Output | Structured analysis JSON (wave 2 only) |
92
+ | `error` | Output | Error message if failed |
93
+
94
+ Write `tasks.csv` to session folder.
95
+
96
+ ---
97
+
98
+ ### Step 4: Wave 1 — Explore (parallel per issue)
99
+
100
+ Filter `wave == 1 && status == pending`. Write `wave-1.csv`.
101
+
102
+ ```javascript
103
+ spawn_agents_on_csv({
104
+ csv_path: `${sessionFolder}/wave-1.csv`,
105
+ id_column: "id",
106
+ instruction: `You are analyzing a specific issue for root cause. Read the 'description' column for full instructions. Use file reads and grep to gather evidence. Write findings as a concise summary with file:line references. Write analysis_json as a JSON object: { root_cause, impact, related_files[], confidence, suggested_approach }.`,
107
+ max_concurrency: maxConcurrency,
108
+ max_runtime_seconds: 3600,
109
+ output_csv_path: `${sessionFolder}/wave-1-results.csv`,
110
+ output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
111
+ })
112
+ ```
113
+
114
+ Merge results into master `tasks.csv`, delete `wave-1.csv`.
115
+
116
+ **Per-issue agent responsibilities**:
117
+ 1. **Keyword Search** — grep issue keywords in source, find top 20 relevant paths
118
+ 2. **Context Read** — read top 5 matches with 10 lines surrounding context
119
+ 3. **Call Chain Trace** — trace 2-3 levels from issue location
120
+ 4. **Root Cause Identification** — pinpoint file:line with evidence
121
+ 5. **Impact Assessment** — scope of affected functionality
122
+
123
+ ---
124
+
125
+ ### Step 5: Wave 2 — Synthesize (parallel per group)
126
+
127
+ Filter `wave == 2 && status == pending`. Build `prev_context` from wave 1 findings of issues in same group. Write `wave-2.csv` with `prev_context` column.
128
+
129
+ ```javascript
130
+ spawn_agents_on_csv({
131
+ csv_path: `${sessionFolder}/wave-2.csv`,
132
+ id_column: "id",
133
+ instruction: `You are synthesizing root cause analysis for a group of related issues. Read prev_context for per-issue exploration findings. Validate evidence, identify cross-issue relationships and shared root causes. Output analysis_json as a JSON array: [{ iss_id, root_cause, affected_files, impact_scope, fix_direction, confidence, cross_refs }].`,
134
+ max_concurrency: maxConcurrency,
135
+ max_runtime_seconds: 3600,
136
+ output_csv_path: `${sessionFolder}/wave-2-results.csv`,
137
+ output_schema: { id, status: ["completed"|"failed"], findings, analysis_json, error }
138
+ })
139
+ ```
140
+
141
+ Merge results into master `tasks.csv`, delete `wave-2.csv`.
142
+
143
+ **Synthesis agent responsibilities**:
144
+ 1. Parse per-issue findings from prev_context
145
+ 2. Validate root cause evidence (file:line exists, logic holds)
146
+ 3. Identify cross-issue relationships within group
147
+ 4. Build consolidated analysis array with cross_refs
148
+ 5. Flag shared root causes that affect multiple issues
149
+
150
+ ---
151
+
152
+ ### Step 6: Write Analysis to issues.jsonl
153
+
154
+ ```
155
+ Parse analysis_json from wave 2 results.
156
+
157
+ For each issue in the analysis array:
158
+ Build IssueAnalysis record:
159
+ {
160
+ root_cause,
161
+ affected_files,
162
+ impact_scope,
163
+ fix_direction,
164
+ confidence,
165
+ cross_refs,
166
+ analyzed_at: NOW_ISO,
167
+ tool: "spawn_agents_on_csv",
168
+ depth: DEPTH
169
+ }
170
+
171
+ Read-modify-write issues.jsonl (single pass):
172
+ Set issue.analysis = ANALYSIS, updated_at = NOW_ISO
173
+ Append issue.history: { action: "analyzed", at: NOW_ISO, by: "maestro-analyze --gaps" }
174
+ Status unchanged (non-destructive enrichment).
175
+
176
+ Verify: re-read, confirm analysis field present for all updated issues.
177
+ ```
178
+
179
+ ---
180
+
181
+ ### Step 7: Output context.md
182
+
183
+ ```
184
+ Aggregate results organized by group:
185
+
186
+ # Context: Issue Gaps Analysis
187
+
188
+ **Date**: {date}
189
+ **Issues analyzed**: {count}
190
+ **Groups**: {group_count}
191
+ **Session**: {sessionFolder}
192
+
193
+ ## Group: {group.label}
194
+
195
+ ### ISS-{id}: {title}
196
+ - **Root cause**: {root_cause}
197
+ - **Affected files**: {affected_files}
198
+ - **Impact scope**: {impact_scope}
199
+ - **Fix direction**: {fix_direction}
200
+ - **Confidence**: {confidence}
201
+ - **Cross-refs**: {related ISS-IDs}
202
+
203
+ (repeat per issue, per group)
204
+
205
+ ## Cross-Group Dependencies
206
+ {issues sharing root causes across groups}
207
+
208
+ ## Constraints
209
+
210
+ ### Locked
211
+ {constraints from root cause evidence}
212
+
213
+ ### Free
214
+ {implementation choices left to planner}
215
+
216
+ Write context.md to session folder + copy to scratchDir.
217
+ Register artifact in state.json.
218
+ ```
219
+
220
+ ---
221
+
222
+ ### Step 8: Display Summary and Next Steps
223
+
224
+ ```
225
+ Display: group breakdown, per-issue root cause, confidence, cross-refs.
226
+
227
+ Next steps:
228
+ - maestro-plan --gaps (plan fix tasks linked to analyzed issues)
229
+ - maestro-analyze --gaps {ISS-ID} (re-analyze specific issue)
230
+ - manage-issue list (review all issues)
231
+ ```
232
+
233
+ ---
234
+
235
+ ## Session Structure
236
+
237
+ ```
238
+ .workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/
239
+ ├── tasks.csv # master state
240
+ ├── results.csv # final export
241
+ ├── wave-1.csv # temporary (deleted after merge)
242
+ ├── wave-2.csv # temporary (deleted after merge)
243
+ ├── discoveries.ndjson # shared board (append-only)
244
+ ├── context.md # decisions for plan --gaps
245
+ ```
246
+
247
+ ## Output
248
+
249
+ - **Updated**: `.workflow/issues/issues.jsonl` — enriched with `analysis` field per issue
250
+ - **Created**: `context.md` — grouped root causes for downstream `plan --gaps`
251
+ - **Created**: `results.csv` — full task execution results
252
+
253
+ ## Quality Criteria
254
+
255
+ - Issues classified into groups before CSV generation
256
+ - Wave 1 agents run parallel (one per issue, bounded by maxConcurrency)
257
+ - Wave 2 agents run parallel (one per group, after wave 1 deps met)
258
+ - Cross-issue relationships captured via cross_refs
259
+ - Single-pass JSONL update preserves integrity
260
+ - context.md organized by group with cross-group section