maestro-flow 0.5.41 → 0.5.43

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 (363) hide show
  1. package/.agents/skills/domain-add/SKILL.md +3 -0
  2. package/.agents/skills/learn-decompose/SKILL.md +7 -4
  3. package/.agents/skills/learn-follow/SKILL.md +4 -2
  4. package/.agents/skills/learn-investigate/SKILL.md +8 -6
  5. package/.agents/skills/learn-second-opinion/SKILL.md +6 -3
  6. package/.agents/skills/maestro/SKILL.md +1 -1
  7. package/.agents/skills/maestro-amend/SKILL.md +1 -1
  8. package/.agents/skills/maestro-analyze/SKILL.md +1 -43
  9. package/.agents/skills/maestro-blueprint/SKILL.md +1 -23
  10. package/.agents/skills/maestro-brainstorm/SKILL.md +8 -25
  11. package/.agents/skills/maestro-collab/SKILL.md +6 -2
  12. package/.agents/skills/maestro-companion/SKILL.md +4 -1
  13. package/.agents/skills/maestro-composer/SKILL.md +4 -2
  14. package/.agents/skills/maestro-execute/SKILL.md +27 -9
  15. package/.agents/skills/maestro-fork/SKILL.md +4 -3
  16. package/.agents/skills/maestro-grill/SKILL.md +1 -17
  17. package/.agents/skills/maestro-guard/SKILL.md +2 -2
  18. package/.agents/skills/maestro-impeccable/SKILL.md +2 -1
  19. package/.agents/skills/maestro-init/SKILL.md +1 -1
  20. package/.agents/skills/maestro-merge/SKILL.md +12 -1
  21. package/.agents/skills/maestro-milestone-audit/SKILL.md +1 -15
  22. package/.agents/skills/maestro-milestone-complete/SKILL.md +8 -3
  23. package/.agents/skills/maestro-milestone-release/SKILL.md +8 -4
  24. package/.agents/skills/maestro-overlay/SKILL.md +9 -0
  25. package/.agents/skills/maestro-plan/SKILL.md +6 -62
  26. package/.agents/skills/maestro-player/SKILL.md +2 -2
  27. package/.agents/skills/maestro-quick/SKILL.md +5 -3
  28. package/.agents/skills/maestro-ralph/SKILL.md +8 -8
  29. package/.agents/skills/maestro-ralph-cli/SKILL.md +665 -0
  30. package/.agents/skills/maestro-ralph-cli-execute/SKILL.md +239 -0
  31. package/.agents/skills/maestro-ralph-execute/SKILL.md +127 -11
  32. package/.agents/skills/maestro-roadmap/SKILL.md +1 -9
  33. package/.agents/skills/maestro-swarm-workflow/SKILL.md +16 -14
  34. package/.agents/skills/maestro-tools-register/SKILL.md +16 -1
  35. package/.agents/skills/maestro-ui-codify/SKILL.md +11 -1
  36. package/.agents/skills/maestro-universal-workflow/SKILL.md +28 -5
  37. package/.agents/skills/maestro-update/SKILL.md +10 -7
  38. package/.agents/skills/manage-codebase-rebuild/SKILL.md +5 -1
  39. package/.agents/skills/manage-drift-realign/SKILL.md +6 -2
  40. package/.agents/skills/manage-harvest/SKILL.md +4 -1
  41. package/.agents/skills/manage-issue-discover/SKILL.md +1 -0
  42. package/.agents/skills/manage-kg-extractors/SKILL.md +5 -1
  43. package/.agents/skills/manage-knowhow-capture/SKILL.md +1 -0
  44. package/.agents/skills/manage-knowledge-audit/SKILL.md +3 -0
  45. package/.agents/skills/manage-wiki/SKILL.md +1 -0
  46. package/.agents/skills/odyssey-debug/SKILL.md +2 -1
  47. package/.agents/skills/odyssey-improve/SKILL.md +2 -2
  48. package/.agents/skills/odyssey-planex/SKILL.md +8 -7
  49. package/.agents/skills/odyssey-review-test-fix/SKILL.md +4 -1
  50. package/.agents/skills/odyssey-ui/SKILL.md +4 -4
  51. package/.agents/skills/quality-auto-test/SKILL.md +11 -1
  52. package/.agents/skills/quality-debug/SKILL.md +16 -2
  53. package/.agents/skills/quality-retrospective/SKILL.md +9 -1
  54. package/.agents/skills/quality-review/SKILL.md +8 -0
  55. package/.agents/skills/quality-sync/SKILL.md +2 -2
  56. package/.agents/skills/quality-test/SKILL.md +9 -1
  57. package/.agents/skills/security-audit/SKILL.md +14 -4
  58. package/.agents/skills/spec-add/SKILL.md +5 -2
  59. package/.agents/skills/spec-load/SKILL.md +1 -1
  60. package/.agents/skills/spec-remove/SKILL.md +1 -1
  61. package/.agents/skills/spec-setup/SKILL.md +3 -0
  62. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
  63. package/.agents/skills/team-coordinate/specs/role-spec-template.md +197 -198
  64. package/.agents/skills/team-roadmap-dev/SKILL.md +164 -164
  65. package/.agents/skills/team-roadmap-dev/specs/team-config.json +1 -1
  66. package/.agents/skills/team-swarm/roles/analyst/role.md +172 -176
  67. package/.agy/skills/domain-add/SKILL.md +3 -0
  68. package/.agy/skills/learn-decompose/SKILL.md +7 -4
  69. package/.agy/skills/learn-follow/SKILL.md +4 -2
  70. package/.agy/skills/learn-investigate/SKILL.md +8 -6
  71. package/.agy/skills/learn-second-opinion/SKILL.md +6 -3
  72. package/.agy/skills/maestro/SKILL.md +1 -1
  73. package/.agy/skills/maestro-amend/SKILL.md +1 -1
  74. package/.agy/skills/maestro-analyze/SKILL.md +1 -43
  75. package/.agy/skills/maestro-blueprint/SKILL.md +1 -23
  76. package/.agy/skills/maestro-brainstorm/SKILL.md +8 -25
  77. package/.agy/skills/maestro-collab/SKILL.md +6 -2
  78. package/.agy/skills/maestro-companion/SKILL.md +4 -1
  79. package/.agy/skills/maestro-composer/SKILL.md +4 -2
  80. package/.agy/skills/maestro-execute/SKILL.md +27 -9
  81. package/.agy/skills/maestro-fork/SKILL.md +4 -3
  82. package/.agy/skills/maestro-grill/SKILL.md +1 -17
  83. package/.agy/skills/maestro-guard/SKILL.md +2 -2
  84. package/.agy/skills/maestro-impeccable/SKILL.md +2 -1
  85. package/.agy/skills/maestro-init/SKILL.md +1 -1
  86. package/.agy/skills/maestro-merge/SKILL.md +12 -1
  87. package/.agy/skills/maestro-milestone-audit/SKILL.md +1 -15
  88. package/.agy/skills/maestro-milestone-complete/SKILL.md +8 -3
  89. package/.agy/skills/maestro-milestone-release/SKILL.md +8 -4
  90. package/.agy/skills/maestro-overlay/SKILL.md +9 -0
  91. package/.agy/skills/maestro-plan/SKILL.md +6 -62
  92. package/.agy/skills/maestro-player/SKILL.md +2 -2
  93. package/.agy/skills/maestro-quick/SKILL.md +5 -3
  94. package/.agy/skills/maestro-ralph/SKILL.md +8 -8
  95. package/.agy/skills/maestro-ralph-cli/SKILL.md +661 -0
  96. package/.agy/skills/maestro-ralph-cli-execute/SKILL.md +235 -0
  97. package/.agy/skills/maestro-ralph-execute/SKILL.md +127 -11
  98. package/.agy/skills/maestro-roadmap/SKILL.md +1 -9
  99. package/.agy/skills/maestro-swarm-workflow/SKILL.md +16 -14
  100. package/.agy/skills/maestro-tools-register/SKILL.md +16 -1
  101. package/.agy/skills/maestro-ui-codify/SKILL.md +11 -1
  102. package/.agy/skills/maestro-universal-workflow/SKILL.md +28 -5
  103. package/.agy/skills/maestro-update/SKILL.md +10 -7
  104. package/.agy/skills/manage-codebase-rebuild/SKILL.md +5 -1
  105. package/.agy/skills/manage-drift-realign/SKILL.md +6 -2
  106. package/.agy/skills/manage-harvest/SKILL.md +4 -1
  107. package/.agy/skills/manage-issue-discover/SKILL.md +1 -0
  108. package/.agy/skills/manage-kg-extractors/SKILL.md +5 -1
  109. package/.agy/skills/manage-knowhow-capture/SKILL.md +1 -0
  110. package/.agy/skills/manage-knowledge-audit/SKILL.md +3 -0
  111. package/.agy/skills/manage-wiki/SKILL.md +1 -0
  112. package/.agy/skills/odyssey-debug/SKILL.md +2 -1
  113. package/.agy/skills/odyssey-improve/SKILL.md +2 -2
  114. package/.agy/skills/odyssey-planex/SKILL.md +8 -7
  115. package/.agy/skills/odyssey-review-test-fix/SKILL.md +4 -1
  116. package/.agy/skills/odyssey-ui/SKILL.md +4 -4
  117. package/.agy/skills/quality-auto-test/SKILL.md +11 -1
  118. package/.agy/skills/quality-debug/SKILL.md +16 -2
  119. package/.agy/skills/quality-retrospective/SKILL.md +9 -1
  120. package/.agy/skills/quality-review/SKILL.md +8 -0
  121. package/.agy/skills/quality-sync/SKILL.md +2 -2
  122. package/.agy/skills/quality-test/SKILL.md +9 -1
  123. package/.agy/skills/security-audit/SKILL.md +14 -4
  124. package/.agy/skills/spec-add/SKILL.md +5 -2
  125. package/.agy/skills/spec-load/SKILL.md +1 -1
  126. package/.agy/skills/spec-remove/SKILL.md +1 -1
  127. package/.agy/skills/spec-setup/SKILL.md +3 -0
  128. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
  129. package/.agy/skills/team-coordinate/specs/role-spec-template.md +197 -198
  130. package/.agy/skills/team-roadmap-dev/SKILL.md +141 -153
  131. package/.agy/skills/team-roadmap-dev/specs/team-config.json +1 -1
  132. package/.agy/skills/team-swarm/roles/analyst/role.md +172 -176
  133. package/.claude/commands/domain-add.md +3 -0
  134. package/.claude/commands/learn-decompose.md +7 -4
  135. package/.claude/commands/learn-follow.md +4 -2
  136. package/.claude/commands/learn-investigate.md +8 -6
  137. package/.claude/commands/learn-second-opinion.md +6 -3
  138. package/.claude/commands/maestro-amend.md +1 -1
  139. package/.claude/commands/maestro-analyze.md +1 -43
  140. package/.claude/commands/maestro-blueprint.md +1 -23
  141. package/.claude/commands/maestro-brainstorm.md +8 -25
  142. package/.claude/commands/maestro-collab.md +6 -2
  143. package/.claude/commands/maestro-companion.md +4 -1
  144. package/.claude/commands/maestro-composer.md +4 -2
  145. package/.claude/commands/maestro-execute.md +27 -9
  146. package/.claude/commands/maestro-fork.md +4 -3
  147. package/.claude/commands/maestro-grill.md +1 -17
  148. package/.claude/commands/maestro-guard.md +2 -2
  149. package/.claude/commands/maestro-impeccable.md +2 -1
  150. package/.claude/commands/maestro-init.md +1 -1
  151. package/.claude/commands/maestro-merge.md +12 -1
  152. package/.claude/commands/maestro-milestone-audit.md +1 -15
  153. package/.claude/commands/maestro-milestone-complete.md +8 -3
  154. package/.claude/commands/maestro-milestone-release.md +8 -4
  155. package/.claude/commands/maestro-overlay.md +9 -0
  156. package/.claude/commands/maestro-plan.md +6 -62
  157. package/.claude/commands/maestro-player.md +2 -2
  158. package/.claude/commands/maestro-quick.md +5 -3
  159. package/.claude/commands/maestro-ralph-cli-execute.md +237 -0
  160. package/.claude/commands/maestro-ralph-cli.md +663 -0
  161. package/.claude/commands/maestro-ralph-execute.md +127 -11
  162. package/.claude/commands/maestro-ralph.md +8 -8
  163. package/.claude/commands/maestro-roadmap.md +1 -9
  164. package/.claude/commands/maestro-swarm-workflow.md +16 -14
  165. package/.claude/commands/maestro-tools-register.md +16 -1
  166. package/.claude/commands/maestro-ui-codify.md +11 -1
  167. package/.claude/commands/maestro-universal-workflow.md +28 -5
  168. package/.claude/commands/maestro-update.md +10 -7
  169. package/.claude/commands/maestro.md +1 -1
  170. package/.claude/commands/manage-codebase-rebuild.md +5 -1
  171. package/.claude/commands/manage-drift-realign.md +6 -2
  172. package/.claude/commands/manage-harvest.md +4 -1
  173. package/.claude/commands/manage-issue-discover.md +1 -0
  174. package/.claude/commands/manage-kg-extractors.md +5 -1
  175. package/.claude/commands/manage-knowhow-capture.md +1 -0
  176. package/.claude/commands/manage-knowledge-audit.md +3 -0
  177. package/.claude/commands/manage-wiki.md +1 -0
  178. package/.claude/commands/odyssey-debug.md +2 -1
  179. package/.claude/commands/odyssey-improve.md +2 -2
  180. package/.claude/commands/odyssey-planex.md +8 -7
  181. package/.claude/commands/odyssey-review-test-fix.md +4 -1
  182. package/.claude/commands/odyssey-ui.md +4 -4
  183. package/.claude/commands/quality-auto-test.md +11 -1
  184. package/.claude/commands/quality-debug.md +16 -2
  185. package/.claude/commands/quality-retrospective.md +9 -1
  186. package/.claude/commands/quality-review.md +8 -0
  187. package/.claude/commands/quality-sync.md +2 -2
  188. package/.claude/commands/quality-test.md +9 -1
  189. package/.claude/commands/security-audit.md +14 -4
  190. package/.claude/commands/spec-add.md +5 -2
  191. package/.claude/commands/spec-load.md +1 -1
  192. package/.claude/commands/spec-remove.md +1 -1
  193. package/.claude/commands/spec-setup.md +3 -0
  194. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
  195. package/.claude/skills/team-coordinate/specs/role-spec-template.md +197 -198
  196. package/.claude/skills/team-roadmap-dev/SKILL.md +169 -169
  197. package/.claude/skills/team-roadmap-dev/specs/team-config.json +1 -1
  198. package/.claude/skills/team-swarm/roles/analyst/role.md +181 -185
  199. package/.codex/skills/codify-to-knowhow/SKILL.md +27 -15
  200. package/.codex/skills/domain-add/SKILL.md +5 -3
  201. package/.codex/skills/learn-decompose/SKILL.md +22 -4
  202. package/.codex/skills/learn-follow/SKILL.md +12 -6
  203. package/.codex/skills/learn-investigate/SKILL.md +11 -6
  204. package/.codex/skills/learn-retro/SKILL.md +12 -6
  205. package/.codex/skills/learn-second-opinion/SKILL.md +11 -3
  206. package/.codex/skills/maestro/SKILL.md +19 -13
  207. package/.codex/skills/maestro-amend/SKILL.md +10 -2
  208. package/.codex/skills/maestro-analyze/SKILL.md +7 -1
  209. package/.codex/skills/maestro-blueprint/SKILL.md +1 -1
  210. package/.codex/skills/maestro-brainstorm/SKILL.md +11 -8
  211. package/.codex/skills/maestro-collab/SKILL.md +5 -5
  212. package/.codex/skills/maestro-companion/SKILL.md +4 -1
  213. package/.codex/skills/maestro-composer/SKILL.md +6 -3
  214. package/.codex/skills/maestro-execute/SKILL.md +11 -8
  215. package/.codex/skills/maestro-fork/SKILL.md +4 -3
  216. package/.codex/skills/maestro-grill/SKILL.md +1 -1
  217. package/.codex/skills/maestro-guard/SKILL.md +1 -1
  218. package/.codex/skills/maestro-impeccable/SKILL.md +5 -5
  219. package/.codex/skills/maestro-init/SKILL.md +3 -2
  220. package/.codex/skills/maestro-milestone-audit/SKILL.md +21 -9
  221. package/.codex/skills/maestro-milestone-complete/SKILL.md +3 -3
  222. package/.codex/skills/maestro-milestone-release/SKILL.md +18 -1
  223. package/.codex/skills/maestro-next/SKILL.md +11 -10
  224. package/.codex/skills/maestro-overlay/SKILL.md +16 -6
  225. package/.codex/skills/maestro-player/SKILL.md +11 -5
  226. package/.codex/skills/maestro-quick/SKILL.md +2 -2
  227. package/.codex/skills/maestro-ralph/SKILL.md +44 -31
  228. package/.codex/skills/maestro-ralph-cli/SKILL.md +394 -0
  229. package/.codex/skills/maestro-ralph-cli-execute/SKILL.md +146 -0
  230. package/.codex/skills/maestro-ralph-execute/SKILL.md +105 -24
  231. package/.codex/skills/maestro-roadmap/SKILL.md +8 -2
  232. package/.codex/skills/maestro-tools-execute/SKILL.md +8 -4
  233. package/.codex/skills/maestro-tools-register/SKILL.md +10 -6
  234. package/.codex/skills/maestro-ui-codify/SKILL.md +14 -9
  235. package/.codex/skills/manage-codebase-rebuild/SKILL.md +36 -14
  236. package/.codex/skills/manage-codebase-refresh/SKILL.md +1 -1
  237. package/.codex/skills/manage-drift-realign/SKILL.md +15 -12
  238. package/.codex/skills/manage-harvest/SKILL.md +1 -1
  239. package/.codex/skills/manage-issue/SKILL.md +8 -4
  240. package/.codex/skills/manage-issue-discover/SKILL.md +15 -14
  241. package/.codex/skills/manage-knowhow/SKILL.md +3 -2
  242. package/.codex/skills/manage-knowhow-capture/SKILL.md +4 -3
  243. package/.codex/skills/manage-learn/SKILL.md +2 -2
  244. package/.codex/skills/odyssey-debug/SKILL.md +12 -7
  245. package/.codex/skills/odyssey-improve/SKILL.md +11 -6
  246. package/.codex/skills/odyssey-planex/SKILL.md +14 -8
  247. package/.codex/skills/odyssey-review-test-fix/SKILL.md +12 -7
  248. package/.codex/skills/odyssey-ui/SKILL.md +10 -5
  249. package/.codex/skills/quality-auto-test/SKILL.md +13 -5
  250. package/.codex/skills/quality-debug/SKILL.md +18 -11
  251. package/.codex/skills/quality-refactor/SKILL.md +4 -4
  252. package/.codex/skills/quality-retrospective/SKILL.md +5 -6
  253. package/.codex/skills/quality-review/SKILL.md +18 -11
  254. package/.codex/skills/quality-sync/SKILL.md +2 -2
  255. package/.codex/skills/quality-test/SKILL.md +7 -5
  256. package/.codex/skills/security-audit/SKILL.md +7 -5
  257. package/.codex/skills/spec-add/SKILL.md +9 -7
  258. package/.codex/skills/spec-load/SKILL.md +3 -2
  259. package/.codex/skills/spec-map/SKILL.md +10 -1
  260. package/.codex/skills/spec-remove/SKILL.md +3 -2
  261. package/.codex/skills/team-coordinate/SKILL.md +10 -4
  262. package/.codex/skills/team-lifecycle-v4/SKILL.md +33 -26
  263. package/.codex/skills/team-quality-assurance/SKILL.md +43 -0
  264. package/.codex/skills/team-review/SKILL.md +50 -6
  265. package/.codex/skills/team-tech-debt/SKILL.md +53 -7
  266. package/.codex/skills/team-testing/SKILL.md +50 -2
  267. package/.codex/skills/wiki-connect/SKILL.md +3 -1
  268. package/.codex/skills/wiki-digest/SKILL.md +6 -4
  269. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +16 -0
  270. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +419 -44
  271. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -1
  272. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +43 -5
  273. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  274. package/dashboard/dist-server/src/commands/install-backend.js +31 -16
  275. package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
  276. package/dashboard/dist-server/src/core/component-defs.js +25 -0
  277. package/dashboard/dist-server/src/core/component-defs.js.map +1 -1
  278. package/dashboard/dist-server/src/graph/kg/db/types.d.ts +3 -0
  279. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.d.ts +46 -0
  280. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js +329 -0
  281. package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js.map +1 -0
  282. package/dashboard/dist-server/src/graph/kg/embedding/index.d.ts +2 -0
  283. package/dashboard/dist-server/src/graph/kg/embedding/index.js +3 -0
  284. package/dashboard/dist-server/src/graph/kg/embedding/index.js.map +1 -0
  285. package/dashboard/dist-server/src/graph/kg/engine.d.ts +19 -1
  286. package/dashboard/dist-server/src/graph/kg/engine.js +71 -1
  287. package/dashboard/dist-server/src/graph/kg/engine.js.map +1 -1
  288. package/dashboard/dist-server/src/graph/kg/query/scoring.d.ts +5 -0
  289. package/dashboard/dist-server/src/graph/kg/query/scoring.js +85 -1
  290. package/dashboard/dist-server/src/graph/kg/query/scoring.js.map +1 -1
  291. package/dashboard/dist-server/src/graph/kg/query/search.d.ts +7 -0
  292. package/dashboard/dist-server/src/graph/kg/query/search.js +117 -1
  293. package/dashboard/dist-server/src/graph/kg/query/search.js.map +1 -1
  294. package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js +49 -0
  295. package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js.map +1 -1
  296. package/dashboard/dist-server/src/hooks/kg-sync-hook.js +3 -0
  297. package/dashboard/dist-server/src/hooks/kg-sync-hook.js.map +1 -1
  298. package/dashboard/dist-server/src/tools/spec-loader.js +7 -3
  299. package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
  300. package/dist/src/commands/install-backend.d.ts.map +1 -1
  301. package/dist/src/commands/install-backend.js +31 -16
  302. package/dist/src/commands/install-backend.js.map +1 -1
  303. package/dist/src/core/component-defs.d.ts.map +1 -1
  304. package/dist/src/core/component-defs.js +25 -0
  305. package/dist/src/core/component-defs.js.map +1 -1
  306. package/dist/src/core/plugin-bridge.d.ts.map +1 -1
  307. package/dist/src/core/plugin-bridge.js +17 -0
  308. package/dist/src/core/plugin-bridge.js.map +1 -1
  309. package/dist/src/graph/kg/db/types.d.ts +3 -0
  310. package/dist/src/graph/kg/db/types.d.ts.map +1 -1
  311. package/dist/src/graph/kg/embedding/code-embedding.d.ts +47 -0
  312. package/dist/src/graph/kg/embedding/code-embedding.d.ts.map +1 -0
  313. package/dist/src/graph/kg/embedding/code-embedding.js +329 -0
  314. package/dist/src/graph/kg/embedding/code-embedding.js.map +1 -0
  315. package/dist/src/graph/kg/embedding/index.d.ts +3 -0
  316. package/dist/src/graph/kg/embedding/index.d.ts.map +1 -0
  317. package/dist/src/graph/kg/embedding/index.js +3 -0
  318. package/dist/src/graph/kg/embedding/index.js.map +1 -0
  319. package/dist/src/graph/kg/engine.d.ts +19 -1
  320. package/dist/src/graph/kg/engine.d.ts.map +1 -1
  321. package/dist/src/graph/kg/engine.js +71 -1
  322. package/dist/src/graph/kg/engine.js.map +1 -1
  323. package/dist/src/graph/kg/query/scoring.d.ts +5 -0
  324. package/dist/src/graph/kg/query/scoring.d.ts.map +1 -1
  325. package/dist/src/graph/kg/query/scoring.js +85 -1
  326. package/dist/src/graph/kg/query/scoring.js.map +1 -1
  327. package/dist/src/graph/kg/query/search.d.ts +7 -0
  328. package/dist/src/graph/kg/query/search.d.ts.map +1 -1
  329. package/dist/src/graph/kg/query/search.js +117 -1
  330. package/dist/src/graph/kg/query/search.js.map +1 -1
  331. package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -1
  332. package/dist/src/graph/kg/surface/mcp-tools.js +49 -0
  333. package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -1
  334. package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
  335. package/dist/src/hooks/kg-sync-hook.js +3 -0
  336. package/dist/src/hooks/kg-sync-hook.js.map +1 -1
  337. package/dist/src/tools/code-semantic-search.d.ts +10 -0
  338. package/dist/src/tools/code-semantic-search.d.ts.map +1 -0
  339. package/dist/src/tools/code-semantic-search.js +81 -0
  340. package/dist/src/tools/code-semantic-search.js.map +1 -0
  341. package/dist/src/tools/index.d.ts.map +1 -1
  342. package/dist/src/tools/index.js +4 -0
  343. package/dist/src/tools/index.js.map +1 -1
  344. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  345. package/dist/src/tools/spec-loader.js +7 -3
  346. package/dist/src/tools/spec-loader.js.map +1 -1
  347. package/dist/src/tools/wiki-search.d.ts +13 -0
  348. package/dist/src/tools/wiki-search.d.ts.map +1 -0
  349. package/dist/src/tools/wiki-search.js +114 -0
  350. package/dist/src/tools/wiki-search.js.map +1 -0
  351. package/dist/src/utils/update-notices.js +23 -0
  352. package/dist/src/utils/update-notices.js.map +1 -1
  353. package/package.json +4 -1
  354. package/workflows/agy-instructions.md +147 -161
  355. package/workflows/claude-instructions.md +100 -48
  356. package/workflows/codex-instructions.md +147 -161
  357. package/workflows/execute.md +4 -3
  358. package/workflows/explore-usage.md +41 -81
  359. package/workflows/grill.md +11 -0
  360. package/workflows/milestone-audit.md +8 -0
  361. package/workflows/odyssey-base-codex.md +115 -116
  362. package/workflows/odyssey-base.md +89 -91
  363. package/workflows/plan.md +6 -0
@@ -8,9 +8,15 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
8
8
  Single-step executor for ralph (adaptive) and maestro (static) sessions.
9
9
  Each invocation: locate session → find next step → resolve args → execute → update → self-invoke next.
10
10
 
11
- Mutual invocation with `$maestro-ralph` forms a self-perpetuating work loop.
11
+ ### Notation
12
12
 
13
- **Session**: `.workflow/.maestro/{session_id}/status.json` 工作流唯一真源。session_id 格式 `ralph-{YYYYMMDD-HHmmss}`($maestro-ralph 创建,自适应链)或 `maestro-{YYYYMMDD-HHmmss}`($maestro 创建,静态链)。两类都由本 skill 推进;省略 `[session-id]` 时取最新 `status=="running"`。Schema 详见 `$maestro-ralph` Session Schema。
13
+ `Skill(name)` / `Skill(name, args)` = 加载 `~/.codex/skills/{name}/SKILL.md` `.codex/skills/{name}/SKILL.md`(project 覆盖 global),args 填入目标 SKILL.md `<context>` 块的输入参数位。这是 skill 间的内部调用,**不是 CLI 命令**。严禁翻译为 `Bash("maestro {name} {args}")`。
14
+
15
+ 合法 CLI 子命令仅限结构化操作:`maestro ralph next`、`maestro ralph complete`、`maestro ralph retry`、`maestro delegate`、`maestro explore` 等。
16
+
17
+ Mutual invocation with `Skill(maestro-ralph)` forms a self-perpetuating work loop.
18
+
19
+ **Session**: `.workflow/.maestro/{session_id}/status.json` — 工作流唯一真源。session_id 格式 `ralph-{YYYYMMDD-HHmmss}`(Skill(maestro-ralph) 创建,自适应链)或 `maestro-{YYYYMMDD-HHmmss}`(Skill(maestro) 创建,静态链)。两类都由本 skill 推进;省略 `[session-id]` 时取最新 `status=="running"`。Schema 详见 `Skill(maestro-ralph)` 的 Session Schema。
14
20
  </purpose>
15
21
 
16
22
  <context>
@@ -23,16 +29,18 @@ Remaining → session_id (if matches maestro-* or ralph-*)
23
29
  ```
24
30
  Also read `session.auto_mode` from status.json — if true, treat as `-y`.
25
31
 
32
+ **session_id requirement:** Once resolved (from args or auto-discovery in A_LOCATE_SESSION), `session_id` MUST be passed to ALL `maestro ralph next|complete|retry` CLI calls via `--session <session_id>`. This prevents accidental cross-session operations when multiple sessions exist.
33
+
26
34
  **Step kinds:**
27
35
 
28
36
  | Kind | Identifier | Execution | Flow after |
29
37
  |------|-----------|-----------|------------|
30
- | decision step | `step.decision` 非空 | `$maestro-ralph` | Execution ends here |
38
+ | decision step | `step.decision` 非空 | `Skill(maestro-ralph)` | Execution ends here |
31
39
  | 执行 step | `step.decision == null` | `Bash("maestro ralph next")` → 内联按其 stdout 执行 → `Bash("maestro ralph complete N --status ...")` | Self-invoke next |
32
40
 
33
41
  HARD RULES:
34
42
  - 执行 step:**统一通过 `maestro ralph next` CLI 加载**。CLI 负责读 command_path(codex SKILL.md)、解析 `<required_reading>` + `<deferred_reading>`、拼接 prompt、写 `step.load.*` + `active_step_index` + `step.status="running"`。不要再在会话里手动 Read + 解析 required_reading
35
- - decision step:A_EXEC_DECISION 通过 `$maestro-ralph` 直调 handoff 给 ralph 评估(不走 CLI)
43
+ - decision step:A_EXEC_DECISION 通过 `Skill(maestro-ralph)` 直调 handoff 给 ralph 评估(不走 CLI)
36
44
  - `command_path` 由 ralph 在 A_BUILD_STEPS 写入 status.json(通过 `maestro ralph skills --platform codex` 预校验;缺失 → ralph next 返回 E006/E007 并拒绝执行)
37
45
  - 每个 step 结束必须调用 `maestro ralph complete N --status <S>` 或 `maestro ralph retry N`。STATUS 仅 4 个合法值:`DONE | DONE_WITH_CONCERNS | NEEDS_RETRY | BLOCKED`
38
46
  - Platform:`session.platform == "codex"`;ralph next CLI 自动按 platform 解析 SKILL.md(无需额外参数)
@@ -48,7 +56,7 @@ HARD RULES:
48
56
  7. **status.json 每步骤后由 CLI 原子写盘** — resume-safe
49
57
  8. **STATUS 枚举受限** — 仅 `DONE | DONE_WITH_CONCERNS | NEEDS_RETRY | BLOCKED`
50
58
  9. **Platform binding** — 仅处理 `session.platform == "codex"` 的会话;platform 缺失视为 codex(向前兼容)
51
- 10. **CLI ≠ Skill** — `maestro ralph next|complete|retry` 是 CLI 子命令(Bash 调用);`$maestro-ralph` / `$maestro-ralph-execute` 是 skill 直调。**严禁** `Bash("maestro \"intent\"")` 裸 intent 调用,CLI 不接受。
59
+ 10. **CLI ≠ Skill** — `maestro ralph next|complete|retry` 是 CLI 子命令(Bash 调用);`Skill(maestro-ralph)` / `Skill(maestro-ralph-execute)` 是 skill 直调。**严禁** `Bash("maestro \"intent\"")` 裸 intent 调用,CLI 不接受。
52
60
  </invariants>
53
61
 
54
62
  <state_machine>
@@ -56,7 +64,9 @@ HARD RULES:
56
64
  <states>
57
65
  S_LOCATE — 定位 session + 找下一个 pending step PERSIST: —
58
66
  S_RESOLVE_ARGS — 解析占位符 + 丰富参数 PERSIST: step.args (enriched)
67
+ S_LOAD_CONTEXT — 加载前序产出 + 发现 PERSIST: —
59
68
  S_EXECUTE — 执行当前 step PERSIST: step.status = "running", session.current_step
69
+ S_POST_ANALYZE — 产物 vs 目标偏离分析 PERSIST: step.drift_score, step.drift_correction
60
70
  S_POST_EXEC — 标记完成 + 传播上下文 PERSIST: step.completion_*, step.status, session.context
61
71
  S_HANDLE_FAIL — 处理失败 PERSIST: step.status, session.status
62
72
  S_COMPLETE — 所有 step 完成 PERSIST: session.status = "completed"
@@ -71,15 +81,24 @@ S_LOCATE:
71
81
  → S_FALLBACK WHEN: no running session
72
82
 
73
83
  S_RESOLVE_ARGS:
74
- S_EXECUTE DO: A_RESOLVE_ARGS
84
+ S_LOAD_CONTEXT DO: A_RESOLVE_ARGS
85
+
86
+ S_LOAD_CONTEXT:
87
+ → S_EXECUTE DO: A_LOAD_STEP_CONTEXT
75
88
 
76
89
  S_EXECUTE:
77
90
  → END WHEN: step.decision != null DO: A_EXEC_DECISION
78
- S_POST_EXEC WHEN: step.decision == null + ralph complete invoked with DONE|DONE_WITH_CONCERNS DO: A_EXEC_STEP
79
- S_HANDLE_FAIL WHEN: step.decision == null + ralph next exit≠0 OR ralph complete with NEEDS_RETRY|BLOCKED DO: A_EXEC_STEP
91
+ S_POST_ANALYZE WHEN: step.decision == null + execution succeeded (DONE|DONE_WITH_CONCERNS) DO: A_EXEC_STEP
92
+ S_COMPLETE WHEN: step.decision == null + ralph next exit code 2 (all steps completed)
93
+ → S_HANDLE_FAIL WHEN: step.decision == null + ralph next exit code 1|3 OR ralph complete with NEEDS_RETRY|BLOCKED DO: A_EXEC_STEP
94
+
95
+ S_POST_ANALYZE:
96
+ → S_POST_EXEC WHEN: drift_score == ALIGNED|MINOR_DRIFT DO: A_POST_ANALYZE_DRIFT
97
+ → S_EXECUTE WHEN: drift_score == MAJOR_DRIFT + not retried DO: A_POST_ANALYZE_DRIFT (re-execute with correction)
98
+ → S_POST_EXEC WHEN: drift_score == MAJOR_DRIFT + retried DO: A_POST_ANALYZE_DRIFT (proceed with caveats)
80
99
 
81
100
  S_POST_EXEC:
82
- → S_LOCATE DO: Bash("maestro ralph complete ...") + $maestro-ralph-execute
101
+ → S_LOCATE DO: Bash("maestro ralph complete ...") + Skill(maestro-ralph-execute)
83
102
  NOTE: CLI 已写完 completion_*, status, active_step_index;无需额外写盘
84
103
 
85
104
  S_HANDLE_FAIL:
@@ -93,7 +112,7 @@ S_COMPLETE:
93
112
  → END DO: A_COMPLETE_SESSION
94
113
 
95
114
  S_FALLBACK:
96
- → END DO: display "无运行中的会话。使用 $maestro 或 $maestro-ralph 创建。"
115
+ → END DO: display "无运行中的会话。使用 Skill(maestro)Skill(maestro-ralph) 创建。"
97
116
 
98
117
  </transitions>
99
118
 
@@ -104,7 +123,7 @@ S_FALLBACK:
104
123
  1. If session_id provided → load `.workflow/.maestro/{session_id}/status.json`
105
124
  2. Else: scan `.workflow/.maestro/*/status.json`, filter `status == "running"`, sort DESC, take first
106
125
  3. Extract: session_id, source, steps[], phase, milestone, intent, auto_mode, context, cli_tool, platform, active_step_index
107
- 4. **不在此处选 pending step**——pending 选择由 `maestro ralph next` CLI 内部完成;A_LOCATE_SESSION 只确认 session 存在且 running,由 A_EXEC_STEP CLI 推进
126
+ 4. Identify next pending step index: scan `steps[]` in order, find first entry with `status == "pending"` store as `next_step_index`. This index is passed to A_RESOLVE_ARGS for placeholder enrichment and to A_EXEC_STEP/A_EXEC_DECISION for display. The actual step activation (writing `active_step_index`) is still done by `maestro ralph next` CLI A_LOCATE_SESSION only reads the index without writing it.
108
127
 
109
128
  ### A_RESOLVE_ARGS
110
129
 
@@ -168,18 +187,39 @@ if goal:
168
187
 
169
188
  Write enriched args + source_artifact_ref back to status.json.
170
189
 
190
+ ### A_LOAD_STEP_CONTEXT
191
+
192
+ 加载前序产出和发现,为 inline execution 注入上下文。
193
+
194
+ 1. **Previous step output** — 读前一 completed step 的 `completion_summary` + `completion_caveats` + `completion_decisions` + `completion_deferred`
195
+ 2. **Artifacts** — 按 `session.context` 中的路径逐个 Read,提取与当前 step 相关的内容:
196
+
197
+ | 当前 stage | 加载什么 | Source |
198
+ |-----------|---------|--------|
199
+ | plan | analysis conclusions + scope_verdict | `{context.analysis_dir}/conclusions.json` |
200
+ | execute | task list + wave assignments | `{context.plan_dir}/TASK-*.json` |
201
+ | review | changed files + verification results | `{context.scratch_dir}/verification.json` |
202
+ | test | review findings | `review.json` |
203
+ | debug | error traces + failing test details | 前一 step 的 `completion_evidence` |
204
+ | brainstorm | grill report | `{context.grill_id}` report |
205
+
206
+ 3. **Explore if needed** — 产物指向代码位置但缺少上下文 → `maestro explore` 补充(仅 execute/debug/test 且有文件路径引用时)
207
+ 4. **Accumulated signals** — 遍历 ALL completed steps → 聚合 caveats + deferred
208
+
209
+ 加载的内容进入会话上下文,后续 inline execution 自动受益。
210
+
171
211
  ### A_EXEC_DECISION
172
212
 
173
213
  1. Mark step running, write status.json
174
214
  2. Display: `[{index}/{total}] ◆ {step.decision} Retry: {retry}/{max}`
175
- 3. `$maestro-ralph` — 直调 ralph 评估 + handoff
215
+ 3. `Skill(maestro-ralph)` — 直调 ralph 评估 + handoff
176
216
  4. 执行在此结束
177
217
 
178
218
  ### A_EXEC_STEP
179
219
 
180
- 1. **Load** — `Bash("maestro ralph next")`
220
+ 1. **Load** — `Bash("maestro ralph next --session {session_id}")`
181
221
  - 退出码 0 → 按 stdout 内联执行
182
- - 退出码 2 → 交给 S_LOCATE
222
+ - 退出码 2 → 所有 step 已完成,转 S_COMPLETE
183
223
  - 退出码 3 → active_step_index 已被占用
184
224
  - 退出码 1 → pause session
185
225
  2. **Goal context pre-injection**:
@@ -195,11 +235,11 @@ Write enriched args + source_artifact_ref back to status.json.
195
235
  </goal_context>
196
236
  ```
197
237
  3. **Inline execution** — 按 stdout 执行;deferred_reading 按需 Read
198
- 4. **Complete**:
199
- - `Bash("maestro ralph complete N --status DONE --summary \"...\" [--evidence <path>] [--decisions \"...\"] [--caveats \"...\"] [--deferred \"...\"]")`
200
- - `Bash("maestro ralph complete N --status DONE_WITH_CONCERNS --summary \"...\" --concerns \"...\"")`
201
- - `Bash("maestro ralph retry N")`
202
- - `Bash("maestro ralph complete N --status BLOCKED --reason \"...\"")`
238
+ 4. **Complete** (all calls MUST include `--session {session_id}`):
239
+ - `Bash("maestro ralph complete N --session {session_id} --status DONE --summary \"...\" [--evidence <path>] [--decisions \"...\"] [--caveats \"...\"] [--deferred \"...\"]")`
240
+ - `Bash("maestro ralph complete N --session {session_id} --status DONE_WITH_CONCERNS --summary \"...\" --concerns \"...\"")`
241
+ - `Bash("maestro ralph retry N --session {session_id}")`
242
+ - `Bash("maestro ralph complete N --session {session_id} --status BLOCKED --reason \"...\"")`
203
243
 
204
244
  | Flag | 规则 | 示例 |
205
245
  |------|------|------|
@@ -209,11 +249,52 @@ Write enriched args + source_artifact_ref back to status.json.
209
249
  | `--deferred` | SHOULD。推迟工作,可多次 | `"性能优化留到 review 后"` |
210
250
  5. **Propagate context signals** — 关键信号 (`PHASE: N` / `scratch_dir: path` / `BLP-xxx`) 写入 `status.json.context`
211
251
 
212
- 完成后 S_LOCATE 触发 `$maestro-ralph-execute` 直调自调用。
252
+ 完成后 S_LOCATE 触发 `Skill(maestro-ralph-execute)` 直调自调用。
253
+
254
+ ### A_POST_ANALYZE_DRIFT
255
+
256
+ 执行完成后、调 ralph complete 前,分析产物与目标的偏离程度并自动修正。
257
+
258
+ **1. 收集对照基准:**
259
+
260
+ | 基准来源 | 取值 |
261
+ |---------|------|
262
+ | `step.goal_ref` → goal.done_when | 子目标的完成条件 |
263
+ | `session.boundary_contract.definition_of_done` | 全局验收标准 |
264
+ | `session.execution_criteria` | 执行准则 |
265
+ | `session.intent` | 原始意图 |
266
+
267
+ **2. 读产物摘要:**
268
+
269
+ 从 A_EXTRACT_STEP_SIGNALS (step 4a) 已提取的 summary + decisions + artifacts 构建产物画像。
270
+
271
+ **3. 对比评分:**
272
+
273
+ | 维度 | 检查 |
274
+ |------|------|
275
+ | 覆盖度 | 产物是否覆盖了 goal.done_when 的每个条件 |
276
+ | 方向性 | decisions 是否与 intent 和 boundary 一致 |
277
+ | 完整性 | 预期产物类型是否齐全(如 plan 阶段应有 TASK-*.json) |
278
+
279
+ **drift_score:**
280
+ - `ALIGNED` — 全部维度通过
281
+ - `MINOR_DRIFT` — 覆盖度/完整性有小缺口,不影响后续
282
+ - `MAJOR_DRIFT` — 方向性偏离或关键产物缺失
283
+
284
+ **4. 修正动作:**
285
+
286
+ | drift_score | 动作 |
287
+ |-------------|------|
288
+ | ALIGNED | 正常进入 S_POST_EXEC |
289
+ | MINOR_DRIFT | 将偏离项追加到 completion_caveats,正常 complete |
290
+ | MAJOR_DRIFT + 未重试 | 将偏离分析写入 `step.drift_correction`,回到 S_EXECUTE 重跑(A_LOAD_STEP_CONTEXT 自动加载 drift_correction 作为修正上下文) |
291
+ | MAJOR_DRIFT + 已重试 | 将偏离项写入 caveats + concerns,以 DONE_WITH_CONCERNS complete,由后续 decision node 裁决 |
292
+
293
+ **5. 写入:** `step.drift_score`, `step.drift_correction`
213
294
 
214
295
  ### A_RETRY
215
296
 
216
- 1. `Bash("maestro ralph retry N")` — CLI 设 `step.retried = true`, `step.status = "pending"`, `step.completion_confirmed = false`, 清 `active_step_index`
297
+ 1. `Bash("maestro ralph retry N --session {session_id}")` — CLI 设 `step.retried = true`, `step.status = "pending"`, `step.completion_confirmed = false`, 清 `active_step_index`
217
298
  2. Display: `[{index}/{total}] ↻ {step.skill} retry`
218
299
 
219
300
  ### A_SKIP_STEP
@@ -224,7 +305,7 @@ Write enriched args + source_artifact_ref back to status.json.
224
305
  ### A_PAUSE_SESSION
225
306
 
226
307
  通常由 `ralph complete N --status BLOCKED --reason "..."` 触发,CLI 已写 `session.status = "paused"`。手动 pause 场景下直接编辑 status.json。
227
- Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。$maestro-ralph continue 恢复。`
308
+ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。Skill(maestro-ralph, continue) 恢复。`
228
309
 
229
310
  ### A_COMPLETE_SESSION
230
311
 
@@ -258,7 +339,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。$maestro
258
339
 
259
340
  | Code | Severity | Description | Recovery |
260
341
  |------|----------|-------------|----------|
261
- | E001 | error | No running session found | Suggest $maestro or $maestro-ralph |
342
+ | E001 | error | No running session found | Suggest Skill(maestro) or Skill(maestro-ralph) |
262
343
  | E006 | error | command_path missing/unreachable for 执行 step | `ralph next` 拒绝;编辑 status.json 或重 build |
263
344
  | E007 | error | required_reading 引用文件缺失 | `ralph next` 拒绝;CLI stderr 列出缺失路径 |
264
345
  | E008 | error | `ralph complete` idx ≠ active_step_index | 编辑 status.json 修正一致性 |
@@ -273,7 +354,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。$maestro
273
354
  - [ ] Session discovery covers maestro-* and ralph-*
274
355
  - [ ] `-y` parsed from args 或 session.auto_mode;auto=true 时透传 `-y` 到 skill args
275
356
  - [ ] Placeholders resolved;per-skill enrichment 正确
276
- - [ ] Decision 节点(`step.decision != null`)走 `$maestro-ralph` 直调 handoff(**不调 ralph next CLI**)
357
+ - [ ] Decision 节点(`step.decision != null`)走 `Skill(maestro-ralph)` 直调 handoff(**不调 ralph next CLI**)
277
358
  - [ ] 执行 step 通过 `Bash("maestro ralph next")` 加载;CLI 返回拼好的 prompt + completion 协议
278
359
  - [ ] required_reading 由 CLI 自动加载并拼入 prompt;缺失 → CLI 退出码 1,pause session
279
360
  - [ ] `<deferred_reading>` 由 CLI 记录到 `step.load.deferred_files`,执行阶段按需 Read
@@ -94,8 +94,14 @@ S_AGGREGATE -- 精炼、评估、输出 PERSIST: con
94
94
 
95
95
  S_PARSE:
96
96
  -> S_INPUT WHEN: create mode (default)
97
- -> REVISE_FLOW WHEN: --revise (load roadmap.md, apply changes, preserve completed phases)
98
- -> REVIEW_FLOW WHEN: --review (read-only health assessment)
97
+ -> S_REVISE WHEN: --revise (load roadmap.md, apply changes, preserve completed phases)
98
+ -> S_REVIEW WHEN: --review (read-only health assessment)
99
+
100
+ S_REVISE:
101
+ -> S_AGGREGATE DO: A_REVISE — load .workflow/roadmap.md (E005 if missing), apply --revise instructions, preserve completed phases (status!="pending"), rewrite only pending phases, update state.json milestones
102
+
103
+ S_REVIEW:
104
+ -> END DO: A_REVIEW — load .workflow/roadmap.md (E005 if missing), read-only health assessment: phase coverage, dependency integrity, stale phases, progress %. Display report. No writes.
99
105
 
100
106
  S_INPUT:
101
107
  -> S_CSV_GEN DO: parse requirement (text/@file), load context-package.json if --from, codebase detection, load specs
@@ -31,11 +31,11 @@ Empty arguments enters interactive mode: list all tools for user selection.
31
31
 
32
32
  ### Step 1: Load Tool
33
33
 
34
- **By name**:
34
+ **By name** (search all categories first, then filter):
35
35
  ```bash
36
- maestro load --type spec --category coding --keyword <name>
36
+ maestro search "<name>" --type spec
37
37
  ```
38
- Match tool entries whose title or keywords contain the name.
38
+ Match tool entries whose title or keywords contain the name across all categories. If no results, retry with `maestro search "<name>" --type knowhow`. Present matches to user if multiple found.
39
39
 
40
40
  **By category**:
41
41
  ```bash
@@ -44,7 +44,11 @@ maestro load --type spec --category <category>
44
44
  Extract tool entries from output, list available tools.
45
45
 
46
46
  **Empty args**:
47
- Load all tool entries, present to user with request_user_input for selection.
47
+ Search all tool entries across all categories:
48
+ ```bash
49
+ maestro search "tool" --type knowhow
50
+ ```
51
+ Present to user with request_user_input for selection.
48
52
 
49
53
  ### Step 2: Display Tool
50
54
 
@@ -6,7 +6,9 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
6
6
  ---
7
7
 
8
8
  <purpose>
9
- Codify reusable business processes as knowhow documents with `tool: true` in YAML frontmatter. Once registered, entries are auto-discovered by downstream agents via `spec load --category` — plan agents pick up design/architecture flows, test agents pick up verification methods, coding agents pick up execution steps.
9
+ Codify reusable business processes as knowhow documents with `tool: true` in YAML frontmatter.
10
+
11
+ **Storage architecture**: `knowhow/` is the single source of truth for tool content. Spec index entries (`specs/`) serve only as discovery pointers — they reference knowhow documents via `ref:` links but never store tool steps directly. Downstream agents discover tools via `maestro search` or `maestro load --type knowhow --keyword <name>`, with spec index providing category-based routing.
10
12
 
11
13
  Four modes:
12
14
 
@@ -30,7 +32,7 @@ $maestro-tools-register "promote RCP-db-migration-rollback as test tool"
30
32
  $maestro-tools-register "promote knowhow-auth-api to coding tool"
31
33
  ```
32
34
 
33
- **Tool registration**: Creates knowhow documents in `knowhow/` folder with `tool: true` in YAML frontmatter. Tools are auto-discovered by `spec load` based on category + tool flag.
35
+ **Tool registration**: Creates knowhow documents in `.workflow/knowhow/` (single source of truth for tool content). Tools are discovered via `maestro search` or `maestro load --type knowhow` by category + tool flag.
34
36
 
35
37
  **Knowhow format**:
36
38
  ```yaml
@@ -149,8 +151,9 @@ tool: true
149
151
 
150
152
  ### Step 6: Verify
151
153
 
152
- - `maestro load --type spec --category <category> --keyword <keyword>` to confirm loadable
153
- - Display result: title, category, keywords, storage location
154
+ - Verify knowhow document exists: `maestro load --type knowhow --id <id>` to confirm loadable
155
+ - Verify discovery works: `maestro search "<keyword>" --type knowhow` to confirm searchable
156
+ - Display result: title, category, keywords, storage location (knowhow/)
154
157
 
155
158
  </execution>
156
159
 
@@ -163,9 +166,10 @@ tool: true
163
166
  </error_codes>
164
167
 
165
168
  <success_criteria>
166
- - [ ] Tool registered as knowhow document with `tool: true` frontmatter
169
+ - [ ] Tool registered as knowhow document in `.workflow/knowhow/` with `tool: true` frontmatter
167
170
  - [ ] category attribute correctly set
168
171
  - [ ] keywords auto-extracted (3-5 terms)
169
- - [ ] Loadable via `spec load --category <category>`
172
+ - [ ] Discoverable via `maestro search` and `maestro load --type knowhow`
170
173
  - [ ] Long processes use ref mode with knowhow file created
174
+ - [ ] No tool content duplicated in spec index — spec entries use `ref:` links only
171
175
  </success_criteria>
@@ -2,7 +2,7 @@
2
2
  name: maestro-ui-codify
3
3
  description: Extract design system from code, generate reference package, persist as knowledge assets
4
4
  argument-hint: "<source-path> [--package-name <name>] [--output-dir <path>] [--overwrite] [-y]"
5
- allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
6
6
  ---
7
7
 
8
8
  <purpose>
@@ -68,13 +68,13 @@ $maestro-ui-codify "src/styles" --output-dir .workflow/packages --overwrite -y
68
68
  ### tasks.csv (Master State)
69
69
 
70
70
  ```csv
71
- id,wave,title,description,agent_type,deps
72
- "discover-1","1","Discover design files","Scan source directory, categorize files by type (CSS/SCSS/JS/TS/HTML), build file inventory with import relationships","discover",""
73
- "style-1","2","Extract visual design tokens","Extract color, typography, spacing, border, shadow tokens from source files. Output design-tokens.json","extract-style","discover-1"
74
- "anim-1","2","Extract animation tokens","Extract animation/transition declarations: keyframes, durations, easings, motion patterns. Output animation-tokens.json","extract-animation","discover-1"
75
- "layout-1","2","Extract layout patterns","Extract component layout patterns: grid/flex systems, responsive breakpoints, container patterns. Output layout-templates.json","extract-layout","discover-1"
76
- "package-1","3","Generate reference package","Copy token JSONs to package dir, generate preview.html + preview.css interactive showcase","package","style-1;anim-1;layout-1"
77
- "knowhow-1","4","Build knowledge assets","Read token JSONs, build knowhow-manifest.json, write knowhow files + spec entries, cleanup temp workspace","knowhow","package-1"
71
+ id,wave,title,description,agent_type,deps,status
72
+ "discover-1","1","Discover design files","Scan source directory, categorize files by type (CSS/SCSS/JS/TS/HTML), build file inventory with import relationships","discover","","pending"
73
+ "style-1","2","Extract visual design tokens","Extract color, typography, spacing, border, shadow tokens from source files. Output design-tokens.json","extract-style","discover-1","pending"
74
+ "anim-1","2","Extract animation tokens","Extract animation/transition declarations: keyframes, durations, easings, motion patterns. Output animation-tokens.json","extract-animation","discover-1","pending"
75
+ "layout-1","2","Extract layout patterns","Extract component layout patterns: grid/flex systems, responsive breakpoints, container patterns. Output layout-templates.json","extract-layout","discover-1","pending"
76
+ "package-1","3","Generate reference package","Copy token JSONs to package dir, generate preview.html + preview.css interactive showcase","package","style-1;anim-1;layout-1","pending"
77
+ "knowhow-1","4","Build knowledge assets","Read token JSONs, build knowhow-manifest.json, write knowhow files + spec entries, cleanup temp workspace","knowhow","package-1","pending"
78
78
  ```
79
79
 
80
80
  **Column separation rule**: Input columns and Output columns MUST NOT share names. Wave CSV only contains Input columns. Output columns are returned exclusively via output_schema.
@@ -89,6 +89,7 @@ id,wave,title,description,agent_type,deps
89
89
  | `description` | Input | Detailed instructions for this task |
90
90
  | `agent_type` | Input | Agent type: discover/extract-style/extract-animation/extract-layout/package/knowhow |
91
91
  | `deps` | Input | Semicolon-separated dependency task IDs |
92
+ | `status` | Lifecycle | Task lifecycle status, initialized to `pending`. Updated to `completed`/`failed` after wave merge via `result_status` mapping |
92
93
  | `result_status` | Output | `completed` / `failed` (returned via output_schema) |
93
94
  | `findings` | Output | Key findings summary (max 500 chars, via output_schema) |
94
95
  | `output_path` | Output | Path to generated artifact (via output_schema) |
@@ -187,6 +188,10 @@ sessionFolder=".workflow/.csv-wave/${session_date}-ui-codify-${session_slug}"
187
188
  mkdir -p "$sessionFolder"
188
189
  ```
189
190
 
191
+ ### Step 2c.1: Confirmation Gate
192
+
193
+ Unless `-y/--yes`, display source path, package name, output directory, overwrite policy, and wave plan summary. Use `request_user_input` to confirm before proceeding. Under `-y`, skip confirmation.
194
+
190
195
  ### Step 3: Generate tasks.csv
191
196
 
192
197
  Build the master CSV with 4 waves. The `description` column contains full agent instructions.
@@ -329,7 +334,7 @@ spawn_agents_on_csv({
329
334
 
330
335
  Merge wave-2-results.csv into master `tasks.csv`: map `result_status` -> master `status` column, then delete `wave-2.csv` and `wave-2-results.csv`.
331
336
 
332
- **Degradation**: If animation agent fails (W001), continue — animation is optional. If style or layout agent fails, warn but continue with available results.
337
+ **Degradation**: If animation agent fails (W001), continue — animation is optional. If style agent fails, Wave 3 proceeds without design-tokens.json but artifact verification will report `incomplete` status. If layout agent fails, Wave 3 proceeds without layout-templates.json but artifact verification will report `incomplete` status. If both style AND layout fail, skip Wave 3 and Wave 4, mark session `degraded`, and report partial results only.
333
338
 
334
339
  #### Wave 3: Reference Package (Barrier)
335
340
 
@@ -6,7 +6,7 @@ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request
6
6
  ---
7
7
 
8
8
  <purpose>
9
- Single-wave parallel execution -- 5 independent doc generator agents each analyze a different documentation dimension of the codebase. All agents run concurrently with no dependencies. This is a destructive operation that rebuilds the entire `.workflow/codebase/` directory from scratch.
9
+ Two-wave parallel execution -- Wave 1: 3 scanner agents (Component Scanner, Feature Mapper, Requirement Linker) analyze the codebase in parallel. Wave 2: 2 writer agents (Tech Registry Writer, Feature Map Writer) consume scanner results and write documentation files. This is a destructive operation that rebuilds the entire `.workflow/codebase/` directory from scratch.
10
10
 
11
11
  **Core workflow**: Prepare Directory -> Decompose Doc Dimensions -> Parallel Generation -> Assemble doc-index.json
12
12
 
@@ -25,11 +25,12 @@ Single-wave parallel execution -- 5 independent doc generator agents each analyz
25
25
  | +-- Generate tasks.csv with 5 doc generator tasks |
26
26
  | +-- All tasks wave 1 (no dependencies) |
27
27
  | |
28
- | Phase 2: Wave Execution (Single Wave) |
29
- | +-- Wave 1: All 5 generators run concurrently |
28
+ | Phase 2: Wave Execution (Two Waves) |
29
+ | +-- Wave 1: 3 scanners run concurrently |
30
30
  | | +-- Component Scanner (TC-* entries) |
31
31
  | | +-- Feature Mapper (FT-* entries) |
32
32
  | | +-- Requirement Linker (REQ-* entries, if specs exist) |
33
+ | +-- Wave 2: 2 writers consume scanner results |
33
34
  | | +-- Tech Registry Writer (tech-registry/*.md) |
34
35
  | | +-- Feature Map Writer (feature-maps/*.md) |
35
36
  | +-- discoveries.ndjson shared (append-only) |
@@ -80,12 +81,12 @@ When `--yes` or `-y`: Auto-confirm rebuild (implies --force), skip all prompts.
80
81
  ### tasks.csv (Master State)
81
82
 
82
83
  ```csv
83
- id,title,description,doc_dimension,output_path,deps,context_from,wave
84
- "1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Return JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols via output_schema. Do NOT write files — orchestrator assembles doc-index.json in Phase 3.","components","<ABS_WORKFLOW>/codebase/doc-index.json#components","","","1"
85
- "2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if <ABS_WORKFLOW>/blueprint/ exists. Return JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase via output_schema. Do NOT write files.","features","<ABS_WORKFLOW>/codebase/doc-index.json#features","","","1"
86
- "3","Requirement Linker","If <ABS_WORKFLOW>/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Return JSON arrays for requirements and architecture_decisions via output_schema. Do NOT write files.","requirements","<ABS_WORKFLOW>/codebase/doc-index.json#requirements","","","1"
87
- "4","Tech Registry Writer","For each component discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Also write <ABS_WORKFLOW>/codebase/tech-registry/_index.md with the component table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","tech-registry","<ABS_WORKFLOW>/codebase/tech-registry/","","","1"
88
- "5","Feature Map Writer","For each feature discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Also write <ABS_WORKFLOW>/codebase/feature-maps/_index.md with the feature table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","feature-maps","<ABS_WORKFLOW>/codebase/feature-maps/","","","1"
84
+ id,title,description,doc_dimension,output_path,deps,context_from,wave,status
85
+ "1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Return JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols via output_schema. Do NOT write files — orchestrator assembles doc-index.json in Phase 3.","components","<ABS_WORKFLOW>/codebase/doc-index.json#components","","","1","pending"
86
+ "2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if <ABS_WORKFLOW>/blueprint/ exists. Return JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase via output_schema. Do NOT write files.","features","<ABS_WORKFLOW>/codebase/doc-index.json#features","","","1","pending"
87
+ "3","Requirement Linker","If <ABS_WORKFLOW>/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Return JSON arrays for requirements and architecture_decisions via output_schema. Do NOT write files.","requirements","<ABS_WORKFLOW>/codebase/doc-index.json#requirements","","","1","pending"
88
+ "4","Tech Registry Writer","For each component discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Also write <ABS_WORKFLOW>/codebase/tech-registry/_index.md with the component table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","tech-registry","<ABS_WORKFLOW>/codebase/tech-registry/","1;2;3","1;2;3","2","pending"
89
+ "5","Feature Map Writer","For each feature discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Also write <ABS_WORKFLOW>/codebase/feature-maps/_index.md with the feature table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","feature-maps","<ABS_WORKFLOW>/codebase/feature-maps/","1;2;3","1;2;3","2","pending"
89
90
  ```
90
91
 
91
92
  **Path resolution (orchestrator MUST do BEFORE writing tasks.csv)**: substitute `<ABS_WORKFLOW>` with the absolute path to the project's `.workflow/` directory (e.g. `D:/maestro2/.workflow`). Agent Write tool requires absolute paths — passing relative `.workflow/...` literals will fail.
@@ -101,7 +102,8 @@ id,title,description,doc_dimension,output_path,deps,context_from,wave
101
102
  | `output_path` | Input | Target output path in .workflow/codebase/ |
102
103
  | `deps` | Input | Empty (all independent) |
103
104
  | `context_from` | Input | Empty (no cross-task context needed) |
104
- | `wave` | Computed | Always 1 (single wave, independent parallel) |
105
+ | `wave` | Computed | 1 (scanners, independent parallel) or 2 (writers, depend on wave 1) |
106
+ | `status` | Lifecycle | Initialized to `pending`, updated to `completed`/`failed` after wave merge |
105
107
 
106
108
  **Output columns** (returned exclusively via `output_schema`, NOT in wave CSV):
107
109
 
@@ -124,7 +126,7 @@ Single wave generates `wave-1.csv`. No `prev_context` needed (all tasks independ
124
126
  3. **Discovery Board is Append-Only**: Generators share findings via NDJSON
125
127
  4. **Partial Results OK**: If 3/5 generators succeed, still assemble available docs
126
128
  5. **Destructive by Design**: This is a full rebuild -- existing codebase/ is cleared
127
- 6. **Single Wave**: All generators are independent, no wave ordering needed
129
+ 6. **Two Waves**: Wave 1 (Scanner/Mapper/Linker, independent parallel), Wave 2 (Writers, depend on wave 1 results via context_from)
128
130
  7. **Cleanup Temp Files**: Remove wave-1.csv after results are merged
129
131
  8. **DO NOT STOP**: Execute until all generators complete or fail
130
132
  9. **Absolute Paths Only**: All paths in `description` and `output_path` MUST be absolute before tasks.csv is written. Orchestrator substitutes `<ABS_WORKFLOW>` placeholder; never let it leak into a spawned agent's prompt.
@@ -182,6 +184,8 @@ Parse `$ARGUMENTS` to extract:
182
184
  Session ID: `{YYYYMMDD}-rebuild-full`
183
185
  Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
184
186
 
187
+ **Continue mode** (`--continue`): Locate existing session by ID or most recent. Read `tasks.csv`, identify pending/failed rows. Resume from next pending wave — do NOT re-run Phase 1 cleanup. If no session found, list available sessions and exit.
188
+
185
189
  ### Phase 1: Setup -> CSV
186
190
 
187
191
  **Objective**: Validate prerequisites, prepare directory, detect source dirs, generate tasks.csv.
@@ -201,11 +205,11 @@ Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
201
205
  6. **Generate tasks.csv**: 5 rows, all wave 1, no dependencies
202
206
  7. **User validation**: Display doc generator breakdown (skip if AUTO_YES)
203
207
 
204
- ### Phase 2: Wave Execution (Single Wave)
208
+ ### Phase 2: Wave Execution (Two Waves)
205
209
 
206
- **Objective**: Run all 5 doc generators concurrently via spawn_agents_on_csv.
210
+ **Objective**: Run scanners (wave 1) then writers (wave 2) via spawn_agents_on_csv.
207
211
 
208
- #### Wave 1: All Generators (Parallel)
212
+ #### Wave 1: Scanners (Parallel)
209
213
 
210
214
  Filter master `tasks.csv` for `wave == 1 AND status == pending` → write `wave-1.csv` (no prev_context needed, all independent).
211
215
 
@@ -232,6 +236,24 @@ spawn_agents_on_csv({
232
236
 
233
237
  Merge `wave-1-results.csv` into master `tasks.csv`: map `result_status` -> master `status`, `result_findings` -> master `findings`, copy `error` as-is. After merge, delete temporary files (`wave-1.csv` and `wave-1-results.csv`).
234
238
 
239
+ #### Wave 2: Writers (Parallel, depends on Wave 1)
240
+
241
+ Filter master `tasks.csv` for `wave == 2 AND status == pending`. Build `prev_context` from wave 1 findings (scanner/mapper/linker results). Write `wave-2.csv` with `prev_context` column.
242
+
243
+ ```javascript
244
+ spawn_agents_on_csv({
245
+ csv_path: `${sessionFolder}/wave-2.csv`,
246
+ id_column: "id",
247
+ instruction: REBUILD_INSTRUCTION,
248
+ max_concurrency: maxConcurrency,
249
+ max_runtime_seconds: 3600,
250
+ output_csv_path: `${sessionFolder}/wave-2-results.csv`,
251
+ output_schema: { /* same as wave 1 */ }
252
+ })
253
+ ```
254
+
255
+ Merge `wave-2-results.csv` into master `tasks.csv`. Delete temporary files.
256
+
235
257
  #### Rebuild Worker Contract (REBUILD_INSTRUCTION)
236
258
 
237
259
  ```
@@ -32,7 +32,7 @@ Verify `.workflow/` exists (E001) and `.workflow/codebase/` exists (E002 -- use
32
32
 
33
33
  ### Step 2: Detect Changes
34
34
 
35
- Resolve baseline: `--since` flag > `state.json.codebase_last_refreshed` > `codebase_last_rebuilt` > 7-day fallback. Run `git diff --name-only --since="{baseline}" HEAD`. If no changes: W001, exit.
35
+ Resolve baseline: `--since` flag > `state.json.codebase_last_refreshed` > `codebase_last_rebuilt` > 7-day fallback. Find the baseline commit via `git log --since="{baseline}" --reverse --format="%H" | head -1`. If no commit found, use `HEAD~1`. Then run `git diff --name-only {baseline_commit}..HEAD`. If no changes: W001, exit.
36
36
 
37
37
  ### Step 3: Map Changes to Docs
38
38
 
@@ -97,11 +97,11 @@ $manage-drift-realign --continue "20260624-drift-realign"
97
97
  ### tasks.csv (Master State)
98
98
 
99
99
  ```csv
100
- id,title,description,scan_scope,output_format,deps,context_from,wave
101
- "1","Roadmap Scanner","Scan .workflow/roadmap.md and .workflow/state.json for drift against code reality. Read timeline.json for git change context. Detect: phantom_phase (P0), stale_progress (P1), milestone_mismatch (P0), outdated_criteria (P1), dependency_ghost (P1), timeline_impossible (P2). For each finding: verify against code/state.json before reporting. Return JSON array of DriftFinding objects via output_schema.","roadmap","json","","","1"
102
- "2","Spec Scanner","Scan .workflow/specs/*.md spec-entry blocks for drift against actual code patterns. Read timeline.json hot_paths to focus on high-change areas. Detect: convention_violation (P0), dead_import_pattern (P1), architecture_breach (P0), stale_dependency (P1), naming_drift (P2), test_convention_gap (P2). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","spec","json","","","1"
103
- "3","Codebase Scanner","Scan .workflow/codebase/*.md and doc-index.json for drift against current code structure. Read timeline.json for git changes. Detect: architecture_outdated (P0), feature_missing (P1), tech_stack_changed (P0), concern_drift (P1), doc_index_stale (P0). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","codebase","json","","","1"
104
- "4","Artifact Scanner","Scan .workflow/issues/issues.jsonl, .workflow/knowhow/*.md, .workflow/project.md, and state.json accumulated_context for drift. Read timeline.json for git context. Detect: issue_code_ref_dead (P1), issue_stale_open (P1), knowhow_code_ref_dead (P1), orphan_session (P2), project_tech_drift (P0), project_req_drift (P1), accumulated_stale (P1), deferred_resolved (P2). Return JSON array of DriftFinding objects via output_schema.","artifact","json","","","1"
100
+ id,title,description,scan_scope,output_format,deps,context_from,wave,status
101
+ "1","Roadmap Scanner","Scan .workflow/roadmap.md and .workflow/state.json for drift against code reality. Read timeline.json for git change context. Detect: phantom_phase (P0), stale_progress (P1), milestone_mismatch (P0), outdated_criteria (P1), dependency_ghost (P1), timeline_impossible (P2). For each finding: verify against code/state.json before reporting. Return JSON array of DriftFinding objects via output_schema.","roadmap","json","","","1","pending"
102
+ "2","Spec Scanner","Scan .workflow/specs/*.md spec-entry blocks for drift against actual code patterns. Read timeline.json hot_paths to focus on high-change areas. Detect: convention_violation (P0), dead_import_pattern (P1), architecture_breach (P0), stale_dependency (P1), naming_drift (P2), test_convention_gap (P2). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","spec","json","","","1","pending"
103
+ "3","Codebase Scanner","Scan .workflow/codebase/*.md and doc-index.json for drift against current code structure. Read timeline.json for git changes. Detect: architecture_outdated (P0), feature_missing (P1), tech_stack_changed (P0), concern_drift (P1), doc_index_stale (P0). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","codebase","json","","","1","pending"
104
+ "4","Artifact Scanner","Scan .workflow/issues/issues.jsonl, .workflow/knowhow/*.md, .workflow/project.md, and state.json accumulated_context for drift. Read timeline.json for git context. Detect: issue_code_ref_dead (P1), issue_stale_open (P1), knowhow_code_ref_dead (P1), orphan_session (P2), project_tech_drift (P0), project_req_drift (P1), accumulated_stale (P1), deferred_resolved (P2). Return JSON array of DriftFinding objects via output_schema.","artifact","json","","","1","pending"
105
105
  ```
106
106
 
107
107
  **Substitutions (orchestrator MUST do BEFORE writing tasks.csv)**:
@@ -119,6 +119,7 @@ id,title,description,scan_scope,output_format,deps,context_from,wave
119
119
  | `deps` | Empty (all independent) |
120
120
  | `context_from` | Empty (all read timeline.json directly) |
121
121
  | `wave` | Always 1 (single wave) |
122
+ | `status` | `pending` / `running` / `completed` / `failed` |
122
123
 
123
124
  **Output columns** (returned exclusively via `output_schema`):
124
125
 
@@ -309,8 +310,8 @@ maestro spec conflict list
309
310
  For spec entries with existing conflict-markers that also appear in scanner findings: merge and elevate to P0.
310
311
 
311
312
  **Step 3.3: Triage**
312
- - If `--report` → skip to Phase 4 report
313
- - If `--dry-run` → display all findings with suggested actions, skip Phase 4 apply
313
+ - If `--report` → generate report output only (Phase 4 Step 4.3), skip triage and all file mutations (no backups, no action application, no state.json update)
314
+ - If `--dry-run` → display all findings with suggested actions, skip all file mutations in Phase 4 (no backups, no action application, no state.json update, no drift-log.jsonl writes)
314
315
  - If `--auto-archive` → auto-apply each finding's `suggested_action` for P1/P2; only P0 gets interactive review
315
316
  - Otherwise → interactive triage per finding using `request_user_input`:
316
317
 
@@ -340,13 +341,15 @@ Export master `tasks.csv` as `results.csv`.
340
341
 
341
342
  ### Phase 4: Apply + Report
342
343
 
343
- **Step 4.1: Backup**
344
+ > **Write boundary**: If `--report`, skip directly to Step 4.3 (report generation only). If `--dry-run`, skip Steps 4.1 and 4.2 entirely — no backup, no file mutations, no state.json update. Only Step 4.3 (report) and Step 4.4 (context.md) execute.
345
+
346
+ **Step 4.1: Backup** (skipped by --report and --dry-run)
344
347
  ```bash
345
348
  mkdir -p .workflow/.trash/drift-realign-{timestamp}/
346
349
  ```
347
350
  Copy all affected files + state.json to backup. If backup fails → abort (E005).
348
351
 
349
- **Step 4.2: Apply actions**
352
+ **Step 4.2: Apply actions** (skipped by --report and --dry-run)
350
353
 
351
354
  | Action | Implementation |
352
355
  |--------|---------------|
@@ -354,16 +357,16 @@ Copy all affected files + state.json to backup. If backup fails → abort (E005)
354
357
  | skip | Write drift-log.jsonl entry (action=skipped) |
355
358
  | update | Prepend `<!-- DRIFT-TODO: {hint} (DFT-{id}, {date}) -->` to target file |
356
359
  | archive | Move file to `.trash/{timestamp}/`, update state.json refs |
357
- | rebuild | Collect targets; after all other actions: invoke $quality-sync --full |
360
+ | rebuild | Collect targets; after all other actions: suggest `$quality-sync --full` with target list. Require explicit user confirmation before invoking (use `request_user_input`). If declined, log as `action=rebuild_deferred` in drift-log.jsonl |
358
361
 
359
- After rebuild: if sync reports major structural changes → suggest $manage-codebase-rebuild.
362
+ After rebuild (if confirmed and executed): if sync reports major structural changes → suggest $manage-codebase-rebuild.
360
363
 
361
364
  Conflict-marker cleanup: for update/archive targets with existing conflict-markers:
362
365
  ```bash
363
366
  maestro spec conflict clear <file> <line>
364
367
  ```
365
368
 
366
- Update state.json: `last_drift_realign = now` (atomic: backup → write → verify).
369
+ Update state.json: `last_drift_realign = now` (atomic: backup → write → verify). Skipped when `--report` or `--dry-run` is active.
367
370
 
368
371
  **Step 4.3: Generate report**
369
372
 
@@ -64,7 +64,7 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1–8 (standard mode) or Stage 9
64
64
  - Component-level pitfalls → `learning` category
65
65
  - Quality enforcement rules → `quality` category
66
66
  - Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
67
- - Spec: `maestro wiki append spec-<file> --body "<content>" --keywords "<kws>"` (unified write path) or `$spec-add "<category> <content>"`
67
+ - Spec: `$spec-add "<category> <content>"` (single source of truth — always use spec-add for spec routing; do NOT use `maestro wiki append` for spec entries)
68
68
  - Issue: append to `issues.jsonl` matching canonical schema, with `source: "harvest"` field (distinguishes from `manage-issue-discover`, which uses `source: "discover"` — required for cross-skill dedup when both write concurrently)
69
69
 
70
70
  **Next steps:** `$manage-wiki health`, `maestro search --type note`, `$wiki-connect --fix`, `$wiki-digest`, `$manage-issue list --source harvest`, `$manage-knowledge-audit --scope spec` (when specs extracted, check for conflicts)