maestro-flow 0.3.9 → 0.3.11

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 (281) hide show
  1. package/.claude/agents/workflow-collab-planner.md +1 -1
  2. package/.claude/agents/workflow-executor.md +1 -1
  3. package/.claude/agents/workflow-plan-checker.md +1 -1
  4. package/.claude/agents/workflow-planner.md +1 -1
  5. package/.claude/commands/learn-decompose.md +176 -176
  6. package/.claude/commands/learn-follow.md +167 -167
  7. package/.claude/commands/learn-retro.md +1 -1
  8. package/.claude/commands/maestro-analyze.md +46 -3
  9. package/.claude/commands/maestro-coordinate.md +1 -3
  10. package/.claude/commands/maestro-execute.md +14 -0
  11. package/.claude/commands/maestro-plan.md +16 -0
  12. package/.claude/commands/manage-harvest.md +131 -131
  13. package/.claude/commands/manage-issue-discover.md +2 -2
  14. package/.claude/commands/manage-issue.md +5 -5
  15. package/.claude/commands/spec-add.md +67 -56
  16. package/.claude/commands/spec-load.md +66 -64
  17. package/.claude/commands/spec-setup.md +5 -9
  18. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  19. package/.codex/skills/learn-follow/SKILL.md +83 -0
  20. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  21. package/.codex/skills/learn-retro/SKILL.md +83 -0
  22. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  23. package/.codex/skills/maestro/SKILL.md +335 -0
  24. package/.codex/skills/maestro-analyze/SKILL.md +84 -75
  25. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  26. package/.codex/skills/maestro-chain/SKILL.md +233 -0
  27. package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
  28. package/.codex/skills/maestro-execute/SKILL.md +435 -438
  29. package/.codex/skills/maestro-fork/SKILL.md +68 -0
  30. package/.codex/skills/maestro-init/SKILL.md +171 -167
  31. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  32. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  33. package/.codex/skills/maestro-merge/SKILL.md +62 -0
  34. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  35. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  36. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  37. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  38. package/.codex/skills/maestro-plan/SKILL.md +66 -69
  39. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  40. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  41. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  42. package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
  43. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  44. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  45. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  46. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  47. package/.codex/skills/manage-issue/SKILL.md +80 -65
  48. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  49. package/.codex/skills/manage-learn/SKILL.md +190 -186
  50. package/.codex/skills/manage-memory/SKILL.md +95 -72
  51. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  52. package/.codex/skills/manage-status/SKILL.md +102 -89
  53. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  54. package/.codex/skills/quality-debug/SKILL.md +54 -66
  55. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  56. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  57. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  58. package/.codex/skills/quality-review/SKILL.md +93 -105
  59. package/.codex/skills/quality-sync/SKILL.md +101 -89
  60. package/.codex/skills/quality-test/SKILL.md +202 -198
  61. package/.codex/skills/quality-test-gen/SKILL.md +93 -104
  62. package/.codex/skills/spec-add/SKILL.md +58 -39
  63. package/.codex/skills/spec-load/SKILL.md +45 -40
  64. package/.codex/skills/spec-map/SKILL.md +180 -182
  65. package/.codex/skills/spec-setup/SKILL.md +94 -76
  66. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  67. package/.codex/skills/team-executor/SKILL.md +70 -112
  68. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  69. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  70. package/.codex/skills/team-review/SKILL.md +232 -225
  71. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  72. package/.codex/skills/team-testing/SKILL.md +242 -235
  73. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  74. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  75. package/README.md +14 -11
  76. package/README.zh-CN.md +14 -11
  77. package/chains/issue-lifecycle.json +13 -13
  78. package/chains/singles/issue-analyze.json +3 -3
  79. package/chains/singles/issue-execute.json +3 -3
  80. package/chains/singles/issue-plan.json +3 -3
  81. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
  82. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  83. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
  84. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  85. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
  86. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  87. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  88. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  89. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  90. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  91. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  92. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  93. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
  94. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  95. package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
  96. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  97. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
  98. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  99. package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
  100. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
  101. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
  102. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
  103. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  104. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  105. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
  106. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  107. package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
  108. package/dashboard/dist-server/src/hooks/constants.js +151 -16
  109. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  110. package/dashboard/dist-server/src/types/index.d.ts +5 -0
  111. package/dist/src/commands/collab.d.ts +1 -34
  112. package/dist/src/commands/collab.d.ts.map +1 -1
  113. package/dist/src/commands/collab.js +8 -76
  114. package/dist/src/commands/collab.js.map +1 -1
  115. package/dist/src/commands/hooks.d.ts +5 -1
  116. package/dist/src/commands/hooks.d.ts.map +1 -1
  117. package/dist/src/commands/hooks.js +115 -10
  118. package/dist/src/commands/hooks.js.map +1 -1
  119. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
  120. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  121. package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
  122. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  123. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  124. package/dist/src/commands/install-ui/InstallExecution.js +5 -1
  125. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  126. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  127. package/dist/src/commands/install-ui/InstallFlow.js +7 -3
  128. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  129. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
  130. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  131. package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
  132. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  133. package/dist/src/commands/spec.d.ts.map +1 -1
  134. package/dist/src/commands/spec.js +7 -2
  135. package/dist/src/commands/spec.js.map +1 -1
  136. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
  137. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
  138. package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
  139. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
  140. package/dist/src/hooks/constants.d.ts +92 -12
  141. package/dist/src/hooks/constants.d.ts.map +1 -1
  142. package/dist/src/hooks/constants.js +151 -16
  143. package/dist/src/hooks/constants.js.map +1 -1
  144. package/dist/src/hooks/guards/index.d.ts +2 -0
  145. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  146. package/dist/src/hooks/guards/index.js +2 -0
  147. package/dist/src/hooks/guards/index.js.map +1 -1
  148. package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
  149. package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
  150. package/dist/src/hooks/guards/preflight-guard.js +95 -0
  151. package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
  152. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  153. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  154. package/dist/src/hooks/guards/spec-validator.js +66 -0
  155. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  156. package/dist/src/hooks/index.d.ts +1 -0
  157. package/dist/src/hooks/index.d.ts.map +1 -1
  158. package/dist/src/hooks/index.js +1 -0
  159. package/dist/src/hooks/index.js.map +1 -1
  160. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  161. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  162. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  163. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  164. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  165. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  166. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  167. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  168. package/dist/src/hooks/preflight-core.d.ts +37 -0
  169. package/dist/src/hooks/preflight-core.d.ts.map +1 -0
  170. package/dist/src/hooks/preflight-core.js +86 -0
  171. package/dist/src/hooks/preflight-core.js.map +1 -0
  172. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  173. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  174. package/dist/src/hooks/spec-bridge.js +97 -0
  175. package/dist/src/hooks/spec-bridge.js.map +1 -0
  176. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  177. package/dist/src/hooks/spec-injector.js +18 -12
  178. package/dist/src/hooks/spec-injector.js.map +1 -1
  179. package/dist/src/hooks/statusline.d.ts +8 -17
  180. package/dist/src/hooks/statusline.d.ts.map +1 -1
  181. package/dist/src/hooks/statusline.js +269 -112
  182. package/dist/src/hooks/statusline.js.map +1 -1
  183. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  184. package/dist/src/i18n/locales/en.js +5 -0
  185. package/dist/src/i18n/locales/en.js.map +1 -1
  186. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  187. package/dist/src/i18n/locales/zh.js +5 -0
  188. package/dist/src/i18n/locales/zh.js.map +1 -1
  189. package/dist/src/i18n/types.d.ts +5 -0
  190. package/dist/src/i18n/types.d.ts.map +1 -1
  191. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  192. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  193. package/dist/src/team/phase-orchestrator.js +165 -0
  194. package/dist/src/team/phase-orchestrator.js.map +1 -0
  195. package/dist/src/team/phase-types.d.ts +51 -0
  196. package/dist/src/team/phase-types.d.ts.map +1 -0
  197. package/dist/src/team/phase-types.js +41 -0
  198. package/dist/src/team/phase-types.js.map +1 -0
  199. package/dist/src/tools/collab-adapter.d.ts +17 -0
  200. package/dist/src/tools/collab-adapter.d.ts.map +1 -1
  201. package/dist/src/tools/collab-adapter.js +138 -0
  202. package/dist/src/tools/collab-adapter.js.map +1 -1
  203. package/dist/src/tools/index.d.ts.map +1 -1
  204. package/dist/src/tools/index.js +6 -0
  205. package/dist/src/tools/index.js.map +1 -1
  206. package/dist/src/tools/merge-validator.d.ts +24 -0
  207. package/dist/src/tools/merge-validator.d.ts.map +1 -0
  208. package/dist/src/tools/merge-validator.js +220 -0
  209. package/dist/src/tools/merge-validator.js.map +1 -0
  210. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  211. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  212. package/dist/src/tools/spec-entry-parser.js +196 -0
  213. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  214. package/dist/src/tools/spec-init.d.ts.map +1 -1
  215. package/dist/src/tools/spec-init.js +66 -92
  216. package/dist/src/tools/spec-init.js.map +1 -1
  217. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  218. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  219. package/dist/src/tools/spec-keyword-index.js +101 -0
  220. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  221. package/dist/src/tools/spec-loader.d.ts +3 -3
  222. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  223. package/dist/src/tools/spec-loader.js +49 -23
  224. package/dist/src/tools/spec-loader.js.map +1 -1
  225. package/dist/src/tools/team-agents.d.ts +27 -0
  226. package/dist/src/tools/team-agents.d.ts.map +1 -0
  227. package/dist/src/tools/team-agents.js +362 -0
  228. package/dist/src/tools/team-agents.js.map +1 -0
  229. package/dist/src/tools/team-mailbox.d.ts +40 -0
  230. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  231. package/dist/src/tools/team-mailbox.js +384 -0
  232. package/dist/src/tools/team-mailbox.js.map +1 -0
  233. package/dist/src/tools/team-msg.d.ts +17 -8
  234. package/dist/src/tools/team-msg.d.ts.map +1 -1
  235. package/dist/src/tools/team-msg.js +110 -13
  236. package/dist/src/tools/team-msg.js.map +1 -1
  237. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  238. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  239. package/dist/src/tools/team-tasks-mcp.js +408 -0
  240. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  241. package/dist/src/types/index.d.ts +5 -0
  242. package/dist/src/types/index.d.ts.map +1 -1
  243. package/package.json +2 -1
  244. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
  245. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
  246. package/templates/search-tools.md +1 -1
  247. package/workflows/analyze.md +816 -816
  248. package/workflows/brainstorm.md +471 -471
  249. package/workflows/cli-tools-usage.md +44 -27
  250. package/workflows/codebase-rebuild.md +332 -332
  251. package/workflows/codebase-refresh.md +240 -240
  252. package/workflows/delegate-usage.md +3 -3
  253. package/workflows/execute.md +1 -1
  254. package/workflows/harvest.md +420 -420
  255. package/workflows/integration-test.md +343 -343
  256. package/workflows/issue-analyze.md +6 -2
  257. package/workflows/issue-discover.md +414 -414
  258. package/workflows/issue-execute.md +6 -3
  259. package/workflows/issue-plan.md +5 -2
  260. package/workflows/maestro-coordinate.codex.md +281 -470
  261. package/workflows/maestro-coordinate.md +14 -14
  262. package/workflows/maestro-link-coordinate.md +2 -2
  263. package/workflows/maestro.codex.md +710 -0
  264. package/workflows/maestro.md +10 -11
  265. package/workflows/map.md +111 -111
  266. package/workflows/milestone-complete.md +176 -176
  267. package/workflows/plan.md +1 -1
  268. package/workflows/quick.md +497 -497
  269. package/workflows/refactor.md +300 -300
  270. package/workflows/retrospective.md +1 -1
  271. package/workflows/roadmap.md +335 -335
  272. package/workflows/spec-generate.md +640 -640
  273. package/workflows/specs-add.md +46 -81
  274. package/workflows/specs-load.md +15 -17
  275. package/workflows/specs-setup.md +40 -161
  276. package/.claude/commands/manage-issue-analyze.md +0 -62
  277. package/.claude/commands/manage-issue-execute.md +0 -73
  278. package/.claude/commands/manage-issue-plan.md +0 -62
  279. package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
  280. package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
  281. package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
@@ -1,167 +1,167 @@
1
- ---
2
- name: learn-follow
3
- description: Guided follow-along reading of code or wiki entries, extracting patterns and building understanding
4
- argument-hint: "<path|wiki-id|topic> [--depth shallow|deep] [--save-wiki]"
5
- allowed-tools:
6
- - Read
7
- - Write
8
- - Bash
9
- - Glob
10
- - Grep
11
- - Agent
12
- - AskUserQuestion
13
- ---
14
- <purpose>
15
- Guided reading experience for code files, wiki entries, or topics. Instead of just reading code, this command walks through content section by section using forcing questions (inspired by gstack `/office-hours` brainstorming) to extract patterns, identify assumptions, and build a structured understanding map.
16
-
17
- Outputs reading notes with extracted patterns, open questions, and connection points. Insights persist to `lessons.jsonl` and optionally become wiki note entries for the knowledge graph.
18
- </purpose>
19
-
20
- <context>
21
- Arguments: $ARGUMENTS
22
-
23
- **Target resolution (auto-detected from first argument):**
24
- - File path (e.g., `src/commands/wiki.ts`) → Read source file
25
- - Wiki ID (e.g., `spec-auth`, `phase-planning`) → Fetch via `maestro wiki get`
26
- - Topic string (e.g., `"authentication flow"`) → Search via `maestro wiki search`, use top result
27
-
28
- **Flags:**
29
- - `--depth shallow` — Quick pass: key patterns and structure only (default)
30
- - `--depth deep` — Thorough: every function, every branch, every assumption
31
- - `--save-wiki` — Create a wiki note entry with the reading notes via `maestro wiki create --type note`
32
-
33
- **Storage written:**
34
- - `.workflow/learning/follow-{slug}-{YYYY-MM-DD}.md` — Reading notes with understanding map
35
- - `.workflow/learning/lessons.jsonl` — Appended pattern/technique insights
36
- - `.workflow/learning/learning-index.json` — Updated index
37
- - If `--save-wiki`: new wiki note entry
38
-
39
- **Storage read:**
40
- - Target source file or wiki entry
41
- - `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
42
- - `.workflow/specs/coding-conventions.md` — Convention reference for pattern matching
43
- - `.workflow/learning/lessons.jsonl` — Prior insights for dedup and cross-reference
44
- </context>
45
-
46
- <execution>
47
-
48
- ### Stage 1: Resolve Target
49
- - If argument looks like a file path (contains `/` or `\`, or matches a glob): verify file exists via Read
50
- - If argument matches wiki ID pattern (`<type>-<slug>`): fetch via `maestro wiki get <id>` (offline mode)
51
- - Otherwise: treat as topic string, run `maestro wiki search "<topic>"`, take the top result. If no result, fall back to Grep across `src/` for the topic.
52
- - If target cannot be resolved, AskUserQuestion with suggestions.
53
-
54
- ### Stage 2: Load Context Web
55
- For the resolved target, build a 1-hop context neighborhood:
56
-
57
- **If wiki entry:**
58
- - `maestro wiki forward <id>` — What this entry references
59
- - `maestro wiki backlinks <id>` — What references this entry
60
- - Read the body of top 3 related entries for context
61
-
62
- **If code file:**
63
- - Parse imports/requires to identify dependency files
64
- - Grep for exports used by other files (reverse dependencies)
65
- - Read the first 50 lines of top 3 dependent files for context
66
-
67
- **If directory:**
68
- - List files, identify entry points (index.ts, main.ts, cli.ts)
69
- - Build reading order: entry point → core modules → utilities → tests
70
-
71
- ### Stage 3: Build Reading Order
72
- - For a single file: split into logical sections (function boundaries, class boundaries, export groups)
73
- - For a wiki entry: split by markdown headings
74
- - For a directory: order files by dependency (entry points first, leaf modules last)
75
- - For `--depth shallow`: limit to top-level structure (function signatures, section headers)
76
- - For `--depth deep`: include every function body, every branch
77
-
78
- ### Stage 4: Guided Reading with Forcing Questions
79
- Walk through each section in reading order. For each section, apply 4 forcing questions:
80
-
81
- 1. **"What pattern is being used here?"** — Identify design patterns, idioms, conventions. Compare against `coding-conventions.md`.
82
- 2. **"Why this approach instead of alternatives?"** — What trade-offs were made? What was the simpler approach not chosen?
83
- 3. **"What assumption does this depend on?"** — What must be true for this code/content to be correct? External state? Input shape? Ordering?
84
- 4. **"What would break if this changed?"** — Fragility analysis. What downstream effects would a change have?
85
-
86
- Record answers as structured annotations per section.
87
-
88
- ### Stage 5: Extract Patterns
89
- From the forcing question answers, extract:
90
- - **Design patterns**: named patterns with code anchors (file:line)
91
- - **Naming conventions**: how things are named and why
92
- - **Error handling approach**: how errors flow through this code/content
93
- - **Data flow**: how data enters, transforms, and exits
94
- - **Assumptions**: explicit and implicit assumptions identified
95
-
96
- Cross-reference each pattern against existing `coding-conventions.md` entries:
97
- - Already documented → note as "confirmed convention"
98
- - Not documented → flag as "undocumented pattern" (candidate for `spec-add`)
99
-
100
- ### Stage 6: Produce Understanding Map
101
- Build a structured summary document:
102
-
103
- ```markdown
104
- # Follow-Along: {target name}
105
-
106
- ## Key Concepts
107
- - {concept}: {one-line explanation}
108
-
109
- ## Patterns Identified
110
- | Pattern | Location | Convention Status |
111
- |---------|----------|-------------------|
112
- | {name} | {file:line} | documented / undocumented |
113
-
114
- ## Assumptions
115
- - {assumption}: {what depends on it}
116
-
117
- ## Open Questions
118
- - {question}: {why it matters}
119
-
120
- ## Connections
121
- - Links to: {forward link entries}
122
- - Referenced by: {backlink entries}
123
- - Related lessons: {matching lessons.jsonl entries}
124
- ```
125
-
126
- ### Stage 7: Persist
127
- 1. Write `.workflow/learning/follow-{slug}-{date}.md` with the understanding map
128
- 2. Append each new pattern/technique as an insight to `lessons.jsonl`:
129
- - `source: "follow"`, `category: "pattern"` or `"technique"`
130
- - Tags: `["follow", "{target-slug}"]`
131
- - Stable INS-id from `hash("follow" + target + pattern_name)`
132
- 3. Update `learning-index.json`
133
- 4. If `--save-wiki`: run `maestro wiki create --type note --slug follow-{slug} --title "Follow-Along: {target}" --body-file .workflow/learning/follow-{slug}-{date}.md`
134
- 5. Display summary with key findings and next steps
135
-
136
- **Next-step routing:**
137
- - Deep dive into a discovered pattern → `/learn-decompose <path>`
138
- - Add undocumented pattern to specs → `/spec-add pattern <description>`
139
- - Get second opinion on a finding → `/learn-second-opinion <file>`
140
- - Browse related wiki entries → `/wiki-digest <topic>`
141
- </execution>
142
-
143
- <error_codes>
144
- | Code | Severity | Condition | Recovery |
145
- |------|----------|-----------|----------|
146
- | E001 | error | Target not resolvable (file not found, wiki ID not found, search returned 0) | Check path/ID, or rephrase topic for search |
147
- | E002 | error | `.workflow/` not initialized | Run `/maestro-init` first |
148
- | W001 | warning | Wiki graph unavailable (no .workflow/ wiki entries) — skipping context web | Proceed with code-only context (imports/exports) |
149
- | W002 | warning | coding-conventions.md not found — skipping convention comparison | Patterns flagged as "unknown convention status" |
150
- | W003 | warning | Target is very large (>1000 lines) — auto-switching to shallow depth | Use --depth deep to override |
151
- </error_codes>
152
-
153
- <success_criteria>
154
- - [ ] Target resolved to concrete content (file, wiki entry, or search result)
155
- - [ ] Context web loaded (forward/backlinks for wiki, imports/exports for code)
156
- - [ ] Reading order established (sections/files ordered logically)
157
- - [ ] All 4 forcing questions applied per section
158
- - [ ] Patterns extracted with file:line anchors
159
- - [ ] Convention comparison performed against coding-conventions.md
160
- - [ ] Understanding map produced with: concepts, patterns, assumptions, questions, connections
161
- - [ ] `follow-{slug}-{date}.md` written
162
- - [ ] `lessons.jsonl` appended with discovered patterns (stable INS-ids)
163
- - [ ] `learning-index.json` updated
164
- - [ ] If --save-wiki: wiki note entry created
165
- - [ ] No files modified outside `.workflow/learning/` (and optionally wiki)
166
- - [ ] Summary displayed with next-step routing
167
- </success_criteria>
1
+ ---
2
+ name: learn-follow
3
+ description: Guided follow-along reading of code or wiki entries, extracting patterns and building understanding
4
+ argument-hint: "<path|wiki-id|topic> [--depth shallow|deep] [--save-wiki]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Guided reading experience for code files, wiki entries, or topics. Instead of just reading code, this command walks through content section by section using forcing questions (inspired by gstack `/office-hours` brainstorming) to extract patterns, identify assumptions, and build a structured understanding map.
16
+
17
+ Outputs reading notes with extracted patterns, open questions, and connection points. Insights persist to `lessons.jsonl` and optionally become wiki note entries for the knowledge graph.
18
+ </purpose>
19
+
20
+ <context>
21
+ Arguments: $ARGUMENTS
22
+
23
+ **Target resolution (auto-detected from first argument):**
24
+ - File path (e.g., `src/commands/wiki.ts`) → Read source file
25
+ - Wiki ID (e.g., `spec-auth`, `phase-planning`) → Fetch via `maestro wiki get`
26
+ - Topic string (e.g., `"authentication flow"`) → Search via `maestro wiki search`, use top result
27
+
28
+ **Flags:**
29
+ - `--depth shallow` — Quick pass: key patterns and structure only (default)
30
+ - `--depth deep` — Thorough: every function, every branch, every assumption
31
+ - `--save-wiki` — Create a wiki note entry with the reading notes via `maestro wiki create --type note`
32
+
33
+ **Storage written:**
34
+ - `.workflow/learning/follow-{slug}-{YYYY-MM-DD}.md` — Reading notes with understanding map
35
+ - `.workflow/learning/lessons.jsonl` — Appended pattern/technique insights
36
+ - `.workflow/learning/learning-index.json` — Updated index
37
+ - If `--save-wiki`: new wiki note entry
38
+
39
+ **Storage read:**
40
+ - Target source file or wiki entry
41
+ - `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
42
+ - `.workflow/specs/coding-conventions.md` — Convention reference for pattern matching
43
+ - `.workflow/learning/lessons.jsonl` — Prior insights for dedup and cross-reference
44
+ </context>
45
+
46
+ <execution>
47
+
48
+ ### Stage 1: Resolve Target
49
+ - If argument looks like a file path (contains `/` or `\`, or matches a glob): verify file exists via Read
50
+ - If argument matches wiki ID pattern (`<type>-<slug>`): fetch via `maestro wiki get <id>` (offline mode)
51
+ - Otherwise: treat as topic string, run `maestro wiki search "<topic>"`, take the top result. If no result, fall back to Grep across `src/` for the topic.
52
+ - If target cannot be resolved, AskUserQuestion with suggestions.
53
+
54
+ ### Stage 2: Load Context Web
55
+ For the resolved target, build a 1-hop context neighborhood:
56
+
57
+ **If wiki entry:**
58
+ - `maestro wiki forward <id>` — What this entry references
59
+ - `maestro wiki backlinks <id>` — What references this entry
60
+ - Read the body of top 3 related entries for context
61
+
62
+ **If code file:**
63
+ - Parse imports/requires to identify dependency files
64
+ - Grep for exports used by other files (reverse dependencies)
65
+ - Read the first 50 lines of top 3 dependent files for context
66
+
67
+ **If directory:**
68
+ - List files, identify entry points (index.ts, main.ts, cli.ts)
69
+ - Build reading order: entry point → core modules → utilities → tests
70
+
71
+ ### Stage 3: Build Reading Order
72
+ - For a single file: split into logical sections (function boundaries, class boundaries, export groups)
73
+ - For a wiki entry: split by markdown headings
74
+ - For a directory: order files by dependency (entry points first, leaf modules last)
75
+ - For `--depth shallow`: limit to top-level structure (function signatures, section headers)
76
+ - For `--depth deep`: include every function body, every branch
77
+
78
+ ### Stage 4: Guided Reading with Forcing Questions
79
+ Walk through each section in reading order. For each section, apply 4 forcing questions:
80
+
81
+ 1. **"What pattern is being used here?"** — Identify design patterns, idioms, conventions. Compare against `coding-conventions.md`.
82
+ 2. **"Why this approach instead of alternatives?"** — What trade-offs were made? What was the simpler approach not chosen?
83
+ 3. **"What assumption does this depend on?"** — What must be true for this code/content to be correct? External state? Input shape? Ordering?
84
+ 4. **"What would break if this changed?"** — Fragility analysis. What downstream effects would a change have?
85
+
86
+ Record answers as structured annotations per section.
87
+
88
+ ### Stage 5: Extract Patterns
89
+ From the forcing question answers, extract:
90
+ - **Design patterns**: named patterns with code anchors (file:line)
91
+ - **Naming conventions**: how things are named and why
92
+ - **Error handling approach**: how errors flow through this code/content
93
+ - **Data flow**: how data enters, transforms, and exits
94
+ - **Assumptions**: explicit and implicit assumptions identified
95
+
96
+ Cross-reference each pattern against existing `coding-conventions.md` entries:
97
+ - Already documented → note as "confirmed convention"
98
+ - Not documented → flag as "undocumented pattern" (candidate for `spec-add`)
99
+
100
+ ### Stage 6: Produce Understanding Map
101
+ Build a structured summary document:
102
+
103
+ ```markdown
104
+ # Follow-Along: {target name}
105
+
106
+ ## Key Concepts
107
+ - {concept}: {one-line explanation}
108
+
109
+ ## Patterns Identified
110
+ | Pattern | Location | Convention Status |
111
+ |---------|----------|-------------------|
112
+ | {name} | {file:line} | documented / undocumented |
113
+
114
+ ## Assumptions
115
+ - {assumption}: {what depends on it}
116
+
117
+ ## Open Questions
118
+ - {question}: {why it matters}
119
+
120
+ ## Connections
121
+ - Links to: {forward link entries}
122
+ - Referenced by: {backlink entries}
123
+ - Related lessons: {matching lessons.jsonl entries}
124
+ ```
125
+
126
+ ### Stage 7: Persist
127
+ 1. Write `.workflow/learning/follow-{slug}-{date}.md` with the understanding map
128
+ 2. Append each new pattern/technique as an insight to `lessons.jsonl`:
129
+ - `source: "follow"`, `category: "pattern"` or `"technique"`
130
+ - Tags: `["follow", "{target-slug}"]`
131
+ - Stable INS-id from `hash("follow" + target + pattern_name)`
132
+ 3. Update `learning-index.json`
133
+ 4. If `--save-wiki`: run `maestro wiki create --type note --slug follow-{slug} --title "Follow-Along: {target}" --body-file .workflow/learning/follow-{slug}-{date}.md`
134
+ 5. Display summary with key findings and next steps
135
+
136
+ **Next-step routing:**
137
+ - Deep dive into a discovered pattern → `/learn-decompose <path>`
138
+ - Add undocumented pattern to specs → `/spec-add coding <description>`
139
+ - Get second opinion on a finding → `/learn-second-opinion <file>`
140
+ - Browse related wiki entries → `/wiki-digest <topic>`
141
+ </execution>
142
+
143
+ <error_codes>
144
+ | Code | Severity | Condition | Recovery |
145
+ |------|----------|-----------|----------|
146
+ | E001 | error | Target not resolvable (file not found, wiki ID not found, search returned 0) | Check path/ID, or rephrase topic for search |
147
+ | E002 | error | `.workflow/` not initialized | Run `/maestro-init` first |
148
+ | W001 | warning | Wiki graph unavailable (no .workflow/ wiki entries) — skipping context web | Proceed with code-only context (imports/exports) |
149
+ | W002 | warning | coding-conventions.md not found — skipping convention comparison | Patterns flagged as "unknown convention status" |
150
+ | W003 | warning | Target is very large (>1000 lines) — auto-switching to shallow depth | Use --depth deep to override |
151
+ </error_codes>
152
+
153
+ <success_criteria>
154
+ - [ ] Target resolved to concrete content (file, wiki entry, or search result)
155
+ - [ ] Context web loaded (forward/backlinks for wiki, imports/exports for code)
156
+ - [ ] Reading order established (sections/files ordered logically)
157
+ - [ ] All 4 forcing questions applied per section
158
+ - [ ] Patterns extracted with file:line anchors
159
+ - [ ] Convention comparison performed against coding-conventions.md
160
+ - [ ] Understanding map produced with: concepts, patterns, assumptions, questions, connections
161
+ - [ ] `follow-{slug}-{date}.md` written
162
+ - [ ] `lessons.jsonl` appended with discovered patterns (stable INS-ids)
163
+ - [ ] `learning-index.json` updated
164
+ - [ ] If --save-wiki: wiki note entry created
165
+ - [ ] No files modified outside `.workflow/learning/` (and optionally wiki)
166
+ - [ ] Summary displayed with next-step routing
167
+ </success_criteria>
@@ -145,7 +145,7 @@ git log --oneline --all --grep="decision\|chose\|decided\|architecture" -20
145
145
  ```
146
146
 
147
147
  Also read:
148
- - `.workflow/specs/architecture-constraints.md` — grep for `### [decision]` blocks
148
+ - `.workflow/specs/architecture-constraints.md` — grep for `<spec-entry category="arch"` blocks
149
149
  - `.workflow/phases/*/context.md` — scan for "Locked:", "Deferred:" sections
150
150
  - `.workflow/learning/lessons.jsonl` — filter `category == "decision"`
151
151
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: maestro-analyze
3
3
  description: Multi-dimensional analysis with CLI exploration, decision extraction, and intent tracking
4
- argument-hint: "[phase|topic] [-y] [-c] [-q]"
4
+ argument-hint: "[phase|topic] [-y] [-c] [-q] [--gaps [ISS-ID]]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write
@@ -18,6 +18,8 @@ Perform multi-dimensional analysis of a technical proposal, decision, or archite
18
18
  Combines structured 6-dimension scoring with iterative deepening and decision extraction. Replaces both analysis and decision-capture workflows — produces analysis.md (scoring) AND context.md (Locked/Free/Deferred decisions for plan).
19
19
 
20
20
  Use `-q` for quick decision extraction only (skip exploration + scoring).
21
+
22
+ Use `--gaps` for issue-focused root cause analysis (replaces manage-issue-analyze). Loads issues from issues.jsonl, performs CLI exploration against issue context/location, synthesizes root cause into issue.analysis, and outputs context.md for downstream `plan --gaps`.
21
23
  </purpose>
22
24
 
23
25
  <required_reading>
@@ -26,6 +28,7 @@ Use `-q` for quick decision extraction only (skip exploration + scoring).
26
28
 
27
29
  <deferred_reading>
28
30
  - [state.json](~/.maestro/templates/state.json) — read when registering artifact
31
+ - [issue-gaps-analyze.md](~/.maestro/workflows/issue-gaps-analyze.md) — read when --gaps is triggered
29
32
  </deferred_reading>
30
33
 
31
34
  <context>
@@ -35,6 +38,7 @@ $ARGUMENTS -- phase number for milestone-scoped, topic text for adhoc/standalone
35
38
  - `-y` / `--yes`: Auto mode — skip interactive scoping, use recommended defaults, auto-deepen
36
39
  - `-c` / `--continue`: Resume from existing session (auto-detect session folder + discussion.md)
37
40
  - `-q` / `--quick`: Quick mode — skip exploration + scoring, go straight to decision extraction (context.md only)
41
+ - `--gaps [ISS-ID]`: Issue root cause analysis mode. If ISS-ID provided, analyze single issue. If omitted, analyze all open/registered issues from issues.jsonl.
38
42
 
39
43
  **Scope routing (per architecture):**
40
44
 
@@ -44,8 +48,10 @@ $ARGUMENTS -- phase number for milestone-scoped, topic text for adhoc/standalone
44
48
  | `analyze 1` | init + roadmap | phase | Analyze phase 1 only |
45
49
  | `analyze "topic"` (has milestone) | none | adhoc | Analyze topic, affiliated with current milestone |
46
50
  | `analyze "topic"` (no milestone) | none | standalone | Analyze topic, no milestone affiliation |
51
+ | `analyze --gaps` | issues.jsonl exists | gaps | Load open issues, explore root causes, write analysis records |
52
+ | `analyze --gaps ISS-xxx` | issue exists | gaps | Analyze single issue root cause |
47
53
 
48
- **Scope detection rule**: Text argument + `state.json.current_milestone` non-null → adhoc. Text argument + no milestone → standalone. No args + no roadmap → error (need topic or roadmap).
54
+ **Scope detection rule**: Text argument + `state.json.current_milestone` non-null → adhoc. Text argument + no milestone → standalone. No args + no roadmap → error (need topic or roadmap). `--gaps` → gaps scope (bypasses standard scope routing).
49
55
 
50
56
  **Output directory**: `scratch/analyze-{slug}-{date}/` (relative to `.workflow/`)
51
57
 
@@ -80,7 +86,32 @@ $ARGUMENTS -- phase number for milestone-scoped, topic text for adhoc/standalone
80
86
  <execution>
81
87
  Follow '~/.maestro/workflows/analyze.md' completely.
82
88
 
83
- **Handoff:** context.md is consumed by maestro-plan (loads Locked/Free/Deferred decisions).
89
+ ### --gaps Mode (Issue Root Cause Analysis)
90
+
91
+ When `--gaps` flag is present, follow `~/.maestro/workflows/issue-gaps-analyze.md` instead of the standard analyze pipeline:
92
+
93
+ ```
94
+ Phase 1: Load issues from .workflow/issues/issues.jsonl
95
+ - If ISS-ID provided: load single issue
96
+ - If no ISS-ID: filter issues where status = open | registered
97
+ - Validate: at least 1 issue loaded, else error E_NO_ISSUES
98
+
99
+ Phase 2: CLI exploration per issue
100
+ - For each issue: build exploration prompt from issue.title, description, context, related_files
101
+ - Run maestro delegate --to gemini --mode analysis with codebase context
102
+ - Gather affected files, call chains, root cause evidence
103
+
104
+ Phase 3: Root cause synthesis → write issue.analysis
105
+ - Parse CLI output into analysis record: { root_cause, affected_files, impact_scope, fix_direction, confidence, analyzed_at, tool, depth }
106
+ - Write analysis record to issue in issues.jsonl
107
+ - Append history entry: { action: "analyzed", at: <ISO>, by: "maestro-analyze --gaps" }
108
+
109
+ Phase 4: Output context.md for downstream plan --gaps
110
+ - Aggregate all analyzed issues into context.md with root causes and fix directions
111
+ - Register ANL artifact in state.json
112
+ ```
113
+
114
+ **Handoff:** context.md is consumed by maestro-plan (loads Locked/Free/Deferred decisions). In --gaps mode, context.md contains issue root causes for `plan --gaps` consumption.
84
115
 
85
116
  **Next-step routing on completion:**
86
117
 
@@ -92,6 +123,10 @@ Phase/Milestone scope:
92
123
  Adhoc/Standalone scope:
93
124
  - Ready to plan → `/maestro-plan --dir {scratch_dir}`
94
125
  - Need more exploration → `/maestro-analyze {topic} -c`
126
+
127
+ Gaps scope:
128
+ - Issues analyzed → `/maestro-plan --gaps` (plan fix tasks linked to issues)
129
+ - Need more context → `/maestro-analyze --gaps {ISS-ID}` (re-analyze specific issue)
95
130
  </execution>
96
131
 
97
132
  <error_codes>
@@ -102,6 +137,8 @@ Adhoc/Standalone scope:
102
137
  | W002 | warning | CLI analysis timeout | Retry with shorter prompt, or skip perspective |
103
138
  | W003 | warning | Insufficient evidence for scoring dimensions | Note low-confidence dimensions, proceed with available evidence |
104
139
  | W004 | warning | Max rounds reached (5) | Force synthesis, offer continuation option |
140
+ | E_NO_ISSUES | error | --gaps but no open/registered issues found | Suggest `/manage-issue-discover` or `/manage-issue create` |
141
+ | E_ISSUE_NOT_FOUND | error | --gaps with ISS-ID but issue not found | Suggest `/manage-issue list` to find valid IDs |
105
142
  </error_codes>
106
143
 
107
144
  <success_criteria>
@@ -112,6 +149,12 @@ Full mode:
112
149
  - [ ] conclusions.json created with recommendations and decision trail
113
150
  - [ ] Intent Coverage tracked and verified (no unresolved ❌ items)
114
151
 
152
+ Gaps mode:
153
+ - [ ] Issues loaded from issues.jsonl (all open/registered, or single ISS-ID)
154
+ - [ ] CLI exploration executed per issue with codebase context
155
+ - [ ] Analysis record attached to each issue in issues.jsonl
156
+ - [ ] context.md written with aggregated root causes for plan --gaps
157
+
115
158
  Both modes (full + quick):
116
159
  - [ ] context.md written with all decisions classified as Locked/Free/Deferred
117
160
  - [ ] Gray areas identified through phase-specific analysis
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: maestro-coordinate
3
3
  description: CLI-based coordinator - analyze intent → select command chain → execute sequentially via maestro delegate with auto-confirm
4
- argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>] [--tool <tool>]"
4
+ argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write
@@ -36,7 +36,6 @@ $ARGUMENTS — user intent text, or special keywords (`continue`/`next`/`status`
36
36
  - `-c` / `--continue` — Resume previous session
37
37
  - `--dry-run` — Show planned chain without executing
38
38
  - `--chain <name>` — Force a specific chain
39
- - `--tool <tool>` — CLI tool override (default: claude)
40
39
  </context>
41
40
 
42
41
  <execution>
@@ -50,7 +49,6 @@ Follow '~/.maestro/workflows/maestro-coordinate.md' completely.
50
49
  | E002 | error | Clarity too low after 2 rounds | Ask to rephrase |
51
50
  | E003 | error | Step failed + abort | Suggest resume with -c |
52
51
  | E004 | error | Resume session not found | Show available sessions |
53
- | E005 | error | CLI tool unavailable | Try fallback tool |
54
52
  </error_codes>
55
53
 
56
54
  <success_criteria>
@@ -96,6 +96,20 @@ If exit code is 1, present warnings and ask whether to proceed.
96
96
 
97
97
  Follow '~/.maestro/workflows/execute.md' completely.
98
98
 
99
+ ### Issue Status Sync
100
+
101
+ On each task completion, if `task.issue_id` exists, sync status back to the issue in `.workflow/issues/issues.jsonl`:
102
+
103
+ ```
104
+ For each completed/failed TASK with issue_id:
105
+ Read issue from issues.jsonl by issue_id
106
+ Collect all task_refs[] statuses for that issue:
107
+ all task_refs completed → issue.status = "resolved"
108
+ any task_ref failed → issue.status = "in_progress"
109
+ Append history entry: { action: "executed", at: <ISO>, by: "maestro-execute", summary: "TASK-{NNN} {status}" }
110
+ Write updated issue back to issues.jsonl
111
+ ```
112
+
99
113
  **Report format on completion:**
100
114
 
101
115
  ```
@@ -108,6 +108,22 @@ ELSE:
108
108
  wiki_context = structured block for downstream stages
109
109
  ```
110
110
 
111
+ ### Issue Linkback (--gaps mode)
112
+
113
+ After plan generation and checking, if `--gaps` mode was used, link TASK files back to issues bidirectionally:
114
+
115
+ ```
116
+ For each created TASK-{NNN}.json that has issue_id:
117
+ Update corresponding issue in .workflow/issues/issues.jsonl:
118
+ task_refs: append TASK-{NNN} to array
119
+ task_plan_dir: relative path to .task/ directory
120
+ status: "planned"
121
+ updated_at: now()
122
+ Append history entry: { action: "planned", at: <ISO>, by: "maestro-plan", summary: "Linked to TASK-{NNN}" }
123
+ ```
124
+
125
+ This ensures issue → TASK traceability. The `task_refs[]` and `task_plan_dir` fields on the issue allow the dashboard to resolve and display associated TASK details.
126
+
111
127
  **Report format on completion:**
112
128
 
113
129
  ```