maestro-flow 0.5.34 → 0.5.36

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 (325) hide show
  1. package/.agents/agents/cli-explore-agent.md +71 -68
  2. package/.agents/agents/workflow-analyzer.md +1 -0
  3. package/.agents/agents/workflow-collab-planner.md +1 -0
  4. package/.agents/agents/workflow-debugger.md +1 -0
  5. package/.agents/agents/workflow-executor.md +1 -0
  6. package/.agents/agents/workflow-planner.md +2 -0
  7. package/.agents/skills/domain-add/SKILL.md +71 -0
  8. package/.agents/skills/maestro/SKILL.md +7 -6
  9. package/.agents/skills/maestro-amend/SKILL.md +0 -2
  10. package/.agents/skills/maestro-analyze/SKILL.md +9 -0
  11. package/.agents/skills/maestro-brainstorm/SKILL.md +10 -1
  12. package/.agents/skills/maestro-collab/SKILL.md +14 -1
  13. package/.agents/skills/maestro-help/SKILL.md +1 -1
  14. package/.agents/skills/maestro-help/index/catalog.json +0 -1
  15. package/.agents/skills/maestro-help/phases/01-parse-intent.md +1 -1
  16. package/.agents/skills/maestro-next/SKILL.md +15 -4
  17. package/.agents/skills/maestro-overlay/SKILL.md +4 -3
  18. package/.agents/skills/maestro-plan/SKILL.md +15 -4
  19. package/.agents/skills/maestro-ralph/SKILL.md +135 -31
  20. package/.agents/skills/maestro-ralph-execute/SKILL.md +51 -10
  21. package/.agents/skills/maestro-tools-register/SKILL.md +0 -6
  22. package/.agents/skills/maestro-ui-codify/SKILL.md +0 -2
  23. package/.agents/skills/manage-kg-extractors/SKILL.md +0 -2
  24. package/.agents/skills/quality-test/SKILL.md +25 -1
  25. package/.agents/skills/spec-load/SKILL.md +0 -1
  26. package/.agents/skills/spec-setup/SKILL.md +0 -1
  27. package/.agents/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
  28. package/.agents/skills/team-quality-assurance/roles/scout/role.md +15 -11
  29. package/.agents/skills/team-tech-debt/roles/scanner/role.md +1 -1
  30. package/.agents/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
  31. package/.agy/agents/cli-explore-agent.md +71 -68
  32. package/.agy/agents/workflow-analyzer.md +1 -0
  33. package/.agy/agents/workflow-collab-planner.md +1 -0
  34. package/.agy/agents/workflow-debugger.md +1 -0
  35. package/.agy/agents/workflow-executor.md +1 -0
  36. package/.agy/agents/workflow-planner.md +2 -0
  37. package/.agy/skills/domain-add/SKILL.md +68 -0
  38. package/.agy/skills/maestro/SKILL.md +7 -6
  39. package/.agy/skills/maestro-amend/SKILL.md +0 -2
  40. package/.agy/skills/maestro-analyze/SKILL.md +9 -0
  41. package/.agy/skills/maestro-brainstorm/SKILL.md +10 -1
  42. package/.agy/skills/maestro-collab/SKILL.md +14 -1
  43. package/.agy/skills/maestro-help/SKILL.md +1 -1
  44. package/.agy/skills/maestro-help/index/catalog.json +0 -1
  45. package/.agy/skills/maestro-help/phases/01-parse-intent.md +1 -1
  46. package/.agy/skills/maestro-next/SKILL.md +15 -4
  47. package/.agy/skills/maestro-overlay/SKILL.md +4 -3
  48. package/.agy/skills/maestro-plan/SKILL.md +15 -4
  49. package/.agy/skills/maestro-ralph/SKILL.md +135 -31
  50. package/.agy/skills/maestro-ralph-execute/SKILL.md +51 -10
  51. package/.agy/skills/maestro-tools-register/SKILL.md +0 -6
  52. package/.agy/skills/maestro-ui-codify/SKILL.md +0 -2
  53. package/.agy/skills/manage-kg-extractors/SKILL.md +0 -2
  54. package/.agy/skills/quality-test/SKILL.md +25 -1
  55. package/.agy/skills/spec-load/SKILL.md +0 -1
  56. package/.agy/skills/spec-setup/SKILL.md +0 -1
  57. package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
  58. package/.agy/skills/team-quality-assurance/roles/scout/role.md +15 -11
  59. package/.agy/skills/team-tech-debt/roles/scanner/role.md +1 -1
  60. package/.agy/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
  61. package/.claude/agents/cli-explore-agent.md +71 -68
  62. package/.claude/agents/workflow-analyzer.md +1 -0
  63. package/.claude/agents/workflow-collab-planner.md +1 -0
  64. package/.claude/agents/workflow-debugger.md +1 -0
  65. package/.claude/agents/workflow-executor.md +1 -0
  66. package/.claude/agents/workflow-planner.md +2 -0
  67. package/.claude/commands/domain-add.md +69 -0
  68. package/.claude/commands/maestro-amend.md +0 -2
  69. package/.claude/commands/maestro-analyze.md +9 -0
  70. package/.claude/commands/maestro-brainstorm.md +10 -1
  71. package/.claude/commands/maestro-collab.md +14 -1
  72. package/.claude/commands/maestro-next.md +15 -4
  73. package/.claude/commands/maestro-overlay.md +4 -3
  74. package/.claude/commands/maestro-plan.md +15 -4
  75. package/.claude/commands/maestro-ralph-execute.md +51 -10
  76. package/.claude/commands/maestro-ralph.md +135 -31
  77. package/.claude/commands/maestro-tools-register.md +0 -6
  78. package/.claude/commands/maestro-ui-codify.md +0 -2
  79. package/.claude/commands/maestro.md +7 -6
  80. package/.claude/commands/manage-kg-extractors.md +0 -2
  81. package/.claude/commands/quality-test.md +25 -1
  82. package/.claude/commands/spec-load.md +0 -1
  83. package/.claude/commands/spec-setup.md +0 -1
  84. package/.claude/skills/maestro-help/SKILL.md +1 -1
  85. package/.claude/skills/maestro-help/index/catalog.json +0 -1
  86. package/.claude/skills/maestro-help/phases/01-parse-intent.md +1 -1
  87. package/.claude/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
  88. package/.claude/skills/team-quality-assurance/roles/scout/role.md +15 -11
  89. package/.claude/skills/team-tech-debt/roles/scanner/role.md +1 -1
  90. package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
  91. package/.codex/skills/domain-add/SKILL.md +79 -0
  92. package/.codex/skills/domain-discover/SKILL.md +43 -0
  93. package/.codex/skills/domain-list/SKILL.md +38 -0
  94. package/.codex/skills/learn-follow/SKILL.md +0 -3
  95. package/.codex/skills/learn-investigate/SKILL.md +0 -3
  96. package/.codex/skills/learn-retro/SKILL.md +0 -2
  97. package/.codex/skills/maestro/SKILL.md +34 -13
  98. package/.codex/skills/maestro-amend/SKILL.md +0 -2
  99. package/.codex/skills/maestro-analyze/SKILL.md +36 -6
  100. package/.codex/skills/maestro-blueprint/SKILL.md +0 -4
  101. package/.codex/skills/maestro-brainstorm/SKILL.md +46 -6
  102. package/.codex/skills/maestro-collab/SKILL.md +14 -1
  103. package/.codex/skills/maestro-companion/SKILL.md +0 -2
  104. package/.codex/skills/maestro-execute/SKILL.md +25 -3
  105. package/.codex/skills/maestro-fork/SKILL.md +0 -2
  106. package/.codex/skills/maestro-grill/SKILL.md +9 -1
  107. package/.codex/skills/maestro-next/SKILL.md +12 -5
  108. package/.codex/skills/maestro-plan/SKILL.md +43 -5
  109. package/.codex/skills/maestro-ralph/SKILL.md +10 -3
  110. package/.codex/skills/maestro-ralph-execute/SKILL.md +51 -10
  111. package/.codex/skills/maestro-roadmap/SKILL.md +30 -3
  112. package/.codex/skills/manage-wiki/SKILL.md +0 -2
  113. package/.codex/skills/odyssey-debug/SKILL.md +0 -2
  114. package/.codex/skills/odyssey-improve/SKILL.md +0 -6
  115. package/.codex/skills/odyssey-review-test-fix/SKILL.md +0 -3
  116. package/.codex/skills/odyssey-ui/SKILL.md +0 -3
  117. package/.codex/skills/quality-review/SKILL.md +9 -0
  118. package/.codex/skills/spec-setup/SKILL.md +0 -2
  119. package/.codex/skills/team-coordinate/SKILL.md +0 -3
  120. package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +0 -2
  121. package/README.md +28 -5
  122. package/README.zh-CN.md +28 -5
  123. package/chains/_intent-map.json +36 -0
  124. package/chains/blueprint-driven.json +49 -0
  125. package/chains/grill-driven.json +51 -0
  126. package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js +4 -0
  127. package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js.map +1 -1
  128. package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.d.ts +6 -0
  129. package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js +36 -0
  130. package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js.map +1 -0
  131. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.d.ts +1 -1
  132. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  133. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +82 -0
  134. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +444 -0
  135. package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -0
  136. package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +47 -1
  137. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +426 -19
  138. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  139. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +16 -0
  140. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  141. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +11 -0
  142. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +492 -1
  143. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
  144. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +18 -0
  145. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +192 -9
  146. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  147. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +42 -0
  148. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
  150. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  151. package/dashboard/dist-server/shared/agent-types.d.ts +1 -1
  152. package/dashboard/dist-server/src/commands/hooks.d.ts +3 -0
  153. package/dashboard/dist-server/src/commands/hooks.js +60 -9
  154. package/dashboard/dist-server/src/commands/hooks.js.map +1 -1
  155. package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js +1 -1
  156. package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
  157. package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
  158. package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
  159. package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
  160. package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
  161. package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js +2 -6
  162. package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js.map +1 -1
  163. package/dashboard/dist-server/src/hooks/session-context.js +37 -1
  164. package/dashboard/dist-server/src/hooks/session-context.js.map +1 -1
  165. package/dashboard/dist-server/src/search/daemon.d.ts +42 -0
  166. package/dashboard/dist-server/src/search/daemon.js +180 -0
  167. package/dashboard/dist-server/src/search/daemon.js.map +1 -0
  168. package/dashboard/dist-server/src/tools/domain-loader.d.ts +4 -1
  169. package/dashboard/dist-server/src/tools/domain-loader.js +56 -25
  170. package/dashboard/dist-server/src/tools/domain-loader.js.map +1 -1
  171. package/dashboard/dist-server/src/tools/domain-schema.d.ts +1 -1
  172. package/dashboard/dist-server/src/tools/domain-schema.js +1 -1
  173. package/dist/shared/agent-types.d.ts +1 -1
  174. package/dist/shared/agent-types.d.ts.map +1 -1
  175. package/dist/src/agents/api-explore/agent-loop.d.ts +14 -0
  176. package/dist/src/agents/api-explore/agent-loop.d.ts.map +1 -0
  177. package/dist/src/agents/api-explore/agent-loop.js +86 -0
  178. package/dist/src/agents/api-explore/agent-loop.js.map +1 -0
  179. package/dist/src/agents/api-explore/config.d.ts +42 -0
  180. package/dist/src/agents/api-explore/config.d.ts.map +1 -0
  181. package/dist/src/agents/api-explore/config.js +99 -0
  182. package/dist/src/agents/api-explore/config.js.map +1 -0
  183. package/dist/src/agents/api-explore/index.d.ts +2 -0
  184. package/dist/src/agents/api-explore/index.d.ts.map +1 -0
  185. package/dist/src/agents/api-explore/index.js +102 -0
  186. package/dist/src/agents/api-explore/index.js.map +1 -0
  187. package/dist/src/agents/api-explore/llm.d.ts +28 -0
  188. package/dist/src/agents/api-explore/llm.d.ts.map +1 -0
  189. package/dist/src/agents/api-explore/llm.js +48 -0
  190. package/dist/src/agents/api-explore/llm.js.map +1 -0
  191. package/dist/src/agents/api-explore/prompt-parser.d.ts +23 -0
  192. package/dist/src/agents/api-explore/prompt-parser.d.ts.map +1 -0
  193. package/dist/src/agents/api-explore/prompt-parser.js +73 -0
  194. package/dist/src/agents/api-explore/prompt-parser.js.map +1 -0
  195. package/dist/src/agents/api-explore/runner.d.ts +65 -0
  196. package/dist/src/agents/api-explore/runner.d.ts.map +1 -0
  197. package/dist/src/agents/api-explore/runner.js +196 -0
  198. package/dist/src/agents/api-explore/runner.js.map +1 -0
  199. package/dist/src/agents/api-explore/session.d.ts +23 -0
  200. package/dist/src/agents/api-explore/session.d.ts.map +1 -0
  201. package/dist/src/agents/api-explore/session.js +57 -0
  202. package/dist/src/agents/api-explore/session.js.map +1 -0
  203. package/dist/src/agents/api-explore/stream-json-emitter.d.ts +10 -0
  204. package/dist/src/agents/api-explore/stream-json-emitter.d.ts.map +1 -0
  205. package/dist/src/agents/api-explore/stream-json-emitter.js +19 -0
  206. package/dist/src/agents/api-explore/stream-json-emitter.js.map +1 -0
  207. package/dist/src/agents/api-explore/system-prompt.d.ts +2 -0
  208. package/dist/src/agents/api-explore/system-prompt.d.ts.map +1 -0
  209. package/dist/src/agents/api-explore/system-prompt.js +31 -0
  210. package/dist/src/agents/api-explore/system-prompt.js.map +1 -0
  211. package/dist/src/agents/api-explore/tools.d.ts +11 -0
  212. package/dist/src/agents/api-explore/tools.d.ts.map +1 -0
  213. package/dist/src/agents/api-explore/tools.js +168 -0
  214. package/dist/src/agents/api-explore/tools.js.map +1 -0
  215. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  216. package/dist/src/agents/cli-agent-runner.js +3 -0
  217. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  218. package/dist/src/cli.js +4 -0
  219. package/dist/src/cli.js.map +1 -1
  220. package/dist/src/commands/domain.d.ts.map +1 -1
  221. package/dist/src/commands/domain.js +5 -4
  222. package/dist/src/commands/domain.js.map +1 -1
  223. package/dist/src/commands/explore.d.ts +7 -0
  224. package/dist/src/commands/explore.d.ts.map +1 -0
  225. package/dist/src/commands/explore.js +201 -0
  226. package/dist/src/commands/explore.js.map +1 -0
  227. package/dist/src/commands/hooks.d.ts +3 -0
  228. package/dist/src/commands/hooks.d.ts.map +1 -1
  229. package/dist/src/commands/hooks.js +60 -9
  230. package/dist/src/commands/hooks.js.map +1 -1
  231. package/dist/src/commands/install.d.ts.map +1 -1
  232. package/dist/src/commands/install.js +42 -9
  233. package/dist/src/commands/install.js.map +1 -1
  234. package/dist/src/commands/search.d.ts +26 -4
  235. package/dist/src/commands/search.d.ts.map +1 -1
  236. package/dist/src/commands/search.js +359 -93
  237. package/dist/src/commands/search.js.map +1 -1
  238. package/dist/src/commands/update.d.ts.map +1 -1
  239. package/dist/src/commands/update.js +37 -21
  240. package/dist/src/commands/update.js.map +1 -1
  241. package/dist/src/commands/workspace.d.ts.map +1 -1
  242. package/dist/src/commands/workspace.js +9 -3
  243. package/dist/src/commands/workspace.js.map +1 -1
  244. package/dist/src/config/cli-tools-defaults.json +2 -1
  245. package/dist/src/core/install-executor.d.ts.map +1 -1
  246. package/dist/src/core/install-executor.js +6 -3
  247. package/dist/src/core/install-executor.js.map +1 -1
  248. package/dist/src/graph/kg/extraction/code/code-extractor.js +1 -1
  249. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
  250. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -1
  251. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
  252. package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
  253. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts.map +1 -1
  254. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
  255. package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
  256. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
  257. package/dist/src/graph/kg/extraction/orchestrator.js +2 -6
  258. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
  259. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
  260. package/dist/src/graph/kg/surface/cli.js +5 -2
  261. package/dist/src/graph/kg/surface/cli.js.map +1 -1
  262. package/dist/src/hooks/session-context.d.ts.map +1 -1
  263. package/dist/src/hooks/session-context.js +37 -1
  264. package/dist/src/hooks/session-context.js.map +1 -1
  265. package/dist/src/ralph/cmd-next.d.ts.map +1 -1
  266. package/dist/src/ralph/cmd-next.js +66 -4
  267. package/dist/src/ralph/cmd-next.js.map +1 -1
  268. package/dist/src/ralph/status-schema.d.ts +1 -0
  269. package/dist/src/ralph/status-schema.d.ts.map +1 -1
  270. package/dist/src/search/daemon.d.ts +43 -0
  271. package/dist/src/search/daemon.d.ts.map +1 -0
  272. package/dist/src/search/daemon.js +180 -0
  273. package/dist/src/search/daemon.js.map +1 -0
  274. package/dist/src/tools/__tests__/domain-search-debug.js +3 -1
  275. package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -1
  276. package/dist/src/tools/domain-loader.d.ts +4 -1
  277. package/dist/src/tools/domain-loader.d.ts.map +1 -1
  278. package/dist/src/tools/domain-loader.js +56 -25
  279. package/dist/src/tools/domain-loader.js.map +1 -1
  280. package/dist/src/tools/domain-schema.d.ts +1 -1
  281. package/dist/src/tools/domain-schema.js +1 -1
  282. package/dist/src/utils/update-notices.js +12 -0
  283. package/dist/src/utils/update-notices.js.map +1 -1
  284. package/package.json +5 -1
  285. package/shared/agent-types.ts +1 -1
  286. package/templates/search-tools.md +22 -6
  287. package/workflows/agy-instructions.md +0 -4
  288. package/workflows/analyze.md +2 -2
  289. package/workflows/boundary-grill.md +50 -0
  290. package/workflows/brainstorm.md +6 -5
  291. package/workflows/claude-instructions.md +29 -2
  292. package/workflows/codebase-rebuild.md +0 -1
  293. package/workflows/codex-instructions.md +97 -14
  294. package/workflows/command-authoring.md +1 -1
  295. package/workflows/debug.md +0 -4
  296. package/workflows/domain-add.md +115 -0
  297. package/workflows/execute.md +7 -0
  298. package/workflows/explore-usage.md +128 -0
  299. package/workflows/finish-work.md +2 -6
  300. package/workflows/fork.md +0 -4
  301. package/workflows/grill.md +14 -1
  302. package/workflows/harvest.md +0 -3
  303. package/workflows/impeccable/audit.md +0 -2
  304. package/workflows/impeccable/codex.md +0 -4
  305. package/workflows/init.md +9 -0
  306. package/workflows/interview-mechanics.md +3 -2
  307. package/workflows/issue-analyze.md +0 -5
  308. package/workflows/issue-gaps-analyze.codex.md +0 -6
  309. package/workflows/knowledge-audit.md +0 -4
  310. package/workflows/learn.md +0 -6
  311. package/workflows/maestro.codex.md +0 -4
  312. package/workflows/maestro.md +31 -18
  313. package/workflows/merge.md +0 -4
  314. package/workflows/milestone-complete.md +0 -4
  315. package/workflows/overlays.md +0 -10
  316. package/workflows/plan.md +2 -3
  317. package/workflows/roadmap-common.md +0 -4
  318. package/workflows/tdd.md +0 -2
  319. package/workflows/tools-spec.md +1 -7
  320. package/workflows/ui-codify-extract.md +0 -2
  321. package/workflows/ui-codify-package.md +0 -2
  322. package/.agents/skills/maestro-ralph-beta/SKILL.md +0 -882
  323. package/.agy/skills/maestro-ralph-beta/SKILL.md +0 -878
  324. package/.claude/commands/maestro-ralph-beta.md +0 -880
  325. package/.codex/skills/maestro-ralph-beta/SKILL.md +0 -883
@@ -22,7 +22,8 @@ $ARGUMENTS — intent text, flags, or keywords.
22
22
 
23
23
  **Parse:**
24
24
  ```
25
- -y flag → auto_confirm = true
25
+ -y flag → auto_confirm = true # 唯一来源:用户显式传入;ralph 不内部推断(invariant 14)
26
+ --roadmap → wants_roadmap = true (强制多发布 roadmap 路径;roadmap 默认 opt-in)
26
27
  .md/.txt path → input_doc (supplementary context only, NEVER substitutes lifecycle stages)
27
28
  Remaining → intent
28
29
  ```
@@ -47,6 +48,9 @@ Remaining → intent
47
48
  11. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` 按 unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
48
49
  12. **Invariant violation = BLOCK** — 违反上述任一 invariant 即阻断当前操作。不得以 "效率" 或 "意图明确" 为由绕过。特别是 invariant 1(ralph 不执行 step)和 invariant 6(completion_confirmed 由 CLI 写入)不可隐性违反。
49
50
  13. **Delegate fallback 必须标记** — A_DELEGATE_EVALUATE 解析 verdict 失败时 fallback 为 "fix",但 MUST 在 decisions.ndjson 记录 `"parse_failed": true, "confidence_score": 0`,后续 step 继承 LOW CONFIDENCE 标记。
51
+ 14. **auto_confirm 单一来源** — `auto_confirm` 仅由用户 `-y` 标志设定;ralph 不得内部推断。`session.auto_mode` 仅反映用户输入。
52
+ 15. **分解契约单一所有者** — `boundary_contract` / `task_decomposition` 由 session 创建者拥有(`source=="ralph"` → `decomposition_owner="ralph"`;`source=="maestro"` → `"maestro"`)。contract 已存在时,后续 S_DECOMPOSE MUST 跳过 AskUserQuestion,仅做 shape 校验 + 缺省补齐;goal-audit 只更新 `task_decomposition[*].status/completion_confirmed/completed_at`,禁止改 `goal/done_when/boundary`。
53
+ 16. **控制权优先级(范式治理)** — FSM 独占 session 生命周期 + step 排序 + retry/fix/escalate + cross-step decision 节点;Pipeline 命令只拥有自身 artifact GATE(GATE 失败 → `maestro ralph complete <idx> --status BLOCKED|NEEDS_RETRY`,自身 GATE 全过 → DONE);Router 命令不得出现在 FSM step 内。
50
54
  </invariants>
51
55
 
52
56
  <state_machine>
@@ -56,7 +60,7 @@ S_PARSE_ROUTE — 解析参数、路由入口 PERSIST: —
56
60
  S_STATUS — 显示 session 进度 PERSIST: —
57
61
  S_CONTINUE — 恢复执行 PERSIST: —
58
62
  S_RESOLVE_PHASE — 解析 phase + phase_is_new + D-007 milestone PERSIST: session.phase, session.phase_is_new, session.milestone
59
- S_INFER — 基于已解析 phase 推断 lifecycle_position PERSIST: session.lifecycle_position
63
+ S_INFER — 基于已解析 phase 推断 lifecycle_position PERSIST: session.lifecycle_position, session.wants_roadmap
60
64
  S_RESOLVE_SCOPE — 读 macro analyze conclusions.scope_verdict PERSIST: session.scope_verdict, session.analyze_macro_id
61
65
  S_QUALITY_MODE — 决定质量管线模式 PERSIST: session.quality_mode
62
66
  S_PLANNING_MODE — 决定统一/独立规划模式 PERSIST: session.planning_mode
@@ -128,7 +132,7 @@ S_DISPATCH:
128
132
  → END DO: Skill({ skill: "maestro-ralph-execute" })
129
133
 
130
134
  S_DECISION_EVAL: (decision 节点 == `step.decision` 非空,下述 gate 名取自该字段)
131
- → S_APPLY_VERDICT WHEN: quality-gate (post-execute, post-business-test, post-review, post-test)
135
+ → S_APPLY_VERDICT WHEN: quality-gate (post-execute, post-business-test, post-review, post-test, post-frontend-verify)
132
136
  DO: A_DELEGATE_EVALUATE
133
137
  → S_APPLY_VERDICT WHEN: goal-gate (post-goal-audit)
134
138
  DO: A_GOAL_AUDIT_EVALUATE
@@ -136,11 +140,14 @@ S_DECISION_EVAL: (decision 节点 == `step.decision` 非空,下述 gate 名取
136
140
  DO: A_SCOPE_EVALUATE
137
141
  → S_APPLY_VERDICT WHEN: structural (post-milestone, post-debug-escalate)
138
142
  DO: A_STRUCTURAL_EVALUATE
143
+ → S_APPLY_VERDICT WHEN: reground-gate (post-reground)
144
+ DO: A_REGROUND_EVALUATE
139
145
 
140
146
  S_APPLY_VERDICT:
141
147
  → S_DISPATCH WHEN: verdict == "proceed" DO: A_APPLY_PROCEED
142
- → S_DISPATCH WHEN: post-goal-audit + unmet sub-goals DO: A_APPLY_GOAL_FIX
143
- → S_DISPATCH WHEN: post-goal-audit + all sub-goals met DO: A_APPLY_GOAL_DONE
148
+ → S_DISPATCH WHEN: post-goal-audit + has_unmet DO: A_APPLY_GOAL_FIX
149
+ → S_DISPATCH WHEN: post-goal-audit + all_met + INTENT_ALIGNED=true DO: A_APPLY_GOAL_DONE
150
+ → END WHEN: post-goal-audit + all_met + INTENT_ALIGNED=false DO: A_REGROUND_HALT(尾部漂移熔断)
144
151
  → S_DISPATCH WHEN: post-analyze-scope DO: A_APPLY_SCOPE_VERDICT
145
152
  → S_DISPATCH WHEN: verdict == "fix" DO: A_APPLY_FIX
146
153
  → S_DISPATCH WHEN: verdict == "escalate" DO: A_APPLY_ESCALATE
@@ -148,11 +155,15 @@ S_APPLY_VERDICT:
148
155
  → END WHEN: post-milestone + standard + no next milestone DO: mark completed
149
156
  → END WHEN: post-milestone + adhoc DO: mark completed (adhoc self-contained)
150
157
  → END WHEN: post-debug-escalate (always STOP) DO: A_PAUSE_ESCALATE
158
+ → END WHEN: post-reground + drifted + confidence_score >= 60 DO: A_REGROUND_HALT
159
+ → S_DISPATCH WHEN: post-reground + aligned DO: A_APPLY_PROCEED
160
+ → S_DISPATCH WHEN: post-reground + drifted + confidence_score < 60 DO: A_APPLY_PROCEED (标 LOW CONFIDENCE)
151
161
  GUARD: retry_count >= max_retries → force escalate
152
162
  GUARD: confidence_score < 60 AND proceed → override to fix
153
163
  GUARD: confidence_score > 95 AND fix AND retry > 0 → suggest proceed
154
164
  GUARD: auto_confirm → skip user prompt, apply adjusted verdict
155
165
  GUARD: not auto_confirm → AskUserQuestion with override options
166
+ GUARD: post-reground + drifted + confidence_score >= 60 → A_REGROUND_HALT(漂移熔断为安全门,auto_confirm 不跳过)
156
167
 
157
168
  S_FALLBACK:
158
169
  → S_PARSE_ROUTE WHEN: user provides input DO: AskUserQuestion
@@ -210,11 +221,19 @@ resolve_milestone(phase_number):
210
221
 
211
222
  | Pattern | Position |
212
223
  |---------|----------|
213
- | 压力测试 / 拷问 / 验证假设 / grill / stress-test | `grill`(**auto_confirm=true 时跳过,直接 `brainstorm`**) |
224
+ | 压力测试 / 拷问 / 验证假设 / grill / stress-test | `grill`(**auto_confirm=true 时透传 `-y`,grill 以 Auto mode 代码代答,不跳过**) |
214
225
  | brainstorm / 头脑风暴 / 探索 / ideate / 设计思路 | `brainstorm` |
215
226
  | blueprint / 规格 / 正式文档 / spec-generate / 7-phase | `blueprint` |
216
227
  | broad/medium intent 无数字 phase (重构/全面/重写/迁移/新功能 X) | `analyze-macro` |
217
228
 
229
+ **Roadmap opt-in detection** (设 `session.wants_roadmap`,缺省 `false`):
230
+ ```
231
+ wants_roadmap = (--roadmap flag)
232
+ OR (intent 含多发布信号: 多发布|多版本|分阶段交付|按里程碑发布|v1.*v2|multi-release|roadmap)
233
+ OR (.workflow/roadmap.md 已存在) ← 向后兼容:既有 roadmap 项目行为不变
234
+ ```
235
+ 默认 `false` → large 项目走单一多波次 `plan --from analyze`,不引入 roadmap 横切层;roadmap 仅多发布场景 opt-in。
236
+
218
237
  **Bootstrap detection:**
219
238
 
220
239
  | Condition | Position |
@@ -229,7 +248,7 @@ resolve_milestone(phase_number):
229
248
  | Condition | Position |
230
249
  |-----------|----------|
231
250
  | `phase_is_new == true` (新 phase) | `analyze` |
232
- | no milestones AND no roadmap.md AND has analyze macro artifact | `roadmap` |
251
+ | no milestones AND no roadmap.md AND has analyze macro artifact | `roadmap` if `wants_roadmap` else `plan` (--from analyze) |
233
252
  | no milestones AND no roadmap.md AND no analyze artifact | `analyze-macro` |
234
253
  | `phase == null` (grill/brainstorm/blueprint/init/roadmap/analyze-macro override 已定) | n/a |
235
254
  | phase 已存在 + 无任何 artifact | `analyze` |
@@ -250,9 +269,9 @@ resolve_milestone(phase_number):
250
269
 
251
270
  | scope_verdict | 链路 |
252
271
  |---------------|------|
253
- | `large` | analyze-macro → roadmap → analyze → plan → execute → ... |
254
- | `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase |
255
- | `unknown` | 默认走 large 路径,post-analyze-scope 决策节点再纠正 |
272
+ | `large` + `wants_roadmap` | analyze-macro → roadmap → analyze → plan → execute → ...(多发布 opt-in) |
273
+ | `large`(默认)/ `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase;单一多波次计划) |
274
+ | `unknown` | 默认走 standalone(plan --from analyze)路径,post-analyze-scope 决策节点再纠正 |
256
275
 
257
276
  **Refine from post-execute results:**
258
277
 
@@ -264,7 +283,8 @@ resolve_milestone(phase_number):
264
283
  | passed==true, no review.json | `business-test` |
265
284
  | review.json: verdict=="BLOCK" | `review-failed` |
266
285
  | review.json: verdict!="BLOCK" | `test` |
267
- | uat.md: all passed | `milestone-audit` |
286
+ | uat.md: all passed + `session.milestone` 存在 | `milestone-audit` |
287
+ | uat.md: all passed + `session.milestone=null` (standalone) | 标记 session completed(无 milestone 可审计) |
268
288
  | uat.md: has failures | `test-failed` |
269
289
 
270
290
  ### A_DETERMINE_QUALITY_MODE
@@ -309,7 +329,9 @@ options:
309
329
 
310
330
  ### A_DECOMPOSE_TASKS
311
331
 
312
- Runs once before chain build; additive to status.json.
332
+ Runs once before chain build; additive to status.json. 设 `session.decomposition_owner = "ralph"`。
333
+
334
+ **0. Ownership guard** (invariant 15): 若 `session.boundary_contract` 或 `session.task_decomposition` 已非空(上游 maestro 已写入,`decomposition_owner == "maestro"`)→ MUST 跳过下述提问,仅做 shape 校验 + 缺省字段补齐,直接进入步骤 6。
313
335
 
314
336
  **1. Classify intent breadth:**
315
337
 
@@ -335,10 +357,10 @@ narrow → derive defaults from intent + codebase, skip questions.
335
357
  ```json
336
358
  { "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
337
359
  "done_when": "<objectively checkable condition>",
338
- "evidence": "verification.json|review.json|uat.md|<test path>",
360
+ "evidence": "verification.json|review.json|uat.md|e2e-results.json|<test path>",
339
361
  "lifecycle": ["analyze","execute"], "status": "pending" }
340
362
  ```
341
- `done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage
363
+ `done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。涉及前端可用性的子目标,`done_when` 应引用 `e2e-results.json`(frontend-verify 门产出),不得仅以后端 API/build 证据判定可用。
342
364
 
343
365
  **5. Persist** (additive): `boundary_contract`, `execution_criteria`, `task_decomposition`。每个 sub-goal 含 `status: "pending"` + `completion_confirmed: false`。
344
366
 
@@ -346,11 +368,11 @@ narrow → derive defaults from intent + codebase, skip questions.
346
368
 
347
369
  ### A_BUILD_STEPS
348
370
 
349
- Generate steps from `session.lifecycle_position` to `milestone-complete`.
371
+ Generate steps from `session.lifecycle_position` to `milestone-complete`(`session.milestone` 存在时)或最后一个质量门(standalone 时)。
350
372
 
351
373
  | Stage | Skill (independent) | Skill (unified) | Decision after | quality_mode |
352
374
  |-------|---------------------|-----------------|----------------|--------------|
353
- | grill | `maestro-grill "{intent}"` | *(same)* | — | all (**skip when auto_confirm**) |
375
+ | grill | `maestro-grill "{intent}"` | *(same)* | — | all (**auto_confirm 透传 `-y` 到 grill args,不删除 stage**) |
354
376
  | brainstorm | `maestro-brainstorm "{intent}" --from grill:{grill_id}` *(if grill ran)* / `maestro-brainstorm "{intent}"` *(otherwise)* | *(same)* | — | all |
355
377
  | blueprint | `maestro-blueprint "{intent}"` | *(same)* | — | all |
356
378
  | init | `maestro-init` | *(same)* | — | all |
@@ -364,6 +386,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
364
386
  | review | `quality-review {phase}` | `quality-review` | `post-review` | all (quick: append `--tier quick`) |
365
387
  | test-gen | `quality-auto-test {phase}` | `quality-auto-test` | — | full / standard if coverage<80% |
366
388
  | test | `quality-test {phase}` | `quality-test` | `post-test` | full, standard |
389
+ | frontend-verify | `quality-test {phase} --frontend-verify` | `quality-test --frontend-verify` | `post-frontend-verify` | all(**仅当 phase 交付 UI 时插入**:检出 `dashboard/` 或 UI 关键词 `landing\|page\|dashboard\|frontend\|UI\|component\|界面`) |
367
390
  | milestone-audit | `maestro-milestone-audit` | *(same)* | — | all |
368
391
  | goal-audit | *(decision-only)* | *(same)* | `post-goal-audit` | all (only if decomposed) |
369
392
  | milestone-complete | `maestro-milestone-complete` | *(same)* | `post-milestone` | all |
@@ -377,10 +400,12 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
377
400
  1. **起点**:从 `session.lifecycle_position` 开始
378
401
  2. **跳过已完成**:跳过当前 milestone+phase 下已有 completed artifact 的 stage(按 `session.phase` 过滤);unified 按 milestone 过滤
379
402
  3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
380
- 3.5. **grill auto_confirm 跳过**:`auto_confirm == true` 时删除 `grill` stage(grill 为交互式苏格拉底拷问,不支持自动模式);brainstorm args 不含 `--from grill:*`
403
+ 3.5. **grill auto_confirm 透传**:`auto_confirm == true` 时为 `grill` step args 追加 `-y`(grill 自身 Auto mode 用代码代答,见 maestro-grill `<context>` Mode selection);保留 `grill` stage 与 brainstorm `--from grill:*`(grill 仍产出 grill-report/terminology/context-package)
404
+ 3.6. **frontend-verify UI 门控**:仅当当前 phase 交付前端(检出 `dashboard/` 目录,或 phase 目标/计划含 UI 关键词 `landing|page|dashboard|frontend|UI|component|界面`)时保留 `frontend-verify` stage + `post-frontend-verify` decision;纯后端 phase 删除该 stage
381
405
  4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
382
406
  5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
383
- 6. **终点硬约束**:chain `milestone-complete` 结尾
407
+ 5.5. **re-grounding 插入**:当 `task_decomposition` 存在 **且** 链路含 ≥3 个执行 step(不含 decision 节点)时,从第 3 个执行 step 起每隔 3 个执行 step 后插入 `{ decision: "post-reground", retry_count: 0, max_retries: 0, command_scope: null, command_path: null }`。不在最后一个执行 step 之后插入(由 goal-audit 覆盖);不与已有 quality-gate decision 节点相邻(顺延到下一个 3-step 边界);fix-loop 动态插入的 step(index > 原始 chain 长度)不纳入计数
408
+ 6. **终点硬约束**:`session.milestone` 存在时 chain 以 `milestone-complete` 结尾;`session.milestone=null`(standalone)时跳过 `milestone-audit` + `milestone-complete` stage,chain 以最后一个质量门 stage 结尾
384
409
  7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
385
410
  8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
386
411
  9. **command_path 解析**(每个执行 step,decision 节点跳过):
@@ -392,13 +417,16 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
392
417
  - **不在 build 阶段读取 .md 内容**;`<required_reading>` / `<deferred_reading>` 解析与加载由 `maestro ralph next` CLI 在执行期完成
393
418
  10. **每个 step 初始化** `completion_confirmed: false`, `completion_status: null`, `completion_evidence: null`, `deferred_reads: []`, `load: null`(由 `ralph next` 写入)
394
419
  11. **scope_verdict gating**(仅当 chain 起点 = `analyze-macro`):
395
- - `scope_verdict {medium, small}` → 跳过 `roadmap` + `analyze` 两 stage;`plan` 选 standalone 列(`--from analyze:{analyze_macro_id}`),不带 `{phase}`
396
- - `scope_verdict == large` 保留 `roadmap` + `analyze`;`plan` 选 phase 列(`{phase}`)
397
- - `scope_verdict == unknown` → 默认 large 路径;由 `post-analyze-scope` 决策节点在 macro analyze 完成后纠正(A_APPLY_SCOPE_VERDICT)
420
+ - `scope_verdict == large` **且** `wants_roadmap`保留 `roadmap` + `analyze`;`plan` 选 phase 列(`{phase}`)
421
+ - 其余(`medium` / `small`,或 `large` 但非 `wants_roadmap`)→ 跳过 `roadmap` + `analyze` 两 stage;`plan` 选 standalone 列(`--from analyze:{analyze_macro_id}`),不带 `{phase}`
422
+ - `scope_verdict == unknown` → 默认 standalone(非 roadmap)路径;由 `post-analyze-scope` 决策节点在 macro analyze 完成后纠正(A_APPLY_SCOPE_VERDICT)
398
423
  12. **--from 自动注入**:
399
424
  - `analyze_macro_id` 存在且当前 step 是 `roadmap` → args 改为 `--from analyze:{analyze_macro_id}`
400
- - `analyze_macro_id` 存在且 `scope_verdict {medium, small}` 且当前 step `plan` args 改为 `--from analyze:{analyze_macro_id}`
425
+ - `analyze_macro_id` 存在且当前 `plan` step 处于 standalone 列(即非 wants_roadmap 路径:`medium`/`small`,或 `large` 但非 `wants_roadmap`)→ args 改为 `--from analyze:{analyze_macro_id}`
401
426
  - `blueprint_id` 存在 → 当前 step 是 `plan` → args 改为 `--from blueprint:{blueprint_id}`(优先级低于 phase 数字参数)
427
+ - **phase-level deferred chaining**(独立模式,step 含 `{phase}` 占位符):build 阶段前序 artifact 尚未产出,由 A_RESOLVE_ARGS(ralph-execute)运行时从 state.json 查找同 phase+milestone 最新 completed artifact 注入:
428
+ - `plan` step → `--from analyze:{phase_analyze_id}`,写 `source_artifact_ref`
429
+ - `execute` step → `--dir {plan_path}`(现有逻辑),写 `source_artifact_ref = "plan:{id}"`
402
430
  - 写入 `step.source_artifact_ref` 以便审计
403
431
  13. **D-007 Milestone-ref 标注**:每个含 `{phase}` 占位符的 step → `step.milestone_id = session.milestone`(由 A_RESOLVE_PHASE 反查得出),禁止读 `current_milestone`
404
432
  14. **动态插入步骤**(A_APPLY_*)同样应用规则 7-13
@@ -421,6 +449,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
421
449
  | post-business-test | .tests/auto-test/report.json |
422
450
  | post-review | review.json |
423
451
  | post-test | uat.md, .tests/test-results.json |
452
+ | post-frontend-verify | e2e-results.json |
424
453
  4. Check artifact for confidence section → include as signal
425
454
  5. Execute delegate (run_in_background, STOP, wait for callback):
426
455
  ```
@@ -479,14 +508,18 @@ Runs only when `task_decomposition` present.
479
508
  1. 读取 status.json.task_decomposition 中 status!=done 的子目标
480
509
  2. 打开 evidence 产物,对照 done_when 严格判定
481
510
  3. 输出 met / unmet,unmet 给出 gap + target_phase
511
+ 4. 对照 intent + definition_of_done 判定累积产出是否仍服务原始意图(意图保真检查)
482
512
  CONTEXT:
483
- status.json = {session_dir}/status.json
484
- evidence = {evidence artifacts}
513
+ status.json = {session_dir}/status.json
514
+ intent = {session.intent}
515
+ definition_of_done = {boundary_contract.definition_of_done}
516
+ evidence = {evidence artifacts}
485
517
  execution_criteria = {execution_criteria}
486
518
  boundary_contract = {boundary_contract}
487
519
  EXPECTED:
488
520
  ---VERDICT---
489
521
  STATUS=all_met|has_unmet
522
+ INTENT_ALIGNED=true|false
490
523
  UNMET=[{id:G2,gap:'...',target_phase:execute}, ...]
491
524
  CONFIDENCE_SCORE=0-100
492
525
  ---END---
@@ -499,9 +532,64 @@ Runs only when `task_decomposition` present.
499
532
  ```
500
533
  4. On callback: 对每个 met 子目标,set `task_decomposition[i].status="done"` + `completion_confirmed=true` + `completed_at=now`
501
534
  5. Append `{session_dir}/decisions.ndjson` with `"type": "goal-gate"`, `unmet_count`, `unmet_ids`
502
- 6. Verdict: `all_met` → A_APPLY_GOAL_DONE; `has_unmet` → A_APPLY_GOAL_FIX
535
+ 6. Verdict routing:
536
+ - `all_met` + `INTENT_ALIGNED=true` → A_APPLY_GOAL_DONE
537
+ - `all_met` + `INTENT_ALIGNED=false` → A_REGROUND_HALT(尾部漂移熔断,auto_confirm 不跳过)
538
+ - `has_unmet` → A_APPLY_GOAL_FIX
503
539
  GUARD: retry_count >= max_retries AND still unmet → A_APPLY_ESCALATE
504
540
 
541
+ ### A_REGROUND_EVALUATE
542
+
543
+ 仅当 `task_decomposition` 存在。周期触发(build rule 5.5)。
544
+
545
+ 1. 从 status.json 读取:`session.intent`、`session.boundary_contract`、`steps[]` 中 `status=="completed"` 的 step + `completion_evidence`、`task_decomposition` 中已 done 子目标的 `goal` + `done_when`
546
+ 2. Delegate read-only audit (run_in_background, STOP, wait):
547
+ ```
548
+ maestro delegate "PURPOSE: 意图保真检查 — 对照 intent 验证累积执行是否漂移
549
+ TASK:
550
+ 1. 读取 intent + boundary_contract.definition_of_done
551
+ 2. 读取已完成 steps 的 completion_evidence + 已 done 子目标 done_when
552
+ 3. 判定累积产出是否仍服务 intent;是否有 step 产出超出 in_scope 或触碰 out_of_scope
553
+ 4. 输出 aligned / drifted,drifted 给出 drift_description + corrective_action
554
+ CONTEXT:
555
+ intent = {session.intent}
556
+ definition_of_done = {boundary_contract.definition_of_done}
557
+ in_scope = {boundary_contract.in_scope}
558
+ out_of_scope = {boundary_contract.out_of_scope}
559
+ completed_steps = [{index, skill, stage, completion_evidence}, ...]
560
+ done_goals = [{id, goal, done_when}, ...]
561
+ EXPECTED:
562
+ ---VERDICT---
563
+ STATUS=aligned|drifted
564
+ DRIFT_DESCRIPTION=<空或具体描述>
565
+ CORRECTIVE_ACTION=<空或建议>
566
+ CONFIDENCE_SCORE=0-100
567
+ ---END---
568
+ CONSTRAINTS:
569
+ - 只评估,不修改文件
570
+ - aligned 阈值:≥80% 已完成产出直接服务 intent
571
+ - 单个 step 触碰 out_of_scope → 直接判 drifted"
572
+ --role analyze --mode analysis
573
+ ```
574
+ 3. On callback: parse verdict
575
+ 4. Append `{session_dir}/decisions.ndjson`:`{ "id": "DEC-{ts}", "type": "reground-gate", "source": "ralph", "node_id": "post-reground", "verdict": "{aligned|drifted}", "confidence_score": {N}, "drift_description": "...", "corrective_action": "..." }`
576
+ 5. Verdict routing:`aligned` → A_APPLY_PROCEED;`drifted` + `confidence_score >= 60` → A_REGROUND_HALT;`drifted` + `confidence_score < 60` → A_APPLY_PROCEED(标 LOW CONFIDENCE)
577
+
578
+ ### A_REGROUND_HALT
579
+
580
+ 漂移熔断(安全门,auto_confirm 不跳过)。
581
+
582
+ 1. Set `session.status = "paused"`,write status.json
583
+ 2. Display:
584
+ ```
585
+ ⚠️ Re-grounding 检测失败 — 执行已偏离 intent。
586
+ Intent: {session.intent}
587
+ Drift: {drift_description}
588
+ 建议回归: {corrective_action}
589
+ 选项:1) /maestro-ralph continue 忽略漂移继续 2) 手动修正后 continue 3) /maestro-ralph status 查看后决定
590
+ ```
591
+ 3. GUARD: auto_confirm 对本动作无效——漂移熔断不可自动跳过
592
+
505
593
  ### A_APPLY_PROCEED
506
594
 
507
595
  1. Mark decision completed, write status.json
@@ -522,14 +610,14 @@ Runs only when `task_decomposition` present.
522
610
 
523
611
  由 `post-analyze-scope` 触发,依据 `session.scope_verdict` 重塑下游链路。
524
612
 
525
- 1. 读 `session.scope_verdict`
526
- 2. 路径 A(`large`):保持当前链;为后续 `roadmap` step 注入 `--from analyze:{analyze_macro_id}`;为后续 `plan` step 选 phase 列;继续推进
527
- 3. 路径 B(`medium` / `small`):
613
+ 1. 读 `session.scope_verdict` + `session.wants_roadmap`
614
+ 2. 路径 A(`large` `wants_roadmap`):保持当前链(roadmap+analyze);为后续 `roadmap` step 注入 `--from analyze:{analyze_macro_id}`;为后续 `plan` step 选 phase 列;继续推进
615
+ 3. 路径 B(`medium` / `small`,或 `large` 但非 `wants_roadmap`):
528
616
  - 删除 `goal-audit` 之前所有未完成的 `roadmap` + `analyze` (phase) step
529
617
  - 把下一个未完成的 `plan` step 改为 `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
530
618
  - 后续 `execute` 等沿用同一 standalone scope(不带 `{phase}`,由 plan 写出的 task 列表驱动)
531
619
  4. 路径 C(`unknown`):
532
- - 非 auto_confirm → AskUserQuestion 二选一(large / medium-small);auto_confirm → 默认 large
620
+ - 非 auto_confirm → AskUserQuestion 二选一(roadmap 多发布 / 单一计划);auto_confirm → 默认路径 B(单一计划,不引入 roadmap)
533
621
  5. Reindex steps,标 decision completed,write status.json
534
622
  6. Display: ◆ Scope verdict: {verdict} → {kept|collapsed to standalone via analyze:{ANL_ID}}
535
623
 
@@ -576,9 +664,12 @@ Runs only when `task_decomposition` present.
576
664
  "phase": null, "phase_is_new": false,
577
665
  "milestone": "", // D-007 反查结果,禁止读 current_milestone
578
666
  "auto_mode": false,
667
+ "decomposition_owner": "ralph", // 分解契约所有者(invariant 15);缺省按 source 推断
668
+
579
669
  "quality_mode": "standard", // "full" | "standard" | "quick"
580
670
  "planning_mode": "independent", // "unified" | "independent"
581
671
  "scope_verdict": null, // "large" | "medium" | "small" | "unknown" | null
672
+ "wants_roadmap": false, // roadmap opt-in:--roadmap | 多发布 intent | roadmap.md 已存在
582
673
  "analyze_macro_id": null, // "ANL-xxx" 来自最新 macro analyze
583
674
  "blueprint_id": null, // "BLP-xxx" 若存在
584
675
  "cli_tool": "claude", "passed_gates": [],
@@ -670,6 +761,15 @@ quality-test {phase}
670
761
  decision:post-test {retry+1}
671
762
  ```
672
763
 
764
+ **post-frontend-verify:** (UI 写端点未接线/不可用时)
765
+ ```
766
+ quality-debug --from-frontend-verify "{gap_summary}"
767
+ maestro-plan --gaps {phase}
768
+ maestro-execute {phase}
769
+ quality-test {phase} --frontend-verify
770
+ decision:post-frontend-verify {retry+1}
771
+ ```
772
+
673
773
  **post-goal-audit:** (per unmet sub-goal group)
674
774
  ```
675
775
  # for each unmet sub-goal G{n}, scoped to target_phase:
@@ -716,14 +816,15 @@ decision:post-goal-audit {retry+1}
716
816
  - [ ] D-007 反查:phase 数字 → `session.milestone`,禁止读 current_milestone;写入 step.milestone_id
717
817
  - [ ] phase_is_new=true → lifecycle_position 强制 `analyze`
718
818
  - [ ] Intent overrides 识别 grill / brainstorm / blueprint / analyze-macro
719
- - [ ] auto_confirm=true 时 grill stage 跳过(交互式拷问不支持自动模式)
819
+ - [ ] auto_confirm=true 时 grill step args 追加 `-y`(grill 以 Auto mode 执行,stage 不跳过,产出 grill-report/terminology/context-package)
720
820
  - [ ] A_RESOLVE_SCOPE_VERDICT 读 macro analyze conclusions.scope_verdict,写入 session.scope_verdict + analyze_macro_id
721
- - [ ] 链路起点 = analyze-macro 时:large→roadmap+analyze+plan(phase)medium/small→直跳 plan --from analyze:{ANL_ID}(跳过 roadmap+analyze)
821
+ - [ ] 链路起点 = analyze-macro 时:large+wants_roadmap→roadmap+analyze+plan(phase);其余(含 large 默认/medium/small)→直跳 plan --from analyze:{ANL_ID}(跳过 roadmap+analyze)
722
822
  - [ ] post-analyze-scope decision 节点在 macro analyze 之后插入;A_SCOPE_EVALUATE/A_APPLY_SCOPE_VERDICT 重塑链路
723
823
  - [ ] plan step args 支持三路径:`{phase}` / `--from analyze:{ANL_ID}` / `--from blueprint:{BLP_ID}`,写入 step.source_artifact_ref
724
824
  - [ ] roadmap step args 自动注入 `--from analyze:{analyze_macro_id}`(若存在)
725
825
  - [ ] artifact 过滤按 session.phase;unified 按 milestone
726
826
  - [ ] quality_mode 由 A_DETERMINE_QUALITY_MODE 决定,过滤 build steps
827
+ - [ ] frontend-verify stage 仅在 phase 交付 UI 时插入(test 后、milestone-audit 前);post-frontend-verify 走 quality-gate 评估,evidence=e2e-results.json
727
828
  - [ ] Decomposition: broad intent ≤3 question clarify;narrow auto-derive
728
829
  - [ ] status.json 唯一真源:boundary_contract + execution_criteria + task_decomposition;无外部清单
729
830
  - [ ] 执行 step 含 `command_scope` + `command_path`(通过 `maestro ralph skills --platform claude --json --quiet` 预校验,project 覆盖 global);decision step 通过 `step.decision` 字段标识
@@ -737,5 +838,8 @@ decision:post-goal-audit {retry+1}
737
838
  - [ ] Chain 必须以 `milestone-complete` 结尾
738
839
  - [ ] Decision nodes 由 maestro delegate --role analyze 评估
739
840
  - [ ] Ralph 不执行 step,只 evaluate;Skill("maestro-ralph-execute") handoff
841
+ - [ ] Phase-level deferred chaining:plan/execute step 的 `--from`/`--dir` 注入由 A_RESOLVE_ARGS(ralph-execute)运行时完成;build 阶段标记意图,不预知 artifact ID
842
+ - [ ] Phase-level plan step 运行时获得 `--from analyze:{phase_analyze_id}`(由 ralph-execute 从 state.json 查找注入)
843
+ - [ ] Phase-level execute step 运行时获得 `source_artifact_ref = "plan:{id}"`
740
844
 
741
845
  </appendix>
@@ -68,12 +68,8 @@ Parse $ARGUMENTS to determine mode:
68
68
  - Update frontmatter via: `maestro wiki update <id> --frontmatter '{"tool": true, "category": "<cat>", "summary": "<summary>"}'`
69
69
  - Do NOT recreate the document — modify in place
70
70
 
71
- **For all modes** — identify the usage timing: when should an agent or user invoke this tool? This becomes the first line of the entry description (see Step 5).
72
-
73
71
  ### Step 3: Determine Category
74
72
 
75
- **Core principle**: `category` = **who consumes this tool** (which agent type discovers and uses it), not what the content is about.
76
-
77
73
  | Category | Consumer Agent | Decision Question | Signal Words |
78
74
  |---|---|---|---|
79
75
  | `coding` | code-developer, workflow-executor | 开发者实现时需要这个流程吗? | build, deploy, integrate, configure, setup, migrate, api-contract |
@@ -87,8 +83,6 @@ Parse $ARGUMENTS to determine mode:
87
83
  - API verification steps (how to test) → `category: test` (RCP-*, tool: true)
88
84
  - Ask user when ambiguous: "This tool content serves both developers and testers. Split into separate documents?"
89
85
 
90
- **Ambiguous cases**: Choose the **primary consumer** — the agent that would fail without this knowledge.
91
-
92
86
  ### Step 4: Decide Inline vs Ref
93
87
 
94
88
  - Steps <10 and no code blocks → **inline mode**
@@ -43,8 +43,6 @@ Load project UI conventions before extracting design system:
43
43
  maestro spec load --category ui
44
44
  ```
45
45
 
46
- If specs not initialized, continue without — the workflow still produces valid output.
47
-
48
46
  ## 2. Execute Workflow
49
47
 
50
48
  Route to `~/.maestro/workflows/ui-codify.md` and follow completely.
@@ -39,17 +39,18 @@ $ARGUMENTS — user intent text, or special keywords.
39
39
  1. **All chains dispatch via maestro-ralph-execute** — maestro never executes steps directly
40
40
  2. **Session before execution** — status.json created before any step runs
41
41
  3. **Auto flag pass-through** — 仅当用户传入 `-y` 时透传 `-y` 到 skill args
42
- 4. **Decomposition contract shared with maestro-ralph** — broad/lifecycle intents run S_DECOMPOSE producing the SAME additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`)Reference maestro-ralph `A_DECOMPOSE_TASKS`
42
+ 4. **Decomposition contract maestro owns** — `source=="maestro"` session maestro 拥有分解契约(`decomposition_owner="maestro"`):S_DECOMPOSE 产出 additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`),下游 ralph 只消费不覆盖(ralph A_DECOMPOSE_TASKS step 0 ownership guard 跳过二次提问)。Reference maestro-ralph `A_DECOMPOSE_TASKS`
43
43
  5. **status.json 唯一真源** — 不生成 `goal-checklist.md` 或外部清单
44
44
  6. **执行步骤统一通过 `maestro ralph next` 加载** — `command_scope`/`command_path` 由 `maestro ralph skills --platform claude --json --quiet` 预校验(project 覆盖 global,限定 `.claude/`);decision 节点不走 CLI,走 `Skill("maestro-ralph")` handoff
45
45
  7. **Topology awareness** — chain catalog 含 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / ...;scope_verdict 由 ralph 在 `post-analyze-scope` 决定
46
- 8. **Grill is interactive-only** — `-y` auto mode MUST skip grill stage and route directly to brainstorm; grill requires Socratic Q&A with the user
46
+ 8. **Grill `-y` 透传** — `-y` auto mode 透传 `-y` grill args(grill 自身 Auto mode 用代码代答),不删除 grill stage;grill 仍产出 grill-report/terminology/context-package 供下游 brainstorm
47
47
  9. **D-007 milestone 反查** — 数字 phase 的 `milestone_id` 由 `state.json.milestones[].phase_slugs` 反查
48
48
  10. **每个 step 必须 `completion_confirmed: true`** — 由 `maestro ralph complete N --status DONE|DONE_WITH_CONCERNS` 写入
49
49
  11. **schema** — `ralph_protocol_version: "1"` 标记 CLI-driven session;新增字段全部可选
50
50
  12. **Invariant violation = BLOCK** — 违反上述任一 invariant 即阻断当前操作,不可绕过。特别是 invariant 1(dispatch via ralph-execute)和 invariant 2(session before execution)和 invariant 10(completion_confirmed 由 CLI 写入)为硬约束。
51
51
  14. **禁止以上下文消耗为由中断执行** — harness 自动处理 context compression,以"上下文不足"或"避免 context overflow"为由中断属于 invariant violation
52
52
  13. **Classification evidence** — S_CLASSIFY 的 chain 选择决策 MUST 记录到 status.json 的 `classification_rationale` 字段:匹配了哪个 pattern、排除了哪些备选、confidence level。无记录的分类不可进入 S_CREATE。
53
+ 15. **控制权优先级(范式治理)** — FSM(maestro/maestro-ralph)独占 session 生命周期 + step 排序 + cross-step decision 节点;Pipeline(plan/execute/analyze)只拥有自身 artifact GATE,由 ralph dispatch 时 GATE 失败 → `complete BLOCKED|NEEDS_RETRY`、自身 GATE 全过 → DONE;Router(maestro-next)只单次推荐,不得出现在 FSM step 内。
53
54
  </invariants>
54
55
 
55
56
  <state_machine>
@@ -128,7 +129,7 @@ S_FALLBACK:
128
129
  1. Read `~/.maestro/workflows/maestro.md` from deferred_reading
129
130
  2. Match intent to task_type via chain catalog (semantic)
130
131
  3. Select chain from chainMap,遵循拓扑约束:
131
- - 压力测试/拷问/验证假设/grill/stress-test → `grill`(**-y 模式跳过 grill,直接走 brainstorm**)
132
+ - 压力测试/拷问/验证假设/grill/stress-test → `grill`(**-y 模式透传 `-y` 到 grill,grill 以 Auto mode 执行,不跳过**)
132
133
  - 头脑风暴/探索 → `brainstorm`
133
134
  - 学习/阅读代码/跟读/follow → `Skill("learn-follow")`;调查/为什么/investigate → `Skill("learn-investigate")`;分解/模式/decompose → `Skill("learn-decompose")`;评审/挑战/second-opinion → `Skill("learn-second-opinion")`;回顾/retro → `Skill("quality-retrospective")`
134
135
  - 正式规格/spec-generate/7-phase → `blueprint`
@@ -146,7 +147,7 @@ S_FALLBACK:
146
147
 
147
148
  ### A_DECOMPOSE_TASKS
148
149
 
149
- maestro-ralph `A_DECOMPOSE_TASKS` 共享分解契约。Condensed:
150
+ `session.decomposition_owner = "maestro"`。下游 ralph 只消费不二次提问(invariant 4)。Condensed:
150
151
 
151
152
  1. 分类意图广度。narrow / 单步 / `{status,init,quick}` 链跳过
152
153
  2. broad/medium → `AskUserQuestion` ≤3 轮:Scope / Constraints / Definition of Done
@@ -175,7 +176,7 @@ S_FALLBACK:
175
176
  "ralph_protocol_version": "1", "active_step_index": null,
176
177
  "phase", "phase_is_new": false, "milestone": "",
177
178
  "scope_verdict": null, "analyze_macro_id": null, "blueprint_id": null,
178
- "auto_mode": false, "cli_tool": "claude",
179
+ "auto_mode": false, "decomposition_owner": "maestro", "cli_tool": "claude",
179
180
  "context": { "scratch_dir": null, "plan_dir": null, "analysis_dir": null,
180
181
  "brainstorm_dir": null, "blueprint_dir": null, "issue_id": null },
181
182
  "steps": [{
@@ -220,7 +221,7 @@ S_FALLBACK:
220
221
 
221
222
  - [ ] Intent classified with task_type, complexity, clarity_score
222
223
  - [ ] Chain catalog 覆盖 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / quality pipeline
223
- - [ ] `-y` 模式不触发 grill(交互式压力测试不支持自动模式,跳过直接走 brainstorm)
224
+ - [ ] `-y` 模式透传 `-y` 到 grill(grill 以 Auto mode 代码代答执行,stage 不跳过)
224
225
  - [ ] D-007: 数字 phase 步骤的 `milestone_id` 通过 `state.json.milestones[].phase_slugs` 反查
225
226
  - [ ] macro analyze 后跟 `decision:post-analyze-scope`(由 ralph 评估 scope_verdict 决定下游链路)
226
227
  - [ ] plan 支持 `{phase}` / `--from analyze:{ANL_ID}` / `--from blueprint:{BLP_ID}` 三路径;`source_artifact_ref` 写入 step
@@ -15,8 +15,6 @@ allowed-tools:
15
15
 
16
16
  <purpose>
17
17
  Analyze current repository's code patterns to auto-generate `.workflow/kg/extractors.yaml` — a declarative config that teaches MaestroGraph's codegraph extractor to recognize project-specific symbols beyond standard function/class/method declarations.
18
-
19
- Detects: builder/factory API registrations, domain constant patterns, custom decorator conventions, framework-specific patterns, module-level constants.
20
18
  </purpose>
21
19
 
22
20
  <context>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: quality-test
3
3
  description: Use when implementation needs user acceptance testing with interactive verification and gap closure
4
- argument-hint: "[phase] [--smoke] [--auto-fix]"
4
+ argument-hint: "[phase] [--smoke] [--auto-fix] [--frontend-verify]"
5
5
  allowed-tools:
6
6
  - Read
7
7
  - Write
@@ -27,6 +27,29 @@ Flags, artifact context resolution, and output directory format defined in workf
27
27
  </context>
28
28
 
29
29
  <execution>
30
+ **Mode select:** `--frontend-verify` → 走下方 **Frontend Verify Mode**(确定性浏览器 smoke,**不是**对话式 UAT);否则 Follow '~/.maestro/workflows/test.md' completely.
31
+
32
+ ### Frontend Verify Mode (`--frontend-verify`)
33
+
34
+ 1. **Resolve targets**: 读 phase 的 `plan.json` / `.task/TASK-*.json`,提取所有 `[UI-observable]` convergence.criteria(plan 阶段产出);缺失则枚举后端写端点(POST/PUT/PATCH/DELETE)作为待验证清单。
35
+ 2. **Start app**: `next start`(或从 dashboard/package.json 解析的既有启动脚本);启动失败 → E003。
36
+ 3. **Drive browser**: 用 chrome-devtools MCP(`mcp__claude_dms3-chrome-devtools__*`:navigate / click / fill / take_snapshot / list_network_requests)逐条执行每个 `[UI-observable]` 流程,断言:UI 入口存在且可触发 → 对应写请求返回 2xx → DOM 出现预期结果。
37
+ 4. **Write evidence**: 产出 `e2e-results.json`(结构见下),逐条记 pass/fail + 证据(网络状态码、快照引用)。**确定性断言,禁止"无人应答=全过"**。
38
+ 5. **Verdict**: 任一 `[UI-observable]` fail 或写端点无 UI 入口 → STATUS=NEEDS_RETRY(ralph 经 post-frontend-verify 触发 Fix-Loop);全过 → DONE。
39
+
40
+ ```json
41
+ // e2e-results.json
42
+ { "phase": "{phase}", "app_url": "http://localhost:3000",
43
+ "checks": [ { "criterion": "[UI-observable] ...", "ui_entry": "<selector/route>",
44
+ "request": "POST /api/notes", "status": 201, "dom_assert": "list shows new item",
45
+ "passed": true } ],
46
+ "summary": { "total": 0, "passed": 0, "failed": 0 }, "verdict": "pass|fail" }
47
+ ```
48
+
49
+ Ralph-invoked 完成:`maestro ralph complete <idx> --status {STATUS} --evidence e2e-results.json`。
50
+
51
+ ---
52
+
30
53
  Follow '~/.maestro/workflows/test.md' completely.
31
54
 
32
55
  ### Phase Gates (MANDATORY, BLOCKING)
@@ -144,4 +167,5 @@ maestro ralph complete <idx> --status {STATUS} [--evidence {path}]
144
167
  - [ ] Gaps updated with root_cause, fix_direction, affected_files
145
168
  - [ ] Gap-fix loop triggered if --auto-fix (max 2 iterations)
146
169
  - [ ] Next step routed (phase-transition if pass, verify if auto-fix success, debug --from-uat if issues, test-gen if low coverage)
170
+ - [ ] `--frontend-verify`: 每条 [UI-observable] criterion 经真实浏览器断言,产出 e2e-results.json;任一 fail → NEEDS_RETRY(不放行)
147
171
  </success_criteria>
@@ -75,4 +75,3 @@ Follow '~/.maestro/workflows/specs-load.md' completely.
75
75
  - [ ] Legacy entries filtered by text grep fallback
76
76
  - [ ] Results displayed with file:category references
77
77
  </success_criteria>
78
- </output>
@@ -46,4 +46,3 @@ Follow '~/.maestro/workflows/specs-setup.md' completely.
46
46
  - [ ] Workflow recipe knowhow created in `.workflow/knowhow/` for each detected operational workflow (test / debug / build / dev / lint). Each recipe matches the `recipe` schema in `~/.maestro/workflows/knowhow.md` Part B and contains at least one runnable command.
47
47
  - [ ] Report displayed grouped by destination (specs / recipes / skipped / deferred), with `.proposed.md` files surfaced when an existing recipe slug was preserved.
48
48
  </success_criteria>
49
- </output>
@@ -269,7 +269,7 @@ Odyssey 长周期循环(独立路径)
269
269
  odyssey-debug / odyssey-improve / odyssey-review-test-fix / odyssey-planex / odyssey-ui
270
270
 
271
271
  自适应引擎(高级)
272
- ralph / ralph-beta → 自运行决策循环
272
+ ralph → 自运行决策循环
273
273
  swarm-workflow / universal-workflow → 多 agent 并行执行
274
274
  ```
275
275
 
@@ -68,7 +68,6 @@
68
68
 
69
69
  {"name": "maestro-ralph", "command": "/maestro-ralph", "category": "ralph", "description": "Ralph 引擎 — 自适应生命周期决策节点管理", "source": "../../commands/maestro-ralph.md"},
70
70
  {"name": "maestro-ralph-execute", "command": "/maestro-ralph-execute", "category": "ralph", "description": "Ralph 执行 — 运行自适应决策链", "source": "../../commands/maestro-ralph-execute.md"},
71
- {"name": "maestro-ralph-beta", "command": "/maestro-ralph-beta", "category": "ralph", "description": "Ralph Beta — 自运行循环控制器,单 skill 完成 build/tick/decide", "source": "../../commands/maestro-ralph-beta.md"},
72
71
 
73
72
  {"name": "maestro-impeccable", "command": "/maestro-impeccable", "category": "ui", "description": "UI 生产 — 设计系统生成 + impeccable 链式编排 + 质量门控", "source": "../../commands/maestro-impeccable.md"},
74
73
  {"name": "maestro-ui-codify", "command": "/maestro-ui-codify", "category": "ui", "description": "UI 固化 — 将设计产出转化为知识资产", "source": "../../commands/maestro-ui-codify.md"},
@@ -61,7 +61,7 @@ const knownCommands = [
61
61
  "maestro", "analyze", "plan", "execute", "init", "roadmap",
62
62
  "brainstorm", "blueprint", "quick", "overlay", "amend", "fork", "merge", "collab",
63
63
  "milestone-audit", "milestone-complete", "milestone-release",
64
- "composer", "guard", "player", "ralph", "ralph-execute", "ralph-beta",
64
+ "composer", "guard", "player", "ralph", "ralph-execute",
65
65
  "grill", "next", "swarm-workflow", "universal-workflow", "companion",
66
66
  "impeccable", "ui-codify", "update",
67
67
  "tools-register", "tools-execute",
@@ -50,15 +50,21 @@ Research and codebase exploration for context gathering.
50
50
  | package.json / Cargo.toml / pyproject.toml / go.mod exists | Explore |
51
51
  | No project files | Skip (codebase_context = null) |
52
52
 
53
- When project detected:
54
- ```
55
- Bash({ command: `maestro delegate "PURPOSE: Explore codebase for context
56
- TASK: • Identify tech stack Map architecture patterns • Document conventions • List integration points
57
- MODE: analysis
58
- CONTEXT: @**/*
59
- EXPECTED: JSON with: tech_stack[], architecture_patterns[], conventions[], integration_points[]" --tool gemini --mode analysis`, run_in_background: false })
53
+ When project detected — prefer `maestro explore` multi-prompt:
54
+ ```bash
55
+ maestro explore \
56
+ "FIND: tech stack and framework detection
57
+ SCOPE: package.json, Cargo.toml, pyproject.toml, go.mod, src/
58
+ EXPECTED: tech_stack list with versions" \
59
+ "FIND: architecture patterns and conventions
60
+ SCOPE: src/
61
+ EXCLUDE: tests, node_modules
62
+ EXPECTED: patterns list with file:line evidence" \
63
+ --max-turns 3 --json
60
64
  ```
61
65
 
66
+ **Fallback**: `maestro delegate "PURPOSE: Explore codebase for context ..." --tool gemini --mode analysis`
67
+
62
68
  ### Tech Profile Scan
63
69
 
64
70
  After codebase exploration, scan results for context-aware trigger signals (based on detected codebase characteristics):