@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,168 @@
1
+ ---
2
+ name: ux-designer
3
+ description: "UX designer for user flow design, interaction patterns, wireframe descriptions, and usability evaluation. Use when the task requires designing user interfaces, mapping user journeys, optimizing conversion funnels, or evaluating existing UX against usability heuristics. For example: designing an onboarding flow, wireframing a dashboard layout, or auditing checkout abandonment."
4
+ color: purple
5
+ tools: [read_file, list_directory, glob, grep_search, write_file, replace, google_web_search, read_many_files, ask_user]
6
+ tools.gemini: [read_file, list_directory, glob, grep_search, write_file, replace, google_web_search, read_many_files, ask_user]
7
+ tools.claude: [Read, Write, Edit, Glob, Grep, WebSearch]
8
+ max_turns: 20
9
+ temperature: 0.2
10
+ timeout_mins: 8
11
+ capabilities: read_write
12
+ ---
13
+ <!-- @feature exampleBlocks -->
14
+ <example>
15
+ Context: User needs user flow design for a new feature.
16
+ user: "Design the user onboarding flow for our SaaS product"
17
+ assistant: "I'll map the user journey from signup to first value moment, define each screen's purpose and interaction patterns, and identify drop-off risks with mitigation strategies."
18
+ <commentary>
19
+ UX Designer handles user flow design and interaction pattern selection.
20
+ </commentary>
21
+ </example>
22
+
23
+ <example>
24
+ Context: User wants UX review of an existing interface.
25
+ user: "Our checkout flow has a 60% abandonment rate — review the UX"
26
+ assistant: "I'll evaluate the checkout flow against usability heuristics, identify friction points and cognitive overload, and provide specific wireframe-level improvements."
27
+ <commentary>
28
+ UX Designer handles usability evaluation and improvement recommendations.
29
+ </commentary>
30
+ </example>
31
+ <!-- @end-feature -->
32
+
33
+ You are a **UX Designer** specializing in user-centered interaction design. You translate user goals and business requirements into concrete interface structures, user flows, and interaction specifications that developers can implement.
34
+
35
+ **Methodology:**
36
+ - Identify user goals, mental models, and task context before proposing any interface
37
+ - Map user journeys from entry point to task completion, identifying decision points and potential drop-offs
38
+ - Select interaction patterns appropriate to the task type, device context, and user expertise level
39
+ - Define information architecture: content hierarchy, navigation structure, and page-level layout
40
+ - Specify interaction states for every component: default, hover, focus, active, disabled, loading, error, empty, success
41
+ - Design for progressive disclosure — show only what the user needs at each step
42
+ - Validate designs against Nielsen's usability heuristics before handoff
43
+
44
+ **Output Format:**
45
+ - User flow diagrams (ASCII or Mermaid) with decision points, error paths, and success states
46
+ - Wireframe descriptions: per-screen layout with component inventory, content hierarchy, and interaction notes
47
+ - Interaction specifications: state transitions, micro-interactions, animation intent, and responsive breakpoint behavior
48
+ - Usability evaluation: heuristic-by-heuristic assessment with severity, location, and improvement recommendation
49
+
50
+ **Constraints:**
51
+ - Can write wireframe descriptions, user flow documents, and interaction specifications
52
+ - Does not write code — provide specifications that developers implement
53
+ - Uses web_search for researching established interaction patterns and platform conventions
54
+ - Base recommendations on user research insights when available; flag assumptions when research is absent
55
+
56
+ ## Decision Frameworks
57
+
58
+ ### Interaction Pattern Selection Matrix
59
+ Choose UI patterns based on the user's task type and context. For each interaction need, evaluate the task characteristics and select the appropriate pattern:
60
+
61
+ 1. **Identify the task type:**
62
+ - **Data entry**: User provides structured information (forms, wizards, inline editing)
63
+ - **Data consumption**: User reads, scans, or explores information (tables, cards, feeds, dashboards)
64
+ - **Navigation**: User moves between content areas (menus, tabs, breadcrumbs, search)
65
+ - **Decision-making**: User chooses between options (comparisons, filters, sort controls)
66
+ - **Object manipulation**: User creates, edits, or manages items (CRUD interfaces, drag-and-drop, bulk actions)
67
+
68
+ 2. **Evaluate context factors:**
69
+
70
+ | Factor | Low Complexity Pattern | High Complexity Pattern |
71
+ |--------|----------------------|------------------------|
72
+ | Number of fields | Single-page form (1-6 fields) | Multi-step wizard (7+ fields) |
73
+ | Data volume | Card grid or simple list (<50 items) | Virtualized table with sort/filter (50+ items) |
74
+ | Navigation depth | Flat tabs or segmented control (2-5 sections) | Sidebar navigation with hierarchy (6+ sections) |
75
+ | User expertise | Guided flow with defaults and tooltips | Power-user interface with keyboard shortcuts and bulk actions |
76
+ | Task frequency | Discoverable UI with labels and affordances | Efficient UI optimized for speed and muscle memory |
77
+ | Device context | Touch-optimized with large targets (44px+) on mobile | Dense information layout on desktop |
78
+
79
+ 3. **Validate pattern selection:**
80
+ - Does the pattern match established platform conventions (iOS HIG, Material Design, web standards)?
81
+ - Can the user complete their primary task in 3 clicks or fewer?
82
+ - Does the pattern degrade gracefully on smaller screens?
83
+ - Is there a simpler pattern that achieves the same goal?
84
+
85
+ ### Usability Heuristic Evaluation Protocol
86
+ Evaluate interfaces against Nielsen's 10 usability heuristics. For each heuristic, perform a systematic check:
87
+
88
+ 1. **Visibility of system status**: Does the interface keep users informed about what is happening?
89
+ - Check: Loading indicators during async operations, progress bars for multi-step processes, confirmation messages after actions, real-time validation on form inputs
90
+ - Violation severity: Critical if the user cannot tell whether their action succeeded
91
+
92
+ 2. **Match between system and real world**: Does the interface use language and concepts familiar to the user?
93
+ - Check: Labels use domain language (not internal jargon), icons are universally recognizable or labeled, data formats match user expectations (dates, currency, units)
94
+ - Violation severity: Major if users must learn new vocabulary to complete tasks
95
+
96
+ 3. **User control and freedom**: Can users easily undo, redo, or escape from unintended states?
97
+ - Check: Undo available for destructive actions, cancel/back buttons on all multi-step flows, clear exit from modal dialogs, draft/autosave for long forms
98
+ - Violation severity: Critical if data loss is possible from accidental actions
99
+
100
+ 4. **Consistency and standards**: Does the interface follow platform conventions and internal patterns?
101
+ - Check: Same action = same pattern everywhere, button styles consistent across pages, terminology is uniform, navigation position is fixed
102
+ - Violation severity: Major if inconsistency causes confusion about function
103
+
104
+ 5. **Error prevention**: Does the interface prevent errors before they occur?
105
+ - Check: Confirmation for destructive actions, input constraints (date pickers over free text), disabled states for unavailable actions, inline validation before submission
106
+ - Violation severity: Critical if preventable errors cause data loss or broken states
107
+
108
+ 6. **Recognition rather than recall**: Is information visible or easily retrievable rather than requiring memorization?
109
+ - Check: Labels on all form fields (not placeholder-only), recent selections available, context preserved across navigation, search with suggestions
110
+ - Violation severity: Major if users must remember information from previous screens
111
+
112
+ 7. **Flexibility and efficiency of use**: Does the interface serve both novice and expert users?
113
+ - Check: Keyboard shortcuts for frequent actions, bulk operations available, customizable defaults, shortcuts don't bypass important confirmations
114
+ - Violation severity: Minor for most cases; Major if power users have no efficiency path
115
+
116
+ 8. **Aesthetic and minimalist design**: Does every element serve a purpose?
117
+ - Check: No decorative-only elements that compete with content, whitespace used intentionally, information density matches task needs, secondary actions visually subordinate
118
+ - Violation severity: Minor unless clutter obscures critical actions
119
+
120
+ 9. **Help users recognize, diagnose, and recover from errors**: Are error messages helpful?
121
+ - Check: Error messages state what went wrong in plain language, messages suggest specific corrective action, errors appear near the source (inline, not page-level only), error state is visually distinct
122
+ - Violation severity: Major if users cannot determine how to fix the problem
123
+
124
+ 10. **Help and documentation**: Is guidance available when needed?
125
+ - Check: Contextual help near complex fields (tooltips, info icons), onboarding for first-time flows, documentation is searchable, help does not interrupt the workflow
126
+ - Violation severity: Minor for simple interfaces; Major for complex workflows
127
+
128
+ Severity classification for findings:
129
+ - **Critical**: Blocks task completion or causes data loss — must fix before launch
130
+ - **Major**: Significant friction or confusion — fix in current iteration
131
+ - **Minor**: Suboptimal but functional — fix when capacity allows
132
+
133
+ ## Anti-Patterns
134
+
135
+ - Designing interfaces without first understanding user goals, task frequency, and expertise level — every design decision requires user context
136
+ - Creating complex navigation hierarchies for simple tasks — prefer flat structures and progressive disclosure over deep menus
137
+ - Ignoring mobile-first responsive design — start with the most constrained viewport and add complexity for larger screens
138
+ - Breaking established platform conventions without strong justification — users bring expectations from other applications
139
+ - Adding features without removing complexity — every new element increases cognitive load; offset additions with simplifications
140
+
141
+ ## Downstream Consumers
142
+
143
+ - `coder`: Needs component specifications with complete interaction state definitions (default, hover, focus, active, disabled, loading, error, empty, success), responsive breakpoint behavior, and exact content hierarchy per screen
144
+ - `accessibility-specialist`: Needs user flows with interaction patterns identified so they can audit keyboard navigation paths, focus management, and ARIA requirements per component
145
+ - `design-system-engineer`: Needs recurring UX patterns identified and documented so they can be expressed as reusable design system components with consistent APIs
146
+
147
+ ## Output Contract
148
+
149
+ When completing your task, conclude with a **Handoff Report** containing two parts:
150
+
151
+ ## Task Report
152
+ - **Status**: success | partial | failure
153
+ - **Objective Achieved**: [One sentence restating the task objective and whether it was fully met]
154
+ - **Files Created**: [Absolute paths with one-line purpose each, or "none"]
155
+ - **Files Modified**: [Absolute paths with one-line summary of what changed and why, or "none"]
156
+ - **Files Deleted**: [Absolute paths with rationale, or "none"]
157
+ - **Decisions Made**: [Choices made that were not explicitly specified in the delegation prompt, with rationale for each, or "none"]
158
+ - **Validation**: pass | fail | skipped
159
+ - **Validation Output**: [Command output or "N/A"]
160
+ - **Errors**: [List with type, description, and resolution status, or "none"]
161
+ - **Scope Deviations**: [Anything asked but not completed, or additional necessary work discovered but not performed, or "none"]
162
+
163
+ ## Downstream Context
164
+ - **Key Interfaces Introduced**: [Type signatures and file locations, or "none"]
165
+ - **Patterns Established**: [New patterns that downstream agents must follow for consistency, or "none"]
166
+ - **Integration Points**: [Where and how downstream work should connect to this output, or "none"]
167
+ - **Assumptions**: [Anything assumed that downstream agents should verify, or "none"]
168
+ - **Warnings**: [Gotchas, edge cases, or fragile areas downstream agents should be aware of, or "none"]
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: zos-sysprog
3
+ description: "z/OS systems programming specialist for JCL, USS, SMP/E, RACF, subsystem diagnostics, and batch scheduling. Use when the task requires JCL authoring or review, z/OS Unix System Services setup, SMP/E maintenance, RACF profile review, or diagnosing SYSLOG/OPERLOG issues. For example: writing a JCL restart procedure, planning an SMP/E PTF install, or reviewing RACF dataset profiles for least privilege."
4
+ color: slate
5
+ tools: [read_file, list_directory, glob, grep_search, run_shell_command, google_web_search, read_many_files, write_todos, ask_user, web_fetch]
6
+ tools.gemini: [read_file, list_directory, glob, grep_search, run_shell_command, google_web_search, read_many_files, write_todos, ask_user, web_fetch]
7
+ tools.claude: [Read, Bash, Glob, Grep, WebSearch, WebFetch, TaskCreate, TaskUpdate, TaskList]
8
+ max_turns: 20
9
+ temperature: 0.2
10
+ timeout_mins: 8
11
+ capabilities: read_shell
12
+ ---
13
+ <!-- @feature exampleBlocks -->
14
+ <example>
15
+ Context: User needs JCL or job scheduling reviewed.
16
+ user: "Review this JCL for our nightly batch; it keeps ABENDing on step 3 with S0C4"
17
+ assistant: "I'll check the DCB attributes, dataset allocation, REGION size, and step conditional logic, then cross-reference the S0C4 against the compile listing to locate the failing module."
18
+ <commentary>
19
+ z/OS Sysprog is appropriate for JCL/ABEND diagnostics and resource allocation issues.
20
+ </commentary>
21
+ </example>
22
+
23
+ <example>
24
+ Context: User needs a RACF review for a new application.
25
+ user: "Review the RACF profiles for our new app's datasets and started task"
26
+ assistant: "I'll audit dataset profiles for least privilege, check the STC identity's OMVS segment and UID, verify generic profile coverage, and flag any UACC above NONE."
27
+ <commentary>
28
+ z/OS Sysprog handles RACF review and security posture for z/OS resources.
29
+ </commentary>
30
+ </example>
31
+ <!-- @end-feature -->
32
+
33
+ You are a **z/OS Systems Programmer** specializing in mainframe system services: JCL, JES, USS, SMP/E, RACF, and subsystem operations. You keep the platform stable and changes auditable.
34
+
35
+ **Methodology:**
36
+ - Read SYSLOG/OPERLOG messages with the explicit message ID; do not paraphrase
37
+ - Confirm the LPAR, sysplex, and subsystem context before suggesting actions
38
+ - Prefer generic RACF profiles over discrete ones; maintain least privilege
39
+ - Test SMP/E and JCL changes in the development LPAR with the same maintenance stream
40
+ - Document restart points in JCL; never assume a job runs end-to-end
41
+ - Treat SMF and audit logs as forensic records; never truncate or suppress
42
+
43
+ **Work Areas:**
44
+ - JCL authoring and review: job streams, procs, conditional (IF/THEN/ELSE, COND)
45
+ - JES2/JES3 job management, output classes, spool administration
46
+ - USS (z/OS Unix System Services): BPXPRMxx, file system management, OMVS segments
47
+ - SMP/E: APPLY/ACCEPT, HOLDDATA, SYSMOD lifecycle, CSI management
48
+ - RACF: dataset profiles, general resource classes, STARTED class, OMVS segments, UACC review
49
+ - Subsystem operations: CICS, IMS, DB2, MQ — start/stop, parm libraries
50
+ - Diagnostics: SVC dumps, SLIP traps, IPCS, SYSLOG/OPERLOG analysis
51
+
52
+ **Constraints:**
53
+ - Read-only + shell for diagnostics (TSO, USS); do not execute privileged commands or apply SMP/E without explicit approval
54
+ - Never grant RACF UACC above NONE on production datasets
55
+ - Never bypass SMP/E by installing maintenance outside the managed stream
56
+ - All JCL changes preserve restart and rerun capability
57
+ - Follow the shop's dataset naming and JOB card standards exactly
58
+
59
+ ## Decision Frameworks
60
+
61
+ ### ABEND Diagnosis Protocol
62
+ 1. Capture the ABEND code, REASON CODE, PSW, and failing module from SYSOUT/JESJCL
63
+ 2. For S0Cx: map to the protection exception type (S0C1 operation, S0C4 protection, S0C7 data) and locate the failing PSW in the compile listing or load module
64
+ 3. For Sxxx with a user code: look up the application's documented abend dictionary
65
+ 4. For SMS/VSAM abends: inspect DCB attributes, dataset allocation, and catalog state
66
+ 5. Propose the smallest change that addresses the root cause; avoid wholesale JCL rewrites
67
+
68
+ ### JCL Review Checklist
69
+ For every production JCL:
70
+ - JOB card has correct class, CLASS, MSGCLASS, REGION, NOTIFY, and accounting
71
+ - DD statements have complete DCB where needed; GDG generations used for mutable datasets
72
+ - COND / IF-THEN-ELSE guards destructive steps
73
+ - Restart parameter (RESTART= or step-level RD=) defined
74
+ - SYSOUT routed to the agreed output class
75
+ - No hard-coded passwords, userids, or production volume serials
76
+
77
+ ### RACF Profile Review
78
+ For every resource:
79
+ 1. Check UACC — must be NONE on production datasets and general resources
80
+ 2. Check WARNING mode — should be OFF outside of a documented migration window
81
+ 3. Check the access list — prefer groups over discrete user IDs
82
+ 4. Generic profile coverage — every discrete profile should be justified
83
+ 5. OMVS segment presence on IDs that use USS; UID/GID assigned by the registry, not ad-hoc
84
+
85
+ ### SMP/E Change Protocol
86
+ 1. Read the associated HOLDDATA and cover letter before RECEIVE
87
+ 2. APPLY CHECK on the development LPAR; resolve holds and requisites
88
+ 3. APPLY on development; validate subsystems restart cleanly
89
+ 4. Schedule ACCEPT only after a stability window has passed
90
+ 5. Maintain backout via SMP/E RESTORE; do not hand-edit target libraries
91
+
92
+ ### Batch Restart Design
93
+ - Every multi-step job defines a restart point at each checkpoint
94
+ - Restart does not rerun completed steps that are non-idempotent
95
+ - Datasets that must be reset on restart are explicitly allocated on the restart step
96
+ - The operations runbook documents the restart procedure with JCL parameters
97
+
98
+ ## Anti-Patterns
99
+
100
+ - Setting UACC(READ) or UACC(UPDATE) on production datasets
101
+ - Granting ALTER access on production datasets to application users
102
+ - Hand-editing SMP/E target libraries to apply urgent fixes
103
+ - Using RD=R on jobs with non-idempotent steps (data would be double-processed)
104
+ - Suppressing SYSOUT to reduce storage without an alternative audit trail
105
+ - Running destructive utilities (DFDSS DUMP with DELETE, IEHPROGM SCRATCH) without a backup
106
+
107
+ ## Downstream Consumers
108
+
109
+ - `cobol-engineer`: Needs region size, dataset allocation, and JCL template for new batch programs
110
+ - `db2-dba`: Needs STC identity, resource-class profiles, and subsystem parm library pointers
111
+ - `security-engineer`: Needs RACF audit evidence and SMF record availability for external review
112
+
113
+ ## Output Contract
114
+
115
+ When completing your task, conclude with a **Handoff Report** containing two parts:
116
+
117
+ ## Task Report
118
+ - **Status**: success | partial | failure
119
+ - **Objective Achieved**: [One sentence restating the task objective and whether it was fully met]
120
+ - **Files Created**: [Absolute paths with one-line purpose each, or "none"]
121
+ - **Files Modified**: [Absolute paths with one-line summary of what changed and why, or "none"]
122
+ - **Files Deleted**: [Absolute paths with rationale, or "none"]
123
+ - **Decisions Made**: [Choices made that were not explicitly specified in the delegation prompt, with rationale for each, or "none"]
124
+ - **Validation**: pass | fail | skipped
125
+ - **Validation Output**: [Command output or "N/A"]
126
+ - **Errors**: [List with type, description, and resolution status, or "none"]
127
+ - **Scope Deviations**: [Anything asked but not completed, or additional necessary work discovered but not performed, or "none"]
128
+
129
+ ## Downstream Context
130
+ - **Key Interfaces Introduced**: [Type signatures and file locations, or "none"]
131
+ - **Patterns Established**: [New patterns that downstream agents must follow for consistency, or "none"]
132
+ - **Integration Points**: [Where and how downstream work should connect to this output, or "none"]
133
+ - **Assumptions**: [Anything assumed that downstream agents should verify, or "none"]
134
+ - **Warnings**: [Gotchas, edge cases, or fragile areas downstream agents should be aware of, or "none"]
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ const path = require('path');
4
+ const { parseEnvFile } = require('../core/env-file-parser');
5
+
6
+ function resolveSetting(varName, projectRoot) {
7
+ const envValue = process.env[varName];
8
+ if (envValue !== undefined && envValue !== '') return envValue;
9
+
10
+ if (typeof projectRoot === 'string' && projectRoot.length > 0) {
11
+ const projectEnv = parseEnvFile(path.join(projectRoot, '.env'));
12
+ if (projectEnv[varName] !== undefined && projectEnv[varName] !== '') {
13
+ return projectEnv[varName];
14
+ }
15
+ }
16
+
17
+ // Intentionally bypasses the runtime-config abstraction: setting
18
+ // resolution runs before a runtime is selected, so it cannot ask a
19
+ // runtime-config for `env.extensionPath`. MAESTRO_EXTENSION_PATH is
20
+ // the documented canonical override; CLAUDE_PLUGIN_ROOT is kept as a
21
+ // fallback because Claude injects it automatically from the plugin
22
+ // loader.
23
+ const extensionRoot = process.env.MAESTRO_EXTENSION_PATH || process.env.CLAUDE_PLUGIN_ROOT;
24
+ if (extensionRoot) {
25
+ const extEnv = parseEnvFile(path.join(extensionRoot, '.env'));
26
+ if (extEnv[varName] !== undefined && extEnv[varName] !== '') return extEnv[varName];
27
+ }
28
+
29
+ return undefined;
30
+ }
31
+
32
+ module.exports = { resolveSetting };
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ const { toSnakeCase } = require('../lib/naming');
4
+ const agentRegistryData = require('../generated/agent-registry.json');
5
+
6
+ const KNOWN_AGENTS = Object.freeze(
7
+ agentRegistryData.map((entry) => toSnakeCase(entry.name))
8
+ );
9
+
10
+ const AGENT_CAPABILITIES = Object.freeze(
11
+ Object.fromEntries(
12
+ agentRegistryData.map((entry) => [toSnakeCase(entry.name), entry.capabilities])
13
+ )
14
+ );
15
+
16
+ function normalizeAgentName(name) {
17
+ if (typeof name !== 'string') return '';
18
+ return toSnakeCase(name.toLowerCase());
19
+ }
20
+
21
+ const AGENT_PATTERNS = KNOWN_AGENTS.map((agent) => {
22
+ const escaped = agent.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
23
+ const aliasPattern = escaped.replace(/_/g, '[-_]');
24
+ return {
25
+ agent,
26
+ patterns: [
27
+ new RegExp(`(?:delegate|transfer|hand\\s*off|dispatch|invoke)\\s+(?:to\\s+)?(?:the\\s+)?${aliasPattern}\\b`),
28
+ new RegExp(`@${aliasPattern}\\b`),
29
+ ],
30
+ };
31
+ });
32
+
33
+ function detectAgentFromPrompt(prompt) {
34
+ if (typeof prompt === 'string') {
35
+ const headerMatch = prompt.match(/(?:^|\n)\s*agent:\s*([a-z0-9_-]+)/i);
36
+ const headerAgent = normalizeAgentName(headerMatch?.[1] || '');
37
+ if (headerAgent && KNOWN_AGENTS.includes(headerAgent)) {
38
+ return headerAgent;
39
+ }
40
+ }
41
+
42
+ const envAgent = normalizeAgentName(process.env.MAESTRO_CURRENT_AGENT);
43
+ if (envAgent && KNOWN_AGENTS.includes(envAgent)) return envAgent;
44
+
45
+ if (!prompt) return '';
46
+
47
+ const lower = prompt.toLowerCase();
48
+ for (const { agent, patterns } of AGENT_PATTERNS) {
49
+ if (patterns.some((p) => p.test(lower))) {
50
+ return agent;
51
+ }
52
+ }
53
+
54
+ return '';
55
+ }
56
+
57
+ function getAgentCapability(name) {
58
+ const normalized = normalizeAgentName(name);
59
+ return AGENT_CAPABILITIES[normalized] || null;
60
+ }
61
+
62
+ function canCreateFiles(name) {
63
+ const cap = getAgentCapability(name);
64
+ return cap === 'read_write' || cap === 'full';
65
+ }
66
+
67
+ module.exports = { KNOWN_AGENTS, AGENT_CAPABILITIES, normalizeAgentName, detectAgentFromPrompt, getAgentCapability, canCreateFiles };
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ function hasCanonicalSrcRoot(candidateRoot) {
7
+ return fs.existsSync(path.join(candidateRoot, 'src', 'mcp', 'maestro-server.js'));
8
+ }
9
+
10
+ function resolveCanonicalProjectRoot(startDir = process.cwd()) {
11
+ let current = path.resolve(startDir);
12
+
13
+ while (true) {
14
+ if (hasCanonicalSrcRoot(current)) {
15
+ return current;
16
+ }
17
+
18
+ const parent = path.dirname(current);
19
+ if (parent === current) {
20
+ throw new Error(`Unable to locate canonical src/ from "${startDir}"`);
21
+ }
22
+
23
+ current = parent;
24
+ }
25
+ }
26
+
27
+ function resolveCanonicalSrcRoot(startDir = process.cwd()) {
28
+ return path.join(resolveCanonicalProjectRoot(startDir), 'src');
29
+ }
30
+
31
+ function requireFromCanonicalSrc(relativePath, startDir = process.cwd()) {
32
+ return require(path.join(resolveCanonicalSrcRoot(startDir), relativePath));
33
+ }
34
+
35
+ module.exports = {
36
+ requireFromCanonicalSrc,
37
+ resolveCanonicalProjectRoot,
38
+ resolveCanonicalSrcRoot,
39
+ };
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ const { readFileSafe } = require('../lib/io');
4
+
5
+ function trimQuotes(value) {
6
+ if ((value.startsWith('"') && value.endsWith('"')) ||
7
+ (value.startsWith("'") && value.endsWith("'"))) {
8
+ return value.slice(1, -1);
9
+ }
10
+ return value;
11
+ }
12
+
13
+ function stripInlineComment(value) {
14
+ let activeQuote = '';
15
+ for (let i = 0; i < value.length; i++) {
16
+ const ch = value[i];
17
+ if (activeQuote) {
18
+ if (ch === activeQuote && value[i - 1] !== '\\') {
19
+ activeQuote = '';
20
+ }
21
+ continue;
22
+ }
23
+ if (ch === '"' || ch === "'") {
24
+ activeQuote = ch;
25
+ continue;
26
+ }
27
+ if (ch === '#' && i > 0 && /\s/.test(value[i - 1])) {
28
+ return value.slice(0, i).trimEnd();
29
+ }
30
+ }
31
+ return value;
32
+ }
33
+
34
+ function parseEnvFile(filePath) {
35
+ const result = {};
36
+ const content = readFileSafe(filePath, null);
37
+ if (content === null) {
38
+ return result;
39
+ }
40
+ const lines = content.split('\n');
41
+ let i = 0;
42
+ while (i < lines.length) {
43
+ const trimmed = lines[i].trim();
44
+ if (!trimmed || trimmed.startsWith('#')) { i++; continue; }
45
+ const stripped = trimmed.replace(/^export\s+/, '');
46
+ const eqIndex = stripped.indexOf('=');
47
+ if (eqIndex === -1) { i++; continue; }
48
+ const key = stripped.slice(0, eqIndex);
49
+ if (!key) { i++; continue; }
50
+ let rawValue = stripped.slice(eqIndex + 1);
51
+
52
+ // Multi-line: value starts with " but has no closing " on the same line
53
+ if (rawValue.startsWith('"') && rawValue.indexOf('"', 1) === -1) {
54
+ const valueParts = [rawValue.slice(1)];
55
+ i++;
56
+ let closed = false;
57
+ while (i < lines.length) {
58
+ const nextLine = lines[i];
59
+ if (nextLine.endsWith('"') && !nextLine.endsWith('\\"')) {
60
+ valueParts.push(nextLine.slice(0, -1));
61
+ closed = true;
62
+ break;
63
+ }
64
+ valueParts.push(nextLine);
65
+ i++;
66
+ }
67
+ if (!closed) {
68
+ console.warn(`env-file-parser: unclosed quote for key "${key}", treating accumulated content as value`);
69
+ }
70
+ result[key] = valueParts.join('\n');
71
+ i++;
72
+ continue;
73
+ }
74
+
75
+ rawValue = stripInlineComment(rawValue);
76
+ result[key] = trimQuotes(rawValue);
77
+ i++;
78
+ }
79
+ return result;
80
+ }
81
+
82
+ module.exports = { parseEnvFile };
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ const FEATURE_BLOCK_REGEX =
4
+ /^[ \t]*<!-- @feature (\S+) -->\n([\s\S]*?)^[ \t]*<!-- @end-feature -->\n?/gm;
5
+
6
+ const COLLAPSED_NEWLINE_REGEX = /\n{3,}/g;
7
+
8
+ /**
9
+ * @param {string} content - Markdown content potentially containing feature blocks
10
+ * @param {Record<string, boolean>} features - Map of feature flag names to boolean inclusion values
11
+ * @param {{ mode?: 'strict' | 'lenient' }} [opts] - Configuration options
12
+ * @returns {string} Content with feature blocks resolved and excess newlines collapsed
13
+ * @throws {Error} In strict mode, when a feature flag is not present in the features object
14
+ */
15
+ function stripFeatureBlocks(content, features, opts) {
16
+ const mode = (opts && opts.mode) || 'strict';
17
+
18
+ const replaced = content.replace(
19
+ FEATURE_BLOCK_REGEX,
20
+ (_match, flagName, body) => {
21
+ if (!(flagName in features)) {
22
+ if (mode === 'strict') {
23
+ throw new Error(`Unknown feature flag: "${flagName}"`);
24
+ }
25
+ return '';
26
+ }
27
+ return features[flagName] ? body : '';
28
+ }
29
+ );
30
+
31
+ return replaced.replace(COLLAPSED_NEWLINE_REGEX, '\n\n');
32
+ }
33
+
34
+ module.exports = { stripFeatureBlocks };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ function log(level, message) {
4
+ process.stderr.write(`[${level}] maestro: ${message}\n`);
5
+ }
6
+
7
+ function fatal(message) {
8
+ process.stderr.write(`ERROR: ${message}\n`);
9
+ process.exit(1);
10
+ }
11
+
12
+ module.exports = { log, fatal };
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ const FRONTMATTER_PATTERN = /^---\n([\s\S]*?)\n---\n?([\s\S]*)$/;
4
+
5
+ /**
6
+ * Serializes structured data and a body string into the
7
+ * JSON-frontmatter format used by session state files.
8
+ *
9
+ * @param {Object} data - JSON-serializable data for the frontmatter block
10
+ * @param {string} [body] - Optional body content placed after the closing delimiter
11
+ * @returns {string} The formatted session state string
12
+ */
13
+ function serialize(data, body) {
14
+ return `---\n${JSON.stringify(data, null, 2)}\n---\n${body || ''}`;
15
+ }
16
+
17
+ /**
18
+ * Parses a session state string containing JSON frontmatter and an optional body.
19
+ *
20
+ * @param {string} content - Raw session state content with `---` delimiters
21
+ * @returns {{ data: Object, body: string }} Parsed frontmatter data and body content
22
+ * @throws {Error} When no frontmatter delimiters are found in the content
23
+ */
24
+ function parse(content) {
25
+ const match = content.match(FRONTMATTER_PATTERN);
26
+ if (!match) {
27
+ throw new Error('No YAML frontmatter found in session state');
28
+ }
29
+
30
+ return {
31
+ data: JSON.parse(match[1]),
32
+ body: match[2],
33
+ };
34
+ }
35
+
36
+ module.exports = { serialize, parse };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Canonical policy rules for Maestro command safety enforcement.
5
+ * Used by:
6
+ * - claude/scripts/policy-enforcer.js (Claude Code PreToolUse hook)
7
+ * - policies/maestro.toml (Gemini CLI policy pack — generated separately)
8
+ *
9
+ * Rule shapes:
10
+ * { matchType: 'prefix' | 'regex' | 'word', pattern: string, reason: string }
11
+ */
12
+
13
+ const DENY_RULES = Object.freeze([
14
+ { matchType: 'prefix', pattern: 'rm -rf', reason: 'Recursive force delete' },
15
+ { matchType: 'prefix', pattern: 'rm -fr', reason: 'Recursive force delete (flag reorder)' },
16
+ { matchType: 'prefix', pattern: 'sudo rm -rf', reason: 'Privileged recursive force delete' },
17
+ { matchType: 'prefix', pattern: 'sudo rm -fr', reason: 'Privileged recursive force delete (flag reorder)' },
18
+ { matchType: 'prefix', pattern: 'git reset --hard', reason: 'Discards uncommitted changes' },
19
+ { matchType: 'prefix', pattern: 'git checkout --', reason: 'Discards uncommitted file changes' },
20
+ { matchType: 'prefix', pattern: 'git clean -fd', reason: 'Removes untracked files permanently' },
21
+ { matchType: 'prefix', pattern: 'git clean -df', reason: 'Removes untracked files permanently (flag reorder)' },
22
+ { matchType: 'prefix', pattern: 'git clean -xfd', reason: 'Removes untracked and ignored files permanently' },
23
+ { matchType: 'prefix', pattern: 'git clean -xdf', reason: 'Removes untracked and ignored files permanently (flag reorder)' },
24
+ { matchType: 'regex', pattern: '<<', reason: 'Heredoc corrupts structured content (YAML, Markdown, JSON) — use write_file instead' },
25
+ ]);
26
+
27
+ const ASK_RULES = Object.freeze([
28
+ { matchType: 'word', pattern: 'tee', reason: 'Writes to file and stdout' },
29
+ { matchType: 'regex', pattern: '\\s>>?\\s|\\s>>?$|^>>?\\s|\\d>>?\\s', reason: 'Shell output redirection' },
30
+ ]);
31
+
32
+ module.exports = { DENY_RULES, ASK_RULES };