@josstei/maestro 1.6.4-nightly.20260430

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 (655) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/CHANGELOG.md +486 -0
  3. package/EXAMPLES.md +255 -0
  4. package/GEMINI.md +251 -0
  5. package/LICENSE +201 -0
  6. package/QWEN.md +274 -0
  7. package/README.md +220 -0
  8. package/agents/accessibility_specialist.md +20 -0
  9. package/agents/analytics_engineer.md +22 -0
  10. package/agents/api_designer.md +19 -0
  11. package/agents/architect.md +19 -0
  12. package/agents/cloud_architect.md +19 -0
  13. package/agents/cobol_engineer.md +22 -0
  14. package/agents/code_reviewer.md +17 -0
  15. package/agents/coder.md +22 -0
  16. package/agents/compliance_reviewer.md +19 -0
  17. package/agents/content_strategist.md +19 -0
  18. package/agents/copywriter.md +19 -0
  19. package/agents/data_engineer.md +22 -0
  20. package/agents/database_administrator.md +21 -0
  21. package/agents/db2_dba.md +21 -0
  22. package/agents/debugger.md +19 -0
  23. package/agents/design_system_engineer.md +22 -0
  24. package/agents/devops_engineer.md +23 -0
  25. package/agents/hlasm_assembler_specialist.md +22 -0
  26. package/agents/i18n_specialist.md +21 -0
  27. package/agents/ibm_i_specialist.md +22 -0
  28. package/agents/integration_engineer.md +23 -0
  29. package/agents/ml_engineer.md +23 -0
  30. package/agents/mlops_engineer.md +23 -0
  31. package/agents/mobile_engineer.md +23 -0
  32. package/agents/observability_engineer.md +23 -0
  33. package/agents/performance_engineer.md +21 -0
  34. package/agents/platform_engineer.md +24 -0
  35. package/agents/product_manager.md +20 -0
  36. package/agents/prompt_engineer.md +22 -0
  37. package/agents/refactor.md +22 -0
  38. package/agents/release_manager.md +22 -0
  39. package/agents/security_engineer.md +21 -0
  40. package/agents/seo_specialist.md +21 -0
  41. package/agents/site_reliability_engineer.md +21 -0
  42. package/agents/solutions_architect.md +19 -0
  43. package/agents/technical_writer.md +21 -0
  44. package/agents/tester.md +23 -0
  45. package/agents/ux_designer.md +20 -0
  46. package/agents/zos_sysprog.md +21 -0
  47. package/bin/maestro-mcp-server.js +10 -0
  48. package/claude/.claude-plugin/plugin.json +21 -0
  49. package/claude/.mcp.json +11 -0
  50. package/claude/README.md +191 -0
  51. package/claude/agents/accessibility-specialist.md +36 -0
  52. package/claude/agents/analytics-engineer.md +38 -0
  53. package/claude/agents/api-designer.md +33 -0
  54. package/claude/agents/architect.md +33 -0
  55. package/claude/agents/cloud-architect.md +33 -0
  56. package/claude/agents/cobol-engineer.md +38 -0
  57. package/claude/agents/code-reviewer.md +31 -0
  58. package/claude/agents/coder.md +38 -0
  59. package/claude/agents/compliance-reviewer.md +33 -0
  60. package/claude/agents/content-strategist.md +33 -0
  61. package/claude/agents/copywriter.md +33 -0
  62. package/claude/agents/data-engineer.md +37 -0
  63. package/claude/agents/database-administrator.md +37 -0
  64. package/claude/agents/db2-dba.md +37 -0
  65. package/claude/agents/debugger.md +32 -0
  66. package/claude/agents/design-system-engineer.md +38 -0
  67. package/claude/agents/devops-engineer.md +39 -0
  68. package/claude/agents/hlasm-assembler-specialist.md +38 -0
  69. package/claude/agents/i18n-specialist.md +37 -0
  70. package/claude/agents/ibm-i-specialist.md +38 -0
  71. package/claude/agents/integration-engineer.md +39 -0
  72. package/claude/agents/ml-engineer.md +39 -0
  73. package/claude/agents/mlops-engineer.md +39 -0
  74. package/claude/agents/mobile-engineer.md +39 -0
  75. package/claude/agents/observability-engineer.md +39 -0
  76. package/claude/agents/performance-engineer.md +34 -0
  77. package/claude/agents/platform-engineer.md +40 -0
  78. package/claude/agents/product-manager.md +34 -0
  79. package/claude/agents/prompt-engineer.md +38 -0
  80. package/claude/agents/refactor.md +38 -0
  81. package/claude/agents/release-manager.md +38 -0
  82. package/claude/agents/security-engineer.md +37 -0
  83. package/claude/agents/seo-specialist.md +37 -0
  84. package/claude/agents/site-reliability-engineer.md +37 -0
  85. package/claude/agents/solutions-architect.md +33 -0
  86. package/claude/agents/technical-writer.md +37 -0
  87. package/claude/agents/tester.md +39 -0
  88. package/claude/agents/ux-designer.md +34 -0
  89. package/claude/agents/zos-sysprog.md +37 -0
  90. package/claude/hooks/claude-hooks.json +48 -0
  91. package/claude/mcp/maestro-server.js +9 -0
  92. package/claude/mcp-config.example.json +9 -0
  93. package/claude/scripts/adapters/claude-adapter.js +7 -0
  94. package/claude/scripts/hook-runner.js +8 -0
  95. package/claude/scripts/policy-enforcer.js +294 -0
  96. package/claude/skills/a11y-audit/SKILL.md +26 -0
  97. package/claude/skills/archive/SKILL.md +24 -0
  98. package/claude/skills/code-review/SKILL.md +7 -0
  99. package/claude/skills/compliance-check/SKILL.md +26 -0
  100. package/claude/skills/debug-workflow/SKILL.md +27 -0
  101. package/claude/skills/delegation/SKILL.md +7 -0
  102. package/claude/skills/design-dialogue/SKILL.md +7 -0
  103. package/claude/skills/execute/SKILL.md +38 -0
  104. package/claude/skills/execution/SKILL.md +7 -0
  105. package/claude/skills/implementation-planning/SKILL.md +7 -0
  106. package/claude/skills/orchestrate/SKILL.md +38 -0
  107. package/claude/skills/perf-check/SKILL.md +26 -0
  108. package/claude/skills/resume-session/SKILL.md +38 -0
  109. package/claude/skills/review-code/SKILL.md +27 -0
  110. package/claude/skills/security-audit/SKILL.md +28 -0
  111. package/claude/skills/seo-audit/SKILL.md +26 -0
  112. package/claude/skills/session-management/SKILL.md +7 -0
  113. package/claude/skills/status/SKILL.md +22 -0
  114. package/claude/skills/validation/SKILL.md +7 -0
  115. package/claude/src/agents/accessibility-specialist.md +163 -0
  116. package/claude/src/agents/analytics-engineer.md +182 -0
  117. package/claude/src/agents/api-designer.md +124 -0
  118. package/claude/src/agents/architect.md +120 -0
  119. package/claude/src/agents/cloud-architect.md +134 -0
  120. package/claude/src/agents/cobol-engineer.md +127 -0
  121. package/claude/src/agents/code-reviewer.md +123 -0
  122. package/claude/src/agents/coder.md +132 -0
  123. package/claude/src/agents/compliance-reviewer.md +219 -0
  124. package/claude/src/agents/content-strategist.md +111 -0
  125. package/claude/src/agents/copywriter.md +113 -0
  126. package/claude/src/agents/data-engineer.md +130 -0
  127. package/claude/src/agents/database-administrator.md +126 -0
  128. package/claude/src/agents/db2-dba.md +124 -0
  129. package/claude/src/agents/debugger.md +133 -0
  130. package/claude/src/agents/design-system-engineer.md +258 -0
  131. package/claude/src/agents/devops-engineer.md +138 -0
  132. package/claude/src/agents/hlasm-assembler-specialist.md +134 -0
  133. package/claude/src/agents/i18n-specialist.md +241 -0
  134. package/claude/src/agents/ibm-i-specialist.md +132 -0
  135. package/claude/src/agents/integration-engineer.md +133 -0
  136. package/claude/src/agents/ml-engineer.md +115 -0
  137. package/claude/src/agents/mlops-engineer.md +116 -0
  138. package/claude/src/agents/mobile-engineer.md +115 -0
  139. package/claude/src/agents/observability-engineer.md +133 -0
  140. package/claude/src/agents/performance-engineer.md +139 -0
  141. package/claude/src/agents/platform-engineer.md +129 -0
  142. package/claude/src/agents/product-manager.md +170 -0
  143. package/claude/src/agents/prompt-engineer.md +129 -0
  144. package/claude/src/agents/refactor.md +138 -0
  145. package/claude/src/agents/release-manager.md +132 -0
  146. package/claude/src/agents/security-engineer.md +143 -0
  147. package/claude/src/agents/seo-specialist.md +129 -0
  148. package/claude/src/agents/site-reliability-engineer.md +131 -0
  149. package/claude/src/agents/solutions-architect.md +137 -0
  150. package/claude/src/agents/technical-writer.md +129 -0
  151. package/claude/src/agents/tester.md +135 -0
  152. package/claude/src/agents/ux-designer.md +168 -0
  153. package/claude/src/agents/zos-sysprog.md +134 -0
  154. package/claude/src/config/setting-resolver.js +32 -0
  155. package/claude/src/core/agent-registry.js +67 -0
  156. package/claude/src/core/canonical-source.js +39 -0
  157. package/claude/src/core/env-file-parser.js +82 -0
  158. package/claude/src/core/feature-blocks.js +34 -0
  159. package/claude/src/core/logger.js +12 -0
  160. package/claude/src/core/markdown-state.js +36 -0
  161. package/claude/src/core/policy-rules.js +32 -0
  162. package/claude/src/core/project-root-resolver.js +184 -0
  163. package/claude/src/core/stdin-reader.js +77 -0
  164. package/claude/src/core/version.js +50 -0
  165. package/claude/src/entry-points/core-command-registry.js +37 -0
  166. package/claude/src/entry-points/preamble-builders.js +54 -0
  167. package/claude/src/entry-points/registry.js +199 -0
  168. package/claude/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  169. package/claude/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  170. package/claude/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  171. package/claude/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  172. package/claude/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  173. package/claude/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  174. package/claude/src/generated/agent-registry.json +630 -0
  175. package/claude/src/generated/hook-registry.json +18 -0
  176. package/claude/src/generated/resource-registry.json +16 -0
  177. package/claude/src/hooks/logic/after-agent-logic.js +54 -0
  178. package/claude/src/hooks/logic/before-agent-logic.js +57 -0
  179. package/claude/src/hooks/logic/hook-state.js +127 -0
  180. package/claude/src/hooks/logic/session-end-logic.js +17 -0
  181. package/claude/src/hooks/logic/session-start-logic.js +25 -0
  182. package/claude/src/lib/discovery/index.js +172 -0
  183. package/claude/src/lib/errors/index.js +104 -0
  184. package/claude/src/lib/framework-detection.js +50 -0
  185. package/claude/src/lib/frontmatter/index.js +262 -0
  186. package/claude/src/lib/io/index.js +96 -0
  187. package/claude/src/lib/naming/index.js +94 -0
  188. package/claude/src/lib/validation/index.js +124 -0
  189. package/claude/src/lib/yaml-emit.js +38 -0
  190. package/claude/src/mcp/content/provider.js +68 -0
  191. package/claude/src/mcp/content/runtime-content.js +188 -0
  192. package/claude/src/mcp/contracts/cache-path-rejector.js +39 -0
  193. package/claude/src/mcp/contracts/downstream-context.js +106 -0
  194. package/claude/src/mcp/contracts/plan-schema.js +148 -0
  195. package/claude/src/mcp/contracts/workspace-marker.js +61 -0
  196. package/claude/src/mcp/core/create-server.js +76 -0
  197. package/claude/src/mcp/core/line-reader.js +35 -0
  198. package/claude/src/mcp/core/project-root-cache.js +120 -0
  199. package/claude/src/mcp/core/protocol-dispatcher.js +274 -0
  200. package/claude/src/mcp/core/recovery-hints.js +43 -0
  201. package/claude/src/mcp/core/tool-outcome.js +77 -0
  202. package/claude/src/mcp/core/tool-registry.js +82 -0
  203. package/claude/src/mcp/handlers/assess-task-complexity.js +108 -0
  204. package/claude/src/mcp/handlers/blocker-parser.js +34 -0
  205. package/claude/src/mcp/handlers/design-gate.js +393 -0
  206. package/claude/src/mcp/handlers/get-agent.js +54 -0
  207. package/claude/src/mcp/handlers/get-runtime-context.js +49 -0
  208. package/claude/src/mcp/handlers/get-skill-content.js +51 -0
  209. package/claude/src/mcp/handlers/initialize-workspace.js +45 -0
  210. package/claude/src/mcp/handlers/reconciliation.js +224 -0
  211. package/claude/src/mcp/handlers/resolve-settings.js +39 -0
  212. package/claude/src/mcp/handlers/session-state-core.js +108 -0
  213. package/claude/src/mcp/handlers/session-state-tools.js +562 -0
  214. package/claude/src/mcp/handlers/validate-plan.js +76 -0
  215. package/claude/src/mcp/maestro-server.js +122 -0
  216. package/claude/src/mcp/runtime/runtime-config-map.js +70 -0
  217. package/claude/src/mcp/tool-packs/content/index.js +80 -0
  218. package/claude/src/mcp/tool-packs/contracts.js +30 -0
  219. package/claude/src/mcp/tool-packs/index.js +15 -0
  220. package/claude/src/mcp/tool-packs/session/index.js +243 -0
  221. package/claude/src/mcp/tool-packs/workspace/index.js +98 -0
  222. package/claude/src/mcp/utils/extension-root.js +31 -0
  223. package/claude/src/mcp/validation/agent-checker.js +81 -0
  224. package/claude/src/mcp/validation/dag-checker.js +214 -0
  225. package/claude/src/mcp/validation/file-overlap-checker.js +63 -0
  226. package/claude/src/mcp/validation/schema-checker.js +108 -0
  227. package/claude/src/platforms/claude/runtime-config.js +60 -0
  228. package/claude/src/platforms/shared/adapters/claude-adapter.js +36 -0
  229. package/claude/src/platforms/shared/adapters/conventions.js +29 -0
  230. package/claude/src/platforms/shared/adapters/exit-codes.js +6 -0
  231. package/claude/src/platforms/shared/adapters/factory.js +40 -0
  232. package/claude/src/platforms/shared/agent-names.js +15 -0
  233. package/claude/src/platforms/shared/hook-runner.js +52 -0
  234. package/claude/src/references/architecture.md +139 -0
  235. package/claude/src/references/orchestration-steps.md +193 -0
  236. package/claude/src/skills/shared/code-review/SKILL.md +145 -0
  237. package/claude/src/skills/shared/delegation/SKILL.md +387 -0
  238. package/claude/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  239. package/claude/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  240. package/claude/src/skills/shared/design-dialogue/SKILL.md +284 -0
  241. package/claude/src/skills/shared/execution/SKILL.md +258 -0
  242. package/claude/src/skills/shared/implementation-planning/SKILL.md +307 -0
  243. package/claude/src/skills/shared/session-management/SKILL.md +314 -0
  244. package/claude/src/skills/shared/validation/SKILL.md +204 -0
  245. package/claude/src/state/session-state.js +113 -0
  246. package/claude/src/templates/design-document.md +95 -0
  247. package/claude/src/templates/implementation-plan.md +86 -0
  248. package/claude/src/templates/session-state.md +68 -0
  249. package/claude/src/version.json +3 -0
  250. package/commands/maestro/a11y-audit.toml +22 -0
  251. package/commands/maestro/archive.toml +23 -0
  252. package/commands/maestro/compliance-check.toml +22 -0
  253. package/commands/maestro/debug.toml +23 -0
  254. package/commands/maestro/execute.toml +30 -0
  255. package/commands/maestro/orchestrate.toml +30 -0
  256. package/commands/maestro/perf-check.toml +22 -0
  257. package/commands/maestro/resume.toml +38 -0
  258. package/commands/maestro/review.toml +23 -0
  259. package/commands/maestro/security-audit.toml +24 -0
  260. package/commands/maestro/seo-audit.toml +22 -0
  261. package/commands/maestro/status.toml +21 -0
  262. package/docs/architecture.md +323 -0
  263. package/docs/cicd.md +658 -0
  264. package/docs/flow.md +266 -0
  265. package/docs/maestro-cheatsheet.md +207 -0
  266. package/docs/overview.md +141 -0
  267. package/docs/runtime-claude.md +190 -0
  268. package/docs/runtime-codex.md +197 -0
  269. package/docs/runtime-gemini.md +173 -0
  270. package/docs/runtime-qwen.md +150 -0
  271. package/docs/usage.md +315 -0
  272. package/gemini-extension.json +56 -0
  273. package/hooks/adapters/gemini-adapter.js +2 -0
  274. package/hooks/adapters/qwen-adapter.js +2 -0
  275. package/hooks/hook-runner.js +3 -0
  276. package/hooks/hooks.json +56 -0
  277. package/mcp/maestro-server.js +4 -0
  278. package/package.json +93 -0
  279. package/plugins/maestro/.app.json +3 -0
  280. package/plugins/maestro/.codex-plugin/plugin.json +41 -0
  281. package/plugins/maestro/.mcp.json +16 -0
  282. package/plugins/maestro/README.md +57 -0
  283. package/plugins/maestro/references/runtime-guide.md +125 -0
  284. package/plugins/maestro/skills/a11y-audit/SKILL.md +16 -0
  285. package/plugins/maestro/skills/archive/SKILL.md +16 -0
  286. package/plugins/maestro/skills/code-review/SKILL.md +6 -0
  287. package/plugins/maestro/skills/compliance-check/SKILL.md +16 -0
  288. package/plugins/maestro/skills/debug-workflow/SKILL.md +16 -0
  289. package/plugins/maestro/skills/delegation/SKILL.md +6 -0
  290. package/plugins/maestro/skills/design-dialogue/SKILL.md +6 -0
  291. package/plugins/maestro/skills/execute/SKILL.md +16 -0
  292. package/plugins/maestro/skills/execution/SKILL.md +6 -0
  293. package/plugins/maestro/skills/implementation-planning/SKILL.md +6 -0
  294. package/plugins/maestro/skills/orchestrate/SKILL.md +16 -0
  295. package/plugins/maestro/skills/perf-check/SKILL.md +16 -0
  296. package/plugins/maestro/skills/resume-session/SKILL.md +16 -0
  297. package/plugins/maestro/skills/review-code/SKILL.md +16 -0
  298. package/plugins/maestro/skills/security-audit/SKILL.md +16 -0
  299. package/plugins/maestro/skills/seo-audit/SKILL.md +16 -0
  300. package/plugins/maestro/skills/session-management/SKILL.md +6 -0
  301. package/plugins/maestro/skills/status/SKILL.md +14 -0
  302. package/plugins/maestro/skills/validation/SKILL.md +6 -0
  303. package/plugins/maestro/src/agents/accessibility-specialist.md +163 -0
  304. package/plugins/maestro/src/agents/analytics-engineer.md +182 -0
  305. package/plugins/maestro/src/agents/api-designer.md +124 -0
  306. package/plugins/maestro/src/agents/architect.md +120 -0
  307. package/plugins/maestro/src/agents/cloud-architect.md +134 -0
  308. package/plugins/maestro/src/agents/cobol-engineer.md +127 -0
  309. package/plugins/maestro/src/agents/code-reviewer.md +123 -0
  310. package/plugins/maestro/src/agents/coder.md +132 -0
  311. package/plugins/maestro/src/agents/compliance-reviewer.md +219 -0
  312. package/plugins/maestro/src/agents/content-strategist.md +111 -0
  313. package/plugins/maestro/src/agents/copywriter.md +113 -0
  314. package/plugins/maestro/src/agents/data-engineer.md +130 -0
  315. package/plugins/maestro/src/agents/database-administrator.md +126 -0
  316. package/plugins/maestro/src/agents/db2-dba.md +124 -0
  317. package/plugins/maestro/src/agents/debugger.md +133 -0
  318. package/plugins/maestro/src/agents/design-system-engineer.md +258 -0
  319. package/plugins/maestro/src/agents/devops-engineer.md +138 -0
  320. package/plugins/maestro/src/agents/hlasm-assembler-specialist.md +134 -0
  321. package/plugins/maestro/src/agents/i18n-specialist.md +241 -0
  322. package/plugins/maestro/src/agents/ibm-i-specialist.md +132 -0
  323. package/plugins/maestro/src/agents/integration-engineer.md +133 -0
  324. package/plugins/maestro/src/agents/ml-engineer.md +115 -0
  325. package/plugins/maestro/src/agents/mlops-engineer.md +116 -0
  326. package/plugins/maestro/src/agents/mobile-engineer.md +115 -0
  327. package/plugins/maestro/src/agents/observability-engineer.md +133 -0
  328. package/plugins/maestro/src/agents/performance-engineer.md +139 -0
  329. package/plugins/maestro/src/agents/platform-engineer.md +129 -0
  330. package/plugins/maestro/src/agents/product-manager.md +170 -0
  331. package/plugins/maestro/src/agents/prompt-engineer.md +129 -0
  332. package/plugins/maestro/src/agents/refactor.md +138 -0
  333. package/plugins/maestro/src/agents/release-manager.md +132 -0
  334. package/plugins/maestro/src/agents/security-engineer.md +143 -0
  335. package/plugins/maestro/src/agents/seo-specialist.md +129 -0
  336. package/plugins/maestro/src/agents/site-reliability-engineer.md +131 -0
  337. package/plugins/maestro/src/agents/solutions-architect.md +137 -0
  338. package/plugins/maestro/src/agents/technical-writer.md +129 -0
  339. package/plugins/maestro/src/agents/tester.md +135 -0
  340. package/plugins/maestro/src/agents/ux-designer.md +168 -0
  341. package/plugins/maestro/src/agents/zos-sysprog.md +134 -0
  342. package/plugins/maestro/src/config/setting-resolver.js +32 -0
  343. package/plugins/maestro/src/core/agent-registry.js +67 -0
  344. package/plugins/maestro/src/core/canonical-source.js +39 -0
  345. package/plugins/maestro/src/core/env-file-parser.js +82 -0
  346. package/plugins/maestro/src/core/feature-blocks.js +34 -0
  347. package/plugins/maestro/src/core/logger.js +12 -0
  348. package/plugins/maestro/src/core/markdown-state.js +36 -0
  349. package/plugins/maestro/src/core/policy-rules.js +32 -0
  350. package/plugins/maestro/src/core/project-root-resolver.js +184 -0
  351. package/plugins/maestro/src/core/stdin-reader.js +77 -0
  352. package/plugins/maestro/src/core/version.js +50 -0
  353. package/plugins/maestro/src/entry-points/core-command-registry.js +37 -0
  354. package/plugins/maestro/src/entry-points/preamble-builders.js +54 -0
  355. package/plugins/maestro/src/entry-points/registry.js +199 -0
  356. package/plugins/maestro/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  357. package/plugins/maestro/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  358. package/plugins/maestro/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  359. package/plugins/maestro/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  360. package/plugins/maestro/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  361. package/plugins/maestro/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  362. package/plugins/maestro/src/generated/agent-registry.json +630 -0
  363. package/plugins/maestro/src/generated/hook-registry.json +18 -0
  364. package/plugins/maestro/src/generated/resource-registry.json +16 -0
  365. package/plugins/maestro/src/hooks/logic/after-agent-logic.js +54 -0
  366. package/plugins/maestro/src/hooks/logic/before-agent-logic.js +57 -0
  367. package/plugins/maestro/src/hooks/logic/hook-state.js +127 -0
  368. package/plugins/maestro/src/hooks/logic/session-end-logic.js +17 -0
  369. package/plugins/maestro/src/hooks/logic/session-start-logic.js +25 -0
  370. package/plugins/maestro/src/lib/discovery/index.js +172 -0
  371. package/plugins/maestro/src/lib/errors/index.js +104 -0
  372. package/plugins/maestro/src/lib/framework-detection.js +50 -0
  373. package/plugins/maestro/src/lib/frontmatter/index.js +262 -0
  374. package/plugins/maestro/src/lib/io/index.js +96 -0
  375. package/plugins/maestro/src/lib/naming/index.js +94 -0
  376. package/plugins/maestro/src/lib/validation/index.js +124 -0
  377. package/plugins/maestro/src/lib/yaml-emit.js +38 -0
  378. package/plugins/maestro/src/mcp/content/provider.js +68 -0
  379. package/plugins/maestro/src/mcp/content/runtime-content.js +188 -0
  380. package/plugins/maestro/src/mcp/contracts/cache-path-rejector.js +39 -0
  381. package/plugins/maestro/src/mcp/contracts/downstream-context.js +106 -0
  382. package/plugins/maestro/src/mcp/contracts/plan-schema.js +148 -0
  383. package/plugins/maestro/src/mcp/contracts/workspace-marker.js +61 -0
  384. package/plugins/maestro/src/mcp/core/create-server.js +76 -0
  385. package/plugins/maestro/src/mcp/core/line-reader.js +35 -0
  386. package/plugins/maestro/src/mcp/core/project-root-cache.js +120 -0
  387. package/plugins/maestro/src/mcp/core/protocol-dispatcher.js +274 -0
  388. package/plugins/maestro/src/mcp/core/recovery-hints.js +43 -0
  389. package/plugins/maestro/src/mcp/core/tool-outcome.js +77 -0
  390. package/plugins/maestro/src/mcp/core/tool-registry.js +82 -0
  391. package/plugins/maestro/src/mcp/handlers/assess-task-complexity.js +108 -0
  392. package/plugins/maestro/src/mcp/handlers/blocker-parser.js +34 -0
  393. package/plugins/maestro/src/mcp/handlers/design-gate.js +393 -0
  394. package/plugins/maestro/src/mcp/handlers/get-agent.js +54 -0
  395. package/plugins/maestro/src/mcp/handlers/get-runtime-context.js +49 -0
  396. package/plugins/maestro/src/mcp/handlers/get-skill-content.js +51 -0
  397. package/plugins/maestro/src/mcp/handlers/initialize-workspace.js +45 -0
  398. package/plugins/maestro/src/mcp/handlers/reconciliation.js +224 -0
  399. package/plugins/maestro/src/mcp/handlers/resolve-settings.js +39 -0
  400. package/plugins/maestro/src/mcp/handlers/session-state-core.js +108 -0
  401. package/plugins/maestro/src/mcp/handlers/session-state-tools.js +562 -0
  402. package/plugins/maestro/src/mcp/handlers/validate-plan.js +76 -0
  403. package/plugins/maestro/src/mcp/maestro-server.js +122 -0
  404. package/plugins/maestro/src/mcp/runtime/runtime-config-map.js +70 -0
  405. package/plugins/maestro/src/mcp/tool-packs/content/index.js +80 -0
  406. package/plugins/maestro/src/mcp/tool-packs/contracts.js +30 -0
  407. package/plugins/maestro/src/mcp/tool-packs/index.js +15 -0
  408. package/plugins/maestro/src/mcp/tool-packs/session/index.js +243 -0
  409. package/plugins/maestro/src/mcp/tool-packs/workspace/index.js +98 -0
  410. package/plugins/maestro/src/mcp/utils/extension-root.js +31 -0
  411. package/plugins/maestro/src/mcp/validation/agent-checker.js +81 -0
  412. package/plugins/maestro/src/mcp/validation/dag-checker.js +214 -0
  413. package/plugins/maestro/src/mcp/validation/file-overlap-checker.js +63 -0
  414. package/plugins/maestro/src/mcp/validation/schema-checker.js +108 -0
  415. package/plugins/maestro/src/platforms/codex/runtime-config.js +58 -0
  416. package/plugins/maestro/src/platforms/shared/adapters/conventions.js +29 -0
  417. package/plugins/maestro/src/platforms/shared/adapters/exit-codes.js +6 -0
  418. package/plugins/maestro/src/platforms/shared/adapters/factory.js +40 -0
  419. package/plugins/maestro/src/platforms/shared/agent-names.js +15 -0
  420. package/plugins/maestro/src/platforms/shared/hook-runner.js +52 -0
  421. package/plugins/maestro/src/references/architecture.md +139 -0
  422. package/plugins/maestro/src/references/orchestration-steps.md +193 -0
  423. package/plugins/maestro/src/skills/shared/code-review/SKILL.md +145 -0
  424. package/plugins/maestro/src/skills/shared/delegation/SKILL.md +387 -0
  425. package/plugins/maestro/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  426. package/plugins/maestro/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  427. package/plugins/maestro/src/skills/shared/design-dialogue/SKILL.md +284 -0
  428. package/plugins/maestro/src/skills/shared/execution/SKILL.md +258 -0
  429. package/plugins/maestro/src/skills/shared/implementation-planning/SKILL.md +307 -0
  430. package/plugins/maestro/src/skills/shared/session-management/SKILL.md +314 -0
  431. package/plugins/maestro/src/skills/shared/validation/SKILL.md +204 -0
  432. package/plugins/maestro/src/state/session-state.js +113 -0
  433. package/plugins/maestro/src/templates/design-document.md +95 -0
  434. package/plugins/maestro/src/templates/implementation-plan.md +86 -0
  435. package/plugins/maestro/src/templates/session-state.md +68 -0
  436. package/plugins/maestro/src/version.json +3 -0
  437. package/policies/maestro.toml +44 -0
  438. package/qwen/agents/accessibility_specialist.md +18 -0
  439. package/qwen/agents/analytics_engineer.md +20 -0
  440. package/qwen/agents/api_designer.md +17 -0
  441. package/qwen/agents/architect.md +17 -0
  442. package/qwen/agents/cloud_architect.md +17 -0
  443. package/qwen/agents/cobol_engineer.md +20 -0
  444. package/qwen/agents/code_reviewer.md +15 -0
  445. package/qwen/agents/coder.md +20 -0
  446. package/qwen/agents/compliance_reviewer.md +17 -0
  447. package/qwen/agents/content_strategist.md +17 -0
  448. package/qwen/agents/copywriter.md +17 -0
  449. package/qwen/agents/data_engineer.md +20 -0
  450. package/qwen/agents/database_administrator.md +19 -0
  451. package/qwen/agents/db2_dba.md +19 -0
  452. package/qwen/agents/debugger.md +17 -0
  453. package/qwen/agents/design_system_engineer.md +20 -0
  454. package/qwen/agents/devops_engineer.md +21 -0
  455. package/qwen/agents/hlasm_assembler_specialist.md +20 -0
  456. package/qwen/agents/i18n_specialist.md +19 -0
  457. package/qwen/agents/ibm_i_specialist.md +20 -0
  458. package/qwen/agents/integration_engineer.md +21 -0
  459. package/qwen/agents/ml_engineer.md +21 -0
  460. package/qwen/agents/mlops_engineer.md +21 -0
  461. package/qwen/agents/mobile_engineer.md +21 -0
  462. package/qwen/agents/observability_engineer.md +21 -0
  463. package/qwen/agents/performance_engineer.md +19 -0
  464. package/qwen/agents/platform_engineer.md +22 -0
  465. package/qwen/agents/product_manager.md +18 -0
  466. package/qwen/agents/prompt_engineer.md +20 -0
  467. package/qwen/agents/refactor.md +20 -0
  468. package/qwen/agents/release_manager.md +20 -0
  469. package/qwen/agents/security_engineer.md +19 -0
  470. package/qwen/agents/seo_specialist.md +19 -0
  471. package/qwen/agents/site_reliability_engineer.md +19 -0
  472. package/qwen/agents/solutions_architect.md +17 -0
  473. package/qwen/agents/technical_writer.md +19 -0
  474. package/qwen/agents/tester.md +21 -0
  475. package/qwen/agents/ux_designer.md +18 -0
  476. package/qwen/agents/zos_sysprog.md +19 -0
  477. package/qwen/hooks.json +56 -0
  478. package/qwen-extension.json +56 -0
  479. package/scripts/check-layer-boundaries.js +74 -0
  480. package/scripts/generate.js +155 -0
  481. package/scripts/install-codex-plugin.js +167 -0
  482. package/scripts/install-git-hooks.js +43 -0
  483. package/scripts/npm-publish-idempotent.js +338 -0
  484. package/scripts/package-release-artifacts.js +156 -0
  485. package/scripts/release-artifact-manifest.js +378 -0
  486. package/scripts/release-version-metadata.js +129 -0
  487. package/scripts/update-versions.js +33 -0
  488. package/scripts/verify-npm-pack.js +85 -0
  489. package/scripts/verify-release-artifacts.js +95 -0
  490. package/src/agents/accessibility-specialist.md +163 -0
  491. package/src/agents/analytics-engineer.md +182 -0
  492. package/src/agents/api-designer.md +124 -0
  493. package/src/agents/architect.md +120 -0
  494. package/src/agents/cloud-architect.md +134 -0
  495. package/src/agents/cobol-engineer.md +127 -0
  496. package/src/agents/code-reviewer.md +123 -0
  497. package/src/agents/coder.md +132 -0
  498. package/src/agents/compliance-reviewer.md +219 -0
  499. package/src/agents/content-strategist.md +111 -0
  500. package/src/agents/copywriter.md +113 -0
  501. package/src/agents/data-engineer.md +130 -0
  502. package/src/agents/database-administrator.md +126 -0
  503. package/src/agents/db2-dba.md +124 -0
  504. package/src/agents/debugger.md +133 -0
  505. package/src/agents/design-system-engineer.md +258 -0
  506. package/src/agents/devops-engineer.md +138 -0
  507. package/src/agents/hlasm-assembler-specialist.md +134 -0
  508. package/src/agents/i18n-specialist.md +241 -0
  509. package/src/agents/ibm-i-specialist.md +132 -0
  510. package/src/agents/integration-engineer.md +133 -0
  511. package/src/agents/ml-engineer.md +115 -0
  512. package/src/agents/mlops-engineer.md +116 -0
  513. package/src/agents/mobile-engineer.md +115 -0
  514. package/src/agents/observability-engineer.md +133 -0
  515. package/src/agents/performance-engineer.md +139 -0
  516. package/src/agents/platform-engineer.md +129 -0
  517. package/src/agents/product-manager.md +170 -0
  518. package/src/agents/prompt-engineer.md +129 -0
  519. package/src/agents/refactor.md +138 -0
  520. package/src/agents/release-manager.md +132 -0
  521. package/src/agents/security-engineer.md +143 -0
  522. package/src/agents/seo-specialist.md +129 -0
  523. package/src/agents/site-reliability-engineer.md +131 -0
  524. package/src/agents/solutions-architect.md +137 -0
  525. package/src/agents/technical-writer.md +129 -0
  526. package/src/agents/tester.md +135 -0
  527. package/src/agents/ux-designer.md +168 -0
  528. package/src/agents/zos-sysprog.md +134 -0
  529. package/src/config/setting-resolver.js +32 -0
  530. package/src/core/agent-registry.js +67 -0
  531. package/src/core/canonical-source.js +39 -0
  532. package/src/core/env-file-parser.js +82 -0
  533. package/src/core/feature-blocks.js +34 -0
  534. package/src/core/logger.js +12 -0
  535. package/src/core/markdown-state.js +36 -0
  536. package/src/core/policy-rules.js +32 -0
  537. package/src/core/project-root-resolver.js +184 -0
  538. package/src/core/stdin-reader.js +77 -0
  539. package/src/core/version.js +50 -0
  540. package/src/entry-points/core-command-registry.js +37 -0
  541. package/src/entry-points/preamble-builders.js +54 -0
  542. package/src/entry-points/registry.js +199 -0
  543. package/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  544. package/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  545. package/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  546. package/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  547. package/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  548. package/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  549. package/src/generated/agent-registry.json +630 -0
  550. package/src/generated/hook-registry.json +18 -0
  551. package/src/generated/resource-registry.json +16 -0
  552. package/src/generator/entry-point-expander.js +182 -0
  553. package/src/generator/file-writer.js +167 -0
  554. package/src/generator/generation-session.js +62 -0
  555. package/src/generator/manifest-curator.js +31 -0
  556. package/src/generator/manifest-expander.js +256 -0
  557. package/src/generator/payload-builder.js +217 -0
  558. package/src/generator/registry-scanner.js +130 -0
  559. package/src/generator/stale-pruner.js +101 -0
  560. package/src/hooks/logic/after-agent-logic.js +54 -0
  561. package/src/hooks/logic/before-agent-logic.js +57 -0
  562. package/src/hooks/logic/hook-state.js +127 -0
  563. package/src/hooks/logic/session-end-logic.js +17 -0
  564. package/src/hooks/logic/session-start-logic.js +25 -0
  565. package/src/lib/discovery/index.js +172 -0
  566. package/src/lib/errors/index.js +104 -0
  567. package/src/lib/framework-detection.js +50 -0
  568. package/src/lib/frontmatter/index.js +262 -0
  569. package/src/lib/io/index.js +96 -0
  570. package/src/lib/naming/index.js +94 -0
  571. package/src/lib/validation/index.js +124 -0
  572. package/src/lib/yaml-emit.js +38 -0
  573. package/src/manifest.js +11 -0
  574. package/src/mcp/content/provider.js +68 -0
  575. package/src/mcp/content/runtime-content.js +188 -0
  576. package/src/mcp/contracts/cache-path-rejector.js +39 -0
  577. package/src/mcp/contracts/downstream-context.js +106 -0
  578. package/src/mcp/contracts/plan-schema.js +148 -0
  579. package/src/mcp/contracts/workspace-marker.js +61 -0
  580. package/src/mcp/core/create-server.js +76 -0
  581. package/src/mcp/core/line-reader.js +35 -0
  582. package/src/mcp/core/project-root-cache.js +120 -0
  583. package/src/mcp/core/protocol-dispatcher.js +274 -0
  584. package/src/mcp/core/recovery-hints.js +43 -0
  585. package/src/mcp/core/tool-outcome.js +77 -0
  586. package/src/mcp/core/tool-registry.js +82 -0
  587. package/src/mcp/handlers/assess-task-complexity.js +108 -0
  588. package/src/mcp/handlers/blocker-parser.js +34 -0
  589. package/src/mcp/handlers/design-gate.js +393 -0
  590. package/src/mcp/handlers/get-agent.js +54 -0
  591. package/src/mcp/handlers/get-runtime-context.js +49 -0
  592. package/src/mcp/handlers/get-skill-content.js +51 -0
  593. package/src/mcp/handlers/initialize-workspace.js +45 -0
  594. package/src/mcp/handlers/reconciliation.js +224 -0
  595. package/src/mcp/handlers/resolve-settings.js +39 -0
  596. package/src/mcp/handlers/session-state-core.js +108 -0
  597. package/src/mcp/handlers/session-state-tools.js +562 -0
  598. package/src/mcp/handlers/validate-plan.js +76 -0
  599. package/src/mcp/maestro-server.js +122 -0
  600. package/src/mcp/runtime/runtime-config-map.js +70 -0
  601. package/src/mcp/tool-packs/content/index.js +80 -0
  602. package/src/mcp/tool-packs/contracts.js +30 -0
  603. package/src/mcp/tool-packs/index.js +15 -0
  604. package/src/mcp/tool-packs/session/index.js +243 -0
  605. package/src/mcp/tool-packs/workspace/index.js +98 -0
  606. package/src/mcp/utils/extension-root.js +31 -0
  607. package/src/mcp/validation/agent-checker.js +81 -0
  608. package/src/mcp/validation/dag-checker.js +214 -0
  609. package/src/mcp/validation/file-overlap-checker.js +63 -0
  610. package/src/mcp/validation/schema-checker.js +108 -0
  611. package/src/platforms/claude/metadata.js +96 -0
  612. package/src/platforms/claude/runtime-config.js +60 -0
  613. package/src/platforms/codex/metadata.js +107 -0
  614. package/src/platforms/codex/runtime-config.js +58 -0
  615. package/src/platforms/gemini/metadata.js +27 -0
  616. package/src/platforms/gemini/runtime-config.js +62 -0
  617. package/src/platforms/metadata-shared.js +133 -0
  618. package/src/platforms/metadata.js +29 -0
  619. package/src/platforms/qwen/metadata.js +27 -0
  620. package/src/platforms/qwen/runtime-config.js +62 -0
  621. package/src/platforms/shared/adapters/claude-adapter.js +36 -0
  622. package/src/platforms/shared/adapters/conventions.js +29 -0
  623. package/src/platforms/shared/adapters/exit-codes.js +6 -0
  624. package/src/platforms/shared/adapters/factory.js +40 -0
  625. package/src/platforms/shared/adapters/gemini-adapter.js +34 -0
  626. package/src/platforms/shared/adapters/qwen-adapter.js +93 -0
  627. package/src/platforms/shared/agent-names.js +15 -0
  628. package/src/platforms/shared/hook-runner.js +52 -0
  629. package/src/references/architecture.md +139 -0
  630. package/src/references/orchestration-steps.md +193 -0
  631. package/src/scripts/ensure-workspace.js +14 -0
  632. package/src/scripts/read-active-session.js +26 -0
  633. package/src/scripts/read-setting.js +18 -0
  634. package/src/scripts/read-state.js +17 -0
  635. package/src/scripts/write-state.js +22 -0
  636. package/src/skills/shared/code-review/SKILL.md +145 -0
  637. package/src/skills/shared/delegation/SKILL.md +387 -0
  638. package/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  639. package/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  640. package/src/skills/shared/design-dialogue/SKILL.md +284 -0
  641. package/src/skills/shared/execution/SKILL.md +258 -0
  642. package/src/skills/shared/implementation-planning/SKILL.md +307 -0
  643. package/src/skills/shared/session-management/SKILL.md +314 -0
  644. package/src/skills/shared/validation/SKILL.md +204 -0
  645. package/src/state/session-state.js +113 -0
  646. package/src/templates/design-document.md +95 -0
  647. package/src/templates/implementation-plan.md +86 -0
  648. package/src/templates/session-state.md +68 -0
  649. package/src/transforms/agent-stub.js +29 -0
  650. package/src/transforms/extract-examples.js +63 -0
  651. package/src/transforms/index.js +35 -0
  652. package/src/transforms/parse-frontmatter.js +23 -0
  653. package/src/transforms/rebuild-frontmatter.js +147 -0
  654. package/src/transforms/skill-discovery-stub.js +27 -0
  655. package/src/transforms/skill-metadata.js +14 -0
@@ -0,0 +1,314 @@
1
+ ---
2
+ name: session-management
3
+ description: Manages orchestration session state, tracking, and resumption
4
+ ---
5
+
6
+ # Session Management Skill
7
+
8
+ Activate this skill for all session state operations during Maestro orchestration. This skill defines the protocols for creating, updating, resuming, and archiving orchestration sessions.
9
+
10
+ ## State Access Protocol
11
+
12
+ When MCP state tools are available, prefer them for state operations:
13
+ - **Preferred**: MCP tools (`initialize_workspace`, `create_session`, `update_session`, `transition_phase`, `get_session_status`, `archive_session`) — structured I/O, atomic operations.
14
+ - **Fallback**: `write_file`/`replace` directly on state files — when MCP tools are not in the available tool list.
15
+ - **Legacy**: Shell scripts (`write-state.js`, `read-state.js`) — remain available but are not the recommended path.
16
+
17
+ Detection: check whether MCP state tools appear in your available tools. If they do, use them. If they do not, use `write_file`/`replace`.
18
+
19
+ ## Hook-Level Session State
20
+
21
+ Maestro hooks maintain a separate, transient state directory under `${MAESTRO_HOOKS_DIR:-<os.tmpdir()>/maestro-hooks-<uid>}/<session-id>/` that is distinct from orchestration state in `<MAESTRO_STATE_DIR>`:
22
+
23
+ | Concern | Orchestration State | Hook State |
24
+ | --- | --- | --- |
25
+ | Location | `<MAESTRO_STATE_DIR>/state/` | `${MAESTRO_HOOKS_DIR:-<os.tmpdir()>/maestro-hooks-<uid>}/<session-id>/` |
26
+ | Lifecycle | Created at execution setup, archived in Phase 4 | Directory created by the session-start hook when an active session exists; active-agent file written by the pre-delegation hook and cleared by the post-delegation hook; stale directories pruned by both session-start and pre-delegation hooks |
27
+ | Contents | Session metadata, phase tracking, token usage, file manifests | Active agent tracking file (`active-agent`) |
28
+ | Persistence | Survives session restarts (supports `/maestro:resume`) | Ephemeral — lost on session end or system reboot |
29
+ | Managed by | Orchestrator via session-management skill | The runtime's pre-delegation and post-delegation hooks |
30
+
31
+ The pre-delegation hook prunes stale hook state directories older than 2 hours to prevent accumulation from abnormal session terminations.
32
+
33
+ The orchestrator does not read or write hook-level state directly. It interacts only with `<MAESTRO_STATE_DIR>` paths. The two state systems are independent and serve different concerns.
34
+
35
+ ## Session Creation Protocol
36
+
37
+ ### When to Create
38
+ For Standard workflow, create a new session at execution setup after the design document and implementation plan are approved and the execution mode gate has resolved. For Express workflow, create a session after the structured brief is approved (see Express Workflow section in the orchestrator template).
39
+
40
+ ### Session ID Format
41
+ `YYYY-MM-DD-<topic-slug>`
42
+
43
+ Where:
44
+ - `YYYY-MM-DD` is the orchestration start date
45
+ - `<topic-slug>` is a lowercase, hyphenated summary matching the design document topic
46
+
47
+ ### File Location
48
+ `<MAESTRO_STATE_DIR>/state/active-session.md`
49
+
50
+ All state paths in this skill use `<MAESTRO_STATE_DIR>` as their base directory (default: `docs/maestro`). In procedural steps, `<state_dir>` represents the resolved value of this variable.
51
+
52
+ ### State File Access
53
+
54
+ Both `read_file` and `write_file` work on state paths inside `<MAESTRO_STATE_DIR>`. The runtime's file-access configuration makes state paths accessible.
55
+
56
+ Use the runtime's bundled `scripts/` directory for these helper commands so they still work when the extension is installed outside the workspace root.
57
+
58
+ **Reading state files:**
59
+ Use `read_file` directly. The `read-state.js` script remains available as an alternative for TOML shell blocks that inject state before the model's first turn:
60
+
61
+ `run_shell_command`: `node <runtime-script-root>/read-state.js <relative-path>`
62
+
63
+ **Writing state files:**
64
+ Use `write_file` directly. When content must be piped from a shell command, use the atomic write script:
65
+
66
+ `run_shell_command`: `echo '...' | node <runtime-script-root>/write-state.js <relative-path>`
67
+
68
+ **Rules:**
69
+ - The `write-state.js` script writes atomically (temp file + rename) to prevent partial writes
70
+ - Both scripts validate against absolute paths and path traversal
71
+
72
+ ### Initialization Steps
73
+ 1. Resolve state directory from `MAESTRO_STATE_DIR`
74
+ 2. Create `<state_dir>/state/` directory if it does not exist (defense-in-depth fallback — workspace readiness startup check is the primary mechanism)
75
+ 3. Verify no existing `active-session.md` — if one exists, alert the user and offer to archive or resume
76
+ 4. Generate session state using the `session-state` template loaded via `get_skill_content`
77
+ 5. Initialize all phases as `pending`
78
+ 6. Set overall status to `in_progress`
79
+ 7. Set `current_phase` to 1
80
+ 8. Record design document and implementation plan paths
81
+ 9. Initialize empty token_usage, file manifests, downstream_context, and errors sections
82
+
83
+ ### Initial State Template
84
+
85
+ ```yaml
86
+ ---
87
+ session_id: "<YYYY-MM-DD-topic-slug>"
88
+ task: "<user's original task description>"
89
+ created: "<ISO 8601 timestamp>"
90
+ updated: "<ISO 8601 timestamp>"
91
+ status: "in_progress"
92
+ workflow_mode: "<standard|express>"
93
+ design_document: "<state_dir>/plans/<design-doc-filename>"
94
+ implementation_plan: "<state_dir>/plans/<impl-plan-filename>"
95
+ current_phase: 1
96
+ total_phases: <integer from impl plan>
97
+ execution_mode: null
98
+ execution_backend: null
99
+ task_complexity: null
100
+
101
+ token_usage:
102
+ total_input: 0
103
+ total_output: 0
104
+ total_cached: 0
105
+ by_agent: {}
106
+
107
+ phases:
108
+ - id: 1
109
+ name: "<phase name from impl plan>"
110
+ status: "pending"
111
+ agents: []
112
+ parallel: false
113
+ started: null
114
+ completed: null
115
+ blocked_by: []
116
+ files_created: []
117
+ files_modified: []
118
+ files_deleted: []
119
+ downstream_context:
120
+ key_interfaces_introduced: []
121
+ patterns_established: []
122
+ integration_points: []
123
+ assumptions: []
124
+ warnings: []
125
+ errors: []
126
+ retry_count: 0
127
+ ---
128
+
129
+ # <Topic> Orchestration Log
130
+ ```
131
+
132
+ Include `task_complexity` (from design document frontmatter) in the session state. Place after `execution_backend`, before `token_usage`. Default: `null`.
133
+
134
+ ## State Update Protocol
135
+
136
+ ### Update Triggers
137
+ Update session state on every meaningful state change:
138
+ - Phase status transitions
139
+ - File manifest changes
140
+ - Downstream context extraction from completed phases
141
+ - Error occurrences
142
+ - Token usage increments
143
+ - Phase completion or failure
144
+
145
+ ### Update Rules
146
+
147
+ 1. **Timestamp**: Update `updated` field on every state change
148
+ 2. **Phase Status**: Transition phase status following valid transitions:
149
+ - `pending` -> `in_progress`
150
+ - `in_progress` -> `completed`
151
+ - `in_progress` -> `failed`
152
+ - `failed` -> `in_progress` (retry)
153
+ - `pending` -> `skipped` (user decision only)
154
+ 3. **Current Phase**: Update `current_phase` to the ID of the currently executing phase
155
+ 4. **File Manifest**: Append to `files_created`, `files_modified`, or `files_deleted` as subagents report changes
156
+ 5. **Downstream Context**: Persist parsed Handoff Report Part 2 fields into phase `downstream_context`
157
+ 6. **Token Usage**: Aggregate token counts from subagent responses into both `total_*` and `by_agent` sections
158
+ 7. **Error Recording**: Append to phase `errors` array with complete metadata
159
+
160
+ ### Error Recording Format
161
+
162
+ ```yaml
163
+ errors:
164
+ - agent: "<agent-name>"
165
+ timestamp: "<ISO 8601>"
166
+ type: "<validation|timeout|file_conflict|runtime|dependency>"
167
+ message: "<full error description>"
168
+ resolution: "<what was done to resolve, or 'pending'>"
169
+ resolved: false
170
+ ```
171
+
172
+ ### Retry Tracking
173
+ - Increment `retry_count` on each retry attempt
174
+ - Maximum 2 retries per phase before escalating to user
175
+ - Record each retry as a separate error entry with resolution details
176
+
177
+ ### Markdown Body Updates
178
+ After updating YAML frontmatter, append to the Markdown body:
179
+
180
+ ```markdown
181
+ ## Phase N: <Phase Name> <status indicator>
182
+
183
+ ### <Agent Name> Output
184
+ [Summary of agent output or full content]
185
+
186
+ ### Files Changed
187
+ - Created: [list]
188
+ - Modified: [list]
189
+
190
+ ### Downstream Context
191
+ - Key Interfaces Introduced: [list]
192
+ - Patterns Established: [list]
193
+ - Integration Points: [list]
194
+ - Assumptions: [list]
195
+ - Warnings: [list]
196
+
197
+ ### Validation Result
198
+ [Pass/Fail with details]
199
+ ```
200
+
201
+ Status indicators:
202
+ - Completed: checkmark
203
+ - In Progress: circle
204
+ - Failed: cross
205
+ - Pending: square
206
+ - Skipped: dash
207
+
208
+ ## Archive Protocol
209
+
210
+ ### When to Archive
211
+ Archive session state when:
212
+ - All phases are completed successfully AND `MAESTRO_AUTO_ARCHIVE` is `true` (default)
213
+ - User explicitly requests archival (regardless of `MAESTRO_AUTO_ARCHIVE` setting)
214
+ - User starts a new orchestration (previous session must be archived first, regardless of setting)
215
+
216
+ When `MAESTRO_AUTO_ARCHIVE` is `false`, prompt the user after successful completion: "Session complete. Auto-archive is disabled. Would you like to archive this session?"
217
+
218
+ ### Archive Steps
219
+ If `archive_session` appears in your available tools, use it — a single call handles all archival:
220
+
221
+ 1. Call `archive_session` with the session ID. The MCP tool atomically:
222
+ - Updates session status to `completed`
223
+ - Moves `active-session.md` to `<state_dir>/state/archive/<session-id>.md`
224
+ - Moves design document to `<state_dir>/plans/archive/` (if it exists and is non-null)
225
+ - Moves implementation plan to `<state_dir>/plans/archive/` (if it exists and is non-null)
226
+ 2. Confirm archival to user with summary of what was archived (use the `archived_files` array in the response)
227
+
228
+ If `archive_session` is not available, fall back to manual file operations:
229
+ 1. Create `<state_dir>/plans/archive/` directory if it does not exist
230
+ 2. Create `<state_dir>/state/archive/` directory if it does not exist
231
+ 3. **MOVE** (not copy) design document from `<state_dir>/plans/` to `<state_dir>/plans/archive/` — the original MUST be deleted. Use the shell-command tool from runtime context with `mv` or read+write+delete. Do NOT leave the file in both locations. **Skip this step if `design_document` is `null` (Express sessions).**
232
+ 4. **MOVE** (not copy) implementation plan from `<state_dir>/plans/` to `<state_dir>/plans/archive/` — same: delete the original. **Skip this step if `implementation_plan` is `null` (Express sessions).**
233
+ 5. Update session state `status` to `completed`
234
+ 6. Update `updated` timestamp
235
+ 7. **MOVE** (not copy) `active-session.md` from `<state_dir>/state/` to `<state_dir>/state/archive/<session-id>.md` — delete the original.
236
+ 8. Confirm archival to user with summary of what was archived
237
+
238
+ ### Archive Verification
239
+ After archival, verify ALL of the following (archive is incomplete if any check fails):
240
+ - No `active-session.md` exists in `<state_dir>/state/`
241
+ - No plan files remain in `<state_dir>/plans/` (only the `archive/` subdirectory should be present)
242
+ - Archived files are readable at their new locations in `archive/`
243
+ - If files still exist in the original locations, delete them now — the archive step used copy instead of move
244
+
245
+ ## Resume Protocol
246
+
247
+ ### When to Resume
248
+ Resume is triggered by the `/maestro:resume` command or when `/maestro:orchestrate` detects an existing active session.
249
+
250
+ ### Resume Steps
251
+
252
+ 1. **Read State**: If session state was already injected into the prompt (e.g., via `/maestro:resume`), use that injected content instead of calling `get_session_status`. Otherwise, if `get_session_status` appears in your available tools, call it to read the active session. Otherwise, read state via `run_shell_command`: `node <runtime-script-root>/read-active-session.js` (resolves `MAESTRO_STATE_DIR` internally)
253
+ 2. **Parse Frontmatter**: Extract YAML frontmatter for session metadata
254
+ 3. **Identify Position**: Determine:
255
+ - Last completed phase (highest ID with `status: completed`)
256
+ - Current active phase (first phase with `status: in_progress` or `pending`)
257
+ - Any failed phases with unresolved errors
258
+ 4. **Check Errors**: Identify unresolved errors from previous execution
259
+ 5. **Present Summary**: Display status summary to user using the resume format defined in the orchestrator instructions
260
+ 6. **Handle Errors**: If unresolved errors exist:
261
+ - Present each error with context
262
+ - Offer options: retry, skip, abort, or adjust parameters
263
+ - Wait for user guidance before proceeding
264
+ 7. **Continue Execution**: Resume from the first pending or failed phase
265
+ 8. **Update State**: Mark resumed phase as `in_progress` and update timestamps
266
+
267
+ ### Express Resume Branch
268
+
269
+ When resuming a session with `workflow_mode: "express"` (read from session state via `get_session_status`), follow the Express workflow's resume protocol instead of the standard resume steps above:
270
+
271
+ - If phase status is `pending`: re-generate and present the structured brief for approval. On approval, proceed to delegation.
272
+ - If phase status is `in_progress`: the implementing agent was interrupted. Re-delegate with the same scope. Use the `agents` array to identify which agent was running.
273
+ - If phase status is `completed` but session status is `in_progress`: code review or archival was interrupted. Run the code review step, then archive.
274
+
275
+ Express sessions have a single phase. The phase status combined with the `agents` array contents determines the resume position.
276
+
277
+ ### Conflict Detection
278
+ When resuming, check for potential conflicts:
279
+ - Files that were partially modified (phase started but not completed)
280
+ - External modifications to files in the manifest since last session
281
+ - Changes to the implementation plan since last execution
282
+
283
+ Report any detected conflicts to the user before proceeding.
284
+
285
+ ## Token Usage Tracking
286
+
287
+ ### Collection
288
+ After each subagent invocation, record:
289
+ - Input tokens consumed
290
+ - Output tokens generated
291
+ - Cached tokens used (if available)
292
+
293
+ ### Aggregation
294
+ Maintain two levels of aggregation:
295
+ 1. **Total**: Sum across all agents and phases
296
+ 2. **By Agent**: Per-agent totals across all their invocations
297
+
298
+ ### Format
299
+
300
+ ```yaml
301
+ token_usage:
302
+ total_input: 15000
303
+ total_output: 8000
304
+ total_cached: 3000
305
+ by_agent:
306
+ coder:
307
+ input: 8000
308
+ output: 4000
309
+ cached: 2000
310
+ tester:
311
+ input: 7000
312
+ output: 4000
313
+ cached: 1000
314
+ ```
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: validation
3
+ description: Cross-cutting validation methodology for verifying phase outputs and project integrity
4
+ ---
5
+
6
+ # Validation Skill
7
+
8
+ Activate this skill when validating phase outputs during orchestration execution or when running standalone validation checks. This skill provides the pipeline, heuristics, and interpretation rules for verifying that changes meet quality standards.
9
+
10
+ ## Validation Pipeline
11
+
12
+ Execute validation steps in this order. Stop on the first blocking failure unless the user explicitly requests continuing.
13
+
14
+ ### Step 1: Build / Compile
15
+ Verify the project compiles without errors.
16
+
17
+ | Project Type | Command |
18
+ |-------------|---------|
19
+ | Node.js (TypeScript) | `npx tsc --noEmit` |
20
+ | Node.js (JavaScript) | N/A (skip) |
21
+ | Rust | `cargo build` |
22
+ | Go | `go build ./...` |
23
+ | Python | `python -m py_compile [files]` |
24
+ | Java (Maven) | `mvn compile` |
25
+ | Java (Gradle) | `./gradlew compileJava` |
26
+
27
+ ### Step 2: Lint / Format
28
+ Verify code meets style and quality standards.
29
+
30
+ | Project Type | Command |
31
+ |-------------|---------|
32
+ | Node.js | `npx eslint . && npx prettier --check .` |
33
+ | Rust | `cargo clippy && cargo fmt --check` |
34
+ | Go | `go vet ./... && gofmt -l .` |
35
+ | Python | `ruff check . && ruff format --check .` |
36
+ | Java | `mvn checkstyle:check` or `./gradlew checkstyleMain` |
37
+
38
+ ### Step 3: Unit Tests
39
+ Run unit tests to verify behavior preservation.
40
+
41
+ | Project Type | Command |
42
+ |-------------|---------|
43
+ | Node.js (Jest) | `npx jest` |
44
+ | Node.js (Vitest) | `npx vitest run` |
45
+ | Rust | `cargo test` |
46
+ | Go | `go test ./...` |
47
+ | Python (pytest) | `python -m pytest tests/` |
48
+ | Java (Maven) | `mvn test` |
49
+ | Java (Gradle) | `./gradlew test` |
50
+
51
+ ### Step 4: Integration Tests
52
+ Run integration tests if available and applicable.
53
+
54
+ Detect integration test presence by looking for:
55
+ - `tests/integration/`, `test/integration/`, or `**/integration_test*` directories/files
56
+ - Test files with `integration` in the name
57
+ - Test scripts in package.json (e.g., `test:integration`)
58
+
59
+ ### Step 5: Manual Verification
60
+ For changes that cannot be automatically validated, present a checklist to the user.
61
+
62
+ ## Project Type Detection
63
+
64
+ Detect the project type by checking for the presence of these files in the project root:
65
+
66
+ | Indicator File | Project Type |
67
+ |---------------|-------------|
68
+ | `package.json` | Node.js (check for `typescript` dep for TS) |
69
+ | `Cargo.toml` | Rust |
70
+ | `go.mod` | Go |
71
+ | `pyproject.toml` or `setup.py` | Python |
72
+ | `pom.xml` | Java (Maven) |
73
+ | `build.gradle` or `build.gradle.kts` | Java (Gradle) |
74
+ | `Gemfile` | Ruby |
75
+ | `*.csproj` or `*.sln` | .NET |
76
+
77
+ When multiple indicators are present, validate each project type independently.
78
+
79
+ ## Validation Result Interpretation
80
+
81
+ ### Pass
82
+ All executed validation steps completed with exit code 0. No errors or warnings that indicate broken functionality.
83
+
84
+ ### Fail (Blocking)
85
+ Any of the following constitute a blocking failure:
86
+ - Build/compile errors
87
+ - Lint errors (not warnings, unless the project treats warnings as errors)
88
+ - Test failures
89
+ - Type errors
90
+
91
+ ### Warn (Non-Blocking)
92
+ The following are recorded but do not block progression:
93
+ - Lint warnings (when not configured as errors)
94
+ - Deprecation notices
95
+ - Coverage decreases (unless coverage threshold is configured)
96
+ - Format-only issues (can be auto-fixed)
97
+
98
+ ## Validation Modes
99
+
100
+ The validation strictness is controlled by `MAESTRO_VALIDATION_STRICTNESS` (default: `normal`).
101
+
102
+ | Mode | Behavior |
103
+ |------|----------|
104
+ | `strict` | Warnings are treated as blocking failures. All lint warnings, deprecation notices, and coverage decreases block phase progression. |
105
+ | `normal` | Only errors block. Warnings are recorded but do not prevent phase completion. This is the default behavior described in the Pass/Fail/Warn sections above. |
106
+ | `lenient` | Nothing blocks automatically. All failures and warnings are recorded in session state and reported to the user, but phase progression continues. The user reviews the accumulated report at completion. |
107
+
108
+ ### Strictness Application
109
+
110
+ When evaluating each validation step:
111
+ 1. Run the validation command and capture the exit code and output
112
+ 2. Classify the result as Pass, Fail (Blocking), or Warn (Non-Blocking) using the standard criteria above
113
+ 3. Apply the strictness mode:
114
+ - `strict`: Fail (Blocking) AND Warn (Non-Blocking) both stop progression
115
+ - `normal`: Only Fail (Blocking) stops progression
116
+ - `lenient`: Record everything, stop nothing — append all results to session state and continue
117
+ 4. If strictness causes a result to be downgraded from blocking to non-blocking, note this in the validation output: "Warning recorded but not blocking (lenient mode)"
118
+
119
+ ## Post-Phase Validation
120
+
121
+ ### When to Validate
122
+ Run validation after:
123
+ - Every phase that creates or modifies source code
124
+ - Every parallel batch completion (validate the combined result)
125
+ - Before marking any phase as `completed`
126
+
127
+ ### When to Skip Validation
128
+ Skip validation when:
129
+ - The phase only modified documentation files
130
+ - The phase only produced read-only analysis (`architect`, `code-reviewer` reports)
131
+ - The user explicitly requests skipping validation
132
+
133
+ Record `skipped` with rationale in the phase validation result.
134
+
135
+ ## Manual Verification Checklist
136
+
137
+ For changes that cannot be automatically validated, present this checklist template:
138
+
139
+ ```
140
+ ### Manual Verification Required
141
+
142
+ The following changes require manual verification:
143
+
144
+ - [ ] [Description of what to verify]
145
+ - [ ] [Visual/UI changes look correct]
146
+ - [ ] [Integration with external service works]
147
+ - [ ] [Environment-specific behavior confirmed]
148
+
149
+ Please confirm these items are verified before I mark this phase as complete.
150
+ ```
151
+
152
+ Use manual verification for:
153
+ - UI/visual changes
154
+ - External service integrations
155
+ - Environment-specific configurations
156
+ - Performance improvements (require load testing)
157
+ - Security remediations (require penetration testing)
158
+
159
+ ## Incremental Validation Mode
160
+
161
+ When full pipeline validation is unnecessary, use targeted validation based on the type of changes in the completed phase:
162
+
163
+ ### Validation Scope by Change Type
164
+ - **Phase created new files only** (no existing files modified): Run lint + type check on the new files only. This provides fast feedback without running the full test suite against unchanged code.
165
+ - **Phase modified existing files**: Run the full test suite. Existing tests serve as behavior-preservation checks — any failure indicates a potential regression.
166
+ - **Phase touched configuration files** (build config, CI config, environment config, dependency manifests): Run the full pipeline (build + lint + type check + all tests). Configuration changes can have cascading effects across the entire project.
167
+ - **Phase only produced documentation or analysis**: Skip validation (record as `skipped` with rationale).
168
+
169
+ ### Scope Detection
170
+ Determine the change type automatically from the completing agent's Task Report:
171
+ 1. Parse Files Created and Files Modified lists
172
+ 2. Classify each file: source code, test code, configuration, documentation
173
+ 3. Apply the most comprehensive validation scope that matches any changed file type (e.g., if one config file and three source files changed, run the full pipeline because config was touched)
174
+
175
+ ## Validation Failure Diagnosis
176
+
177
+ When validation fails, provide a structured diagnosis to help the orchestrator decide next steps.
178
+
179
+ ### Diagnosis Protocol
180
+ 1. **Categorize the failure**: type error, lint error, test failure, build error, runtime error
181
+ 2. **Identify involved files**: Which files from the current phase appear in the error output?
182
+ 3. **Determine causality**: Is the failure caused by the current phase's changes, or is it a pre-existing issue?
183
+ - Check: Does the failure reference files modified in this phase?
184
+ - Check: Run validation against a clean snapshot while always restoring local state:
185
+ - `git stash push --include-untracked -m "maestro-causality-check"`
186
+ - `[validation command]` (capture exit code as `validation_exit`)
187
+ - `git stash pop` (run regardless of `validation_exit`)
188
+ - If `validation_exit` is non-zero in the clean snapshot, classify the failure as pre-existing.
189
+ - If `git stash pop` fails, mark the diagnosis as inconclusive until restoration conflicts are resolved.
190
+ 4. **Classify resolution path**:
191
+ - **Fixable by same agent**: The error is in files the agent owns, the fix is straightforward (missing import, type mismatch, lint violation). Re-delegate to the same agent with the error context.
192
+ - **Requires different agent**: The error is caused by an interface mismatch between phases. Identify which phase introduced the incompatibility.
193
+ - **Requires human input**: The error reveals an ambiguity in the design or plan that cannot be resolved without user guidance. Escalate with full context.
194
+
195
+ ### Diagnosis Output Format
196
+ ```
197
+ ### Validation Diagnosis
198
+ - **Failure Type**: [type error | lint error | test failure | build error]
199
+ - **Failing Files**: [list of files from current phase involved in the failure]
200
+ - **Root Cause**: [brief description of why validation failed]
201
+ - **Pre-existing**: [yes | no — was this failure present before this phase's changes?]
202
+ - **Resolution Path**: [re-delegate to same agent | escalate to user | requires cross-phase fix]
203
+ - **Recommended Action**: [specific next step with context to include in re-delegation or escalation]
204
+ ```
@@ -0,0 +1,113 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { atomicWriteSync } = require('../lib/io');
6
+
7
+ const DEFAULT_STATE_DIR = 'docs/maestro';
8
+
9
+ function validateRelativePath(filePath) {
10
+ if (path.isAbsolute(filePath)) {
11
+ throw new Error('Path must be relative');
12
+ }
13
+ const segments = filePath.split(/[/\\]/);
14
+ if (segments.includes('..')) {
15
+ throw new Error('Path traversal not allowed');
16
+ }
17
+ }
18
+
19
+ function validateContainment(absolutePath, rootDir) {
20
+ let resolved = path.resolve(absolutePath);
21
+ let resolvedRoot = path.resolve(rootDir);
22
+ try { resolved = fs.realpathSync(resolved); } catch {}
23
+ try { resolvedRoot = fs.realpathSync(resolvedRoot); } catch {}
24
+ const rootPrefix = resolvedRoot + path.sep;
25
+ if (!resolved.startsWith(rootPrefix) && resolved !== resolvedRoot) {
26
+ throw new Error('state_dir must be within the project root');
27
+ }
28
+ return resolved;
29
+ }
30
+
31
+ function resolveStateDirPath(cwd, stateDirOverride) {
32
+ const stateDir = stateDirOverride || process.env.MAESTRO_STATE_DIR || DEFAULT_STATE_DIR;
33
+ const base = cwd || process.cwd();
34
+
35
+ if (path.isAbsolute(stateDir)) {
36
+ return validateContainment(stateDir, base);
37
+ }
38
+
39
+ validateRelativePath(stateDir);
40
+ return path.join(base, stateDir);
41
+ }
42
+
43
+ function resolveActiveSessionPath(cwd) {
44
+ return path.join(resolveStateDirPath(cwd), 'state', 'active-session.md');
45
+ }
46
+
47
+ function hasActiveSession(cwd) {
48
+ try {
49
+ const sessionPath = resolveActiveSessionPath(cwd);
50
+ return fs.existsSync(sessionPath);
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+
56
+ function readState(relativePath, basePath) {
57
+ validateRelativePath(relativePath);
58
+ const fullPath = path.join(basePath, relativePath);
59
+ return fs.readFileSync(fullPath, 'utf8');
60
+ }
61
+
62
+ function writeState(relativePath, content, basePath) {
63
+ validateRelativePath(relativePath);
64
+ const fullPath = path.join(basePath, relativePath);
65
+ atomicWriteSync(fullPath, content);
66
+ }
67
+
68
+ function ensureWorkspace(stateDir, basePath) {
69
+ const fullBase = path.isAbsolute(stateDir)
70
+ ? validateContainment(stateDir, basePath)
71
+ : (() => {
72
+ validateRelativePath(stateDir);
73
+ return path.join(basePath, stateDir);
74
+ })();
75
+ fs.mkdirSync(fullBase, { recursive: true, mode: 0o700 });
76
+ const stats = fs.lstatSync(fullBase);
77
+ if (stats.isSymbolicLink()) {
78
+ throw new Error('STATE_DIR must not be a symlink');
79
+ }
80
+ const dirs = [
81
+ path.join(fullBase, 'state'),
82
+ path.join(fullBase, 'state', 'archive'),
83
+ path.join(fullBase, 'plans'),
84
+ path.join(fullBase, 'plans', 'archive'),
85
+ ];
86
+ for (const dir of dirs) {
87
+ try {
88
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
89
+ } catch {
90
+ throw new Error('Failed to create workspace directory');
91
+ }
92
+ try {
93
+ fs.accessSync(dir, fs.constants.W_OK);
94
+ } catch {
95
+ throw new Error('Workspace directory not writable');
96
+ }
97
+ }
98
+ const stateGitignore = path.join(fullBase, 'state', '.gitignore');
99
+ try {
100
+ fs.writeFileSync(stateGitignore, 'active-session.md\narchive/\n', { mode: 0o600, flag: 'wx' });
101
+ } catch {}
102
+ }
103
+
104
+ module.exports = {
105
+ DEFAULT_STATE_DIR,
106
+ validateContainment,
107
+ resolveStateDirPath,
108
+ resolveActiveSessionPath,
109
+ hasActiveSession,
110
+ readState,
111
+ writeState,
112
+ ensureWorkspace,
113
+ };