@howlil/ez-agents 3.5.0 → 4.0.0

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 (382) hide show
  1. package/README.md +735 -537
  2. package/agents/ez-architect-agent.md +267 -0
  3. package/agents/ez-backend-agent.md +303 -0
  4. package/agents/ez-chief-strategist.md +271 -0
  5. package/agents/ez-codebase-mapper.md +770 -770
  6. package/agents/ez-context-manager.md +319 -0
  7. package/agents/ez-debugger.md +1255 -1255
  8. package/agents/ez-design-expert.md +347 -0
  9. package/agents/ez-devops-agent.md +331 -0
  10. package/agents/ez-executor.md +487 -487
  11. package/agents/ez-frontend-agent.md +322 -0
  12. package/agents/ez-phase-researcher.md +553 -553
  13. package/agents/ez-planner.md +1307 -1307
  14. package/agents/ez-product-engineer.md +435 -0
  15. package/agents/ez-project-researcher.md +629 -629
  16. package/agents/ez-qa-agent.md +320 -0
  17. package/agents/ez-release-agent.md +333 -333
  18. package/agents/ez-requirements-agent.md +377 -377
  19. package/agents/ez-roadmapper.md +650 -650
  20. package/agents/ez-technical-writer.md +551 -0
  21. package/agents/ez-ux-expert.md +393 -0
  22. package/agents/ez-verifier.md +579 -579
  23. package/bin/guards/autonomy-guard.cjs +346 -0
  24. package/bin/guards/context-budget-guard.cjs +278 -0
  25. package/bin/guards/hallucination-guard.cjs +380 -0
  26. package/bin/guards/hidden-state-guard.cjs +182 -0
  27. package/bin/guards/team-overhead-guard.cjs +266 -0
  28. package/bin/guards/tool-sprawl-guard.cjs +271 -0
  29. package/bin/lib/analytics/analytics-collector.cjs +86 -0
  30. package/bin/lib/analytics/analytics-reporter.cjs +130 -0
  31. package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  32. package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  33. package/bin/lib/analytics/nps-tracker.cjs +147 -0
  34. package/bin/lib/archetype-detector.cjs +289 -0
  35. package/bin/lib/assistant-adapter.cjs +361 -0
  36. package/bin/lib/audit-exec.cjs +175 -0
  37. package/bin/lib/auth.cjs +176 -0
  38. package/bin/lib/backup-service.cjs +422 -0
  39. package/bin/lib/bdd-validator.cjs +622 -0
  40. package/bin/lib/business-flow-mapper.cjs +429 -0
  41. package/bin/lib/circuit-breaker.cjs +276 -0
  42. package/bin/lib/code-complexity-analyzer.cjs +360 -0
  43. package/bin/lib/codebase-analyzer.cjs +241 -0
  44. package/bin/lib/commands.cjs +691 -0
  45. package/bin/lib/config.cjs +236 -0
  46. package/bin/lib/constraint-extractor.cjs +526 -0
  47. package/bin/lib/content-scanner.cjs +238 -0
  48. package/bin/lib/context-cache.cjs +154 -0
  49. package/bin/lib/context-compressor.cjs +102 -0
  50. package/bin/lib/context-deduplicator.cjs +105 -0
  51. package/bin/lib/context-errors.cjs +78 -0
  52. package/bin/lib/context-manager.cjs +338 -0
  53. package/bin/lib/context-metadata-tracker.cjs +140 -0
  54. package/bin/lib/context-relevance-scorer.cjs +99 -0
  55. package/bin/lib/core.cjs +507 -0
  56. package/bin/lib/cost-alerts.cjs +174 -0
  57. package/bin/lib/cost-tracker.cjs +275 -0
  58. package/bin/lib/crash-recovery.cjs +220 -0
  59. package/bin/lib/dependency-graph.cjs +319 -0
  60. package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  61. package/bin/lib/deploy/deploy-detector.cjs +69 -0
  62. package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  63. package/bin/lib/deploy/deploy-health-check.cjs +88 -0
  64. package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  65. package/bin/lib/deploy/deploy-rollback.cjs +72 -0
  66. package/bin/lib/deploy/deploy-runner.cjs +97 -0
  67. package/bin/lib/deploy/deploy-status.cjs +74 -0
  68. package/bin/lib/discussion-synthesizer.cjs +439 -0
  69. package/bin/lib/error-cache.cjs +114 -0
  70. package/bin/lib/error-registry.cjs +177 -0
  71. package/bin/lib/file-access.cjs +207 -0
  72. package/bin/lib/file-lock.cjs +236 -0
  73. package/bin/lib/finops/budget-enforcer.cjs +126 -0
  74. package/bin/lib/finops/cost-reporter.cjs +132 -0
  75. package/bin/lib/finops/finops-analyzer.cjs +112 -0
  76. package/bin/lib/finops/spot-manager.cjs +118 -0
  77. package/bin/lib/framework-detector.cjs +396 -0
  78. package/bin/lib/frontmatter.cjs +313 -0
  79. package/bin/lib/fs-utils.cjs +153 -0
  80. package/bin/lib/gate-executor.cjs +272 -0
  81. package/bin/lib/gates/README.md +374 -0
  82. package/bin/lib/gates/gate-01-requirement.cjs +303 -0
  83. package/bin/lib/gates/gate-02-architecture.cjs +555 -0
  84. package/bin/lib/gates/gate-03-code.cjs +635 -0
  85. package/bin/lib/gates/gate-04-security.cjs +829 -0
  86. package/bin/lib/git-errors.cjs +83 -0
  87. package/bin/lib/git-utils.cjs +321 -0
  88. package/bin/lib/git-workflow-engine.cjs +1157 -0
  89. package/bin/lib/health-check.cjs +227 -0
  90. package/bin/lib/index.cjs +279 -0
  91. package/bin/lib/init.cjs +725 -0
  92. package/bin/lib/lock-logger.cjs +194 -0
  93. package/bin/lib/lock-state.cjs +263 -0
  94. package/bin/lib/lockfile-validator.cjs +227 -0
  95. package/bin/lib/log-rotation.cjs +71 -0
  96. package/bin/lib/logger.cjs +125 -0
  97. package/bin/lib/memory-compression.cjs +256 -0
  98. package/bin/lib/milestone.cjs +247 -0
  99. package/bin/lib/model-provider.cjs +241 -0
  100. package/bin/lib/package-manager-detector.cjs +203 -0
  101. package/bin/lib/package-manager-executor.cjs +385 -0
  102. package/bin/lib/package-manager-service.cjs +216 -0
  103. package/bin/lib/perf/api-monitor.cjs +88 -0
  104. package/bin/lib/perf/db-optimizer.cjs +78 -0
  105. package/bin/lib/perf/frontend-performance.cjs +56 -0
  106. package/bin/lib/perf/perf-analyzer.cjs +77 -0
  107. package/bin/lib/perf/perf-baseline.cjs +102 -0
  108. package/bin/lib/perf/perf-reporter.cjs +117 -0
  109. package/bin/lib/perf/regression-detector.cjs +92 -0
  110. package/bin/lib/phase.cjs +963 -0
  111. package/bin/lib/planning-write.cjs +123 -0
  112. package/bin/lib/project-reporter.cjs +565 -0
  113. package/bin/lib/quality-gate.cjs +332 -0
  114. package/bin/lib/quality-metrics.cjs +324 -0
  115. package/bin/lib/recovery-manager.cjs +98 -0
  116. package/bin/lib/release-validator.cjs +617 -0
  117. package/bin/lib/retry.cjs +119 -0
  118. package/bin/lib/roadmap.cjs +309 -0
  119. package/bin/lib/safe-exec.cjs +173 -0
  120. package/bin/lib/safe-path.cjs +130 -0
  121. package/bin/lib/security-errors.cjs +62 -0
  122. package/bin/lib/session-chain.cjs +304 -0
  123. package/bin/lib/session-errors.cjs +81 -0
  124. package/bin/lib/session-export.cjs +251 -0
  125. package/bin/lib/session-import.cjs +262 -0
  126. package/bin/lib/session-manager.cjs +280 -0
  127. package/bin/lib/skill-context.cjs +148 -0
  128. package/bin/lib/skill-matcher.cjs +236 -0
  129. package/bin/lib/skill-registry.cjs +360 -0
  130. package/bin/lib/skill-resolver.cjs +449 -0
  131. package/bin/lib/skill-triggers.cjs +90 -0
  132. package/bin/lib/skill-validator.cjs +270 -0
  133. package/bin/lib/skill-versioning.cjs +355 -0
  134. package/bin/lib/stack-detector.cjs +399 -0
  135. package/bin/lib/state.cjs +736 -0
  136. package/bin/lib/tech-debt-analyzer.cjs +309 -0
  137. package/bin/lib/temp-file.cjs +239 -0
  138. package/bin/lib/template.cjs +223 -0
  139. package/bin/lib/test-file-lock.cjs +112 -0
  140. package/bin/lib/test-graceful.cjs +93 -0
  141. package/bin/lib/test-logger.cjs +60 -0
  142. package/bin/lib/test-safe-exec.cjs +38 -0
  143. package/bin/lib/test-safe-path.cjs +33 -0
  144. package/bin/lib/test-temp-file.cjs +125 -0
  145. package/bin/lib/tier-manager.cjs +428 -0
  146. package/bin/lib/timeout-exec.cjs +63 -0
  147. package/bin/lib/tradeoff-analyzer.cjs +284 -0
  148. package/bin/lib/url-fetch.cjs +170 -0
  149. package/bin/lib/verify.cjs +863 -0
  150. package/bin/update.js +217 -214
  151. package/commands/deploy.cjs +53 -0
  152. package/commands/ez/add-tests.md +41 -41
  153. package/commands/ez/audit-milestone.md +36 -36
  154. package/commands/ez/complete-milestone.md +136 -136
  155. package/commands/ez/discuss-phase.md +90 -90
  156. package/commands/ez/execute-phase.md +52 -52
  157. package/commands/ez/help.md +22 -22
  158. package/commands/ez/map-codebase.md +71 -71
  159. package/commands/ez/new-milestone.md +44 -44
  160. package/commands/ez/new-project.md +51 -42
  161. package/commands/ez/plan-phase.md +53 -53
  162. package/commands/ez/progress.md +36 -36
  163. package/commands/ez/quick.md +45 -45
  164. package/commands/ez/resume-work.md +40 -40
  165. package/commands/ez/run-phase.md +580 -0
  166. package/commands/ez/settings.md +36 -36
  167. package/commands/ez/update.md +37 -37
  168. package/commands/ez/verify-work.md +402 -38
  169. package/commands/health-check.cjs +44 -0
  170. package/commands/rollback.cjs +47 -0
  171. package/ez-agents/bin/ez-tools.cjs +599 -2
  172. package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
  173. package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
  174. package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
  175. package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
  176. package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
  177. package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
  178. package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
  179. package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
  180. package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  181. package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  182. package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
  183. package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
  184. package/ez-agents/bin/lib/audit-exec.cjs +166 -167
  185. package/ez-agents/bin/lib/auth.cjs +176 -176
  186. package/ez-agents/bin/lib/backup-service.cjs +422 -0
  187. package/ez-agents/bin/lib/bdd-validator.cjs +622 -622
  188. package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
  189. package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
  190. package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
  191. package/ez-agents/bin/lib/commands.cjs +685 -685
  192. package/ez-agents/bin/lib/config.cjs +41 -1
  193. package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
  194. package/ez-agents/bin/lib/content-scanner.cjs +238 -238
  195. package/ez-agents/bin/lib/context-cache.cjs +154 -154
  196. package/ez-agents/bin/lib/context-errors.cjs +71 -71
  197. package/ez-agents/bin/lib/context-manager.cjs +220 -220
  198. package/ez-agents/bin/lib/core.cjs +507 -512
  199. package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
  200. package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
  201. package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
  202. package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  203. package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
  204. package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  205. package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
  206. package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  207. package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
  208. package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
  209. package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
  210. package/ez-agents/bin/lib/file-access.cjs +207 -207
  211. package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
  212. package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
  213. package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
  214. package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
  215. package/ez-agents/bin/lib/framework-detector.cjs +396 -0
  216. package/ez-agents/bin/lib/frontmatter.cjs +3 -1
  217. package/ez-agents/bin/lib/gates/README.md +374 -0
  218. package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
  219. package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
  220. package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
  221. package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
  222. package/ez-agents/bin/lib/git-errors.cjs +83 -83
  223. package/ez-agents/bin/lib/git-utils.cjs +321 -321
  224. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -1157
  225. package/ez-agents/bin/lib/health-check.cjs +162 -162
  226. package/ez-agents/bin/lib/index.cjs +2 -8
  227. package/ez-agents/bin/lib/init.cjs +0 -2
  228. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -227
  229. package/ez-agents/bin/lib/log-rotation.cjs +71 -0
  230. package/ez-agents/bin/lib/logger.cjs +22 -47
  231. package/ez-agents/bin/lib/memory-compression.cjs +256 -256
  232. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -203
  233. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -385
  234. package/ez-agents/bin/lib/package-manager-service.cjs +216 -216
  235. package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
  236. package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
  237. package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
  238. package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
  239. package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
  240. package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
  241. package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
  242. package/ez-agents/bin/lib/project-reporter.cjs +502 -0
  243. package/ez-agents/bin/lib/quality-gate.cjs +332 -0
  244. package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
  245. package/ez-agents/bin/lib/release-validator.cjs +617 -614
  246. package/ez-agents/bin/lib/security-errors.cjs +62 -0
  247. package/ez-agents/bin/lib/session-chain.cjs +304 -304
  248. package/ez-agents/bin/lib/session-errors.cjs +81 -81
  249. package/ez-agents/bin/lib/session-export.cjs +251 -251
  250. package/ez-agents/bin/lib/session-import.cjs +262 -262
  251. package/ez-agents/bin/lib/session-manager.cjs +280 -280
  252. package/ez-agents/bin/lib/skill-context.cjs +148 -0
  253. package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
  254. package/ez-agents/bin/lib/skill-registry.cjs +341 -0
  255. package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
  256. package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
  257. package/ez-agents/bin/lib/skill-validator.cjs +270 -0
  258. package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
  259. package/ez-agents/bin/lib/stack-detector.cjs +399 -0
  260. package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
  261. package/ez-agents/bin/lib/tier-manager.cjs +428 -428
  262. package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
  263. package/ez-agents/bin/lib/url-fetch.cjs +170 -170
  264. package/ez-agents/bin/lib/verify.cjs +863 -863
  265. package/ez-agents/references/decimal-phase-calculation.md +65 -65
  266. package/ez-agents/references/git-integration.md +248 -248
  267. package/ez-agents/references/git-planning-commit.md +38 -38
  268. package/ez-agents/references/metrics-schema.md +118 -118
  269. package/ez-agents/references/model-profile-resolution.md +34 -34
  270. package/ez-agents/references/model-profiles.md +93 -93
  271. package/ez-agents/references/phase-argument-parsing.md +61 -61
  272. package/ez-agents/references/planning-config.md +340 -340
  273. package/ez-agents/references/tier-strategy.md +103 -103
  274. package/ez-agents/references/ui-brand.md +160 -160
  275. package/ez-agents/references/verification-patterns.md +612 -612
  276. package/ez-agents/templates/DEBUG.md +164 -164
  277. package/ez-agents/templates/UAT.md +247 -247
  278. package/ez-agents/templates/agent-output-format.md +404 -0
  279. package/ez-agents/templates/bdd-feature.md +173 -173
  280. package/ez-agents/templates/codebase/architecture.md +255 -255
  281. package/ez-agents/templates/codebase/structure.md +285 -285
  282. package/ez-agents/templates/copilot-instructions.md +7 -7
  283. package/ez-agents/templates/debug-subagent-prompt.md +91 -91
  284. package/ez-agents/templates/discovery.md +146 -146
  285. package/ez-agents/templates/discussion.md +68 -68
  286. package/ez-agents/templates/handoff-protocol.md +294 -0
  287. package/ez-agents/templates/incident-runbook.md +205 -205
  288. package/ez-agents/templates/mode-workflow-templates.md +301 -0
  289. package/ez-agents/templates/phase-prompt.md +610 -610
  290. package/ez-agents/templates/planner-subagent-prompt.md +117 -117
  291. package/ez-agents/templates/project.md +184 -184
  292. package/ez-agents/templates/release-checklist.md +136 -133
  293. package/ez-agents/templates/research.md +552 -552
  294. package/ez-agents/templates/rollback-plan.md +201 -201
  295. package/ez-agents/templates/security-user-setup.md +244 -0
  296. package/ez-agents/templates/skill-validation-rules.md +476 -0
  297. package/ez-agents/templates/state.md +180 -176
  298. package/ez-agents/templates/summary-complex.md +59 -59
  299. package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
  300. package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
  301. package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
  302. package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
  303. package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
  304. package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
  305. package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
  306. package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
  307. package/ez-agents/workflows/audit-milestone.md +1 -1
  308. package/ez-agents/workflows/autonomous.md +844 -844
  309. package/ez-agents/workflows/complete-milestone.md +1 -1
  310. package/ez-agents/workflows/discuss-phase.md +1 -1
  311. package/ez-agents/workflows/execute-phase.md +124 -3
  312. package/ez-agents/workflows/help.md +42 -181
  313. package/ez-agents/workflows/hotfix.md +291 -291
  314. package/ez-agents/workflows/new-milestone.md +713 -713
  315. package/ez-agents/workflows/new-project.md +1089 -1107
  316. package/ez-agents/workflows/plan-phase.md +0 -40
  317. package/ez-agents/workflows/release.md +253 -253
  318. package/ez-agents/workflows/resume-session.md +215 -215
  319. package/ez-agents/workflows/run-phase.md +531 -0
  320. package/ez-agents/workflows/settings.md +2 -35
  321. package/hooks/dist/ez-check-update.js +81 -81
  322. package/hooks/dist/ez-context-monitor.js +148 -141
  323. package/hooks/dist/ez-statusline.js +115 -115
  324. package/package.json +78 -71
  325. package/scripts/fix-qwen-installation.js +144 -144
  326. package/agents/ez-integration-checker.md +0 -443
  327. package/agents/ez-nyquist-auditor.md +0 -176
  328. package/agents/ez-observer-agent.md +0 -260
  329. package/agents/ez-plan-checker.md +0 -706
  330. package/agents/ez-research-synthesizer.md +0 -247
  331. package/agents/ez-scrum-master-agent.md +0 -242
  332. package/agents/ez-tech-lead-agent.md +0 -267
  333. package/agents/ez-ui-auditor.md +0 -439
  334. package/agents/ez-ui-checker.md +0 -300
  335. package/agents/ez-ui-researcher.md +0 -353
  336. package/commands/ez/add-phase.md +0 -43
  337. package/commands/ez/add-todo.md +0 -47
  338. package/commands/ez/arch-review.md +0 -102
  339. package/commands/ez/auth.md +0 -87
  340. package/commands/ez/autonomous.md +0 -41
  341. package/commands/ez/check-todos.md +0 -45
  342. package/commands/ez/cleanup.md +0 -18
  343. package/commands/ez/debug.md +0 -168
  344. package/commands/ez/export-session.md +0 -79
  345. package/commands/ez/gather-requirements.md +0 -117
  346. package/commands/ez/git-workflow.md +0 -72
  347. package/commands/ez/health.md +0 -22
  348. package/commands/ez/hotfix.md +0 -120
  349. package/commands/ez/import-session.md +0 -82
  350. package/commands/ez/insert-phase.md +0 -32
  351. package/commands/ez/join-discord.md +0 -18
  352. package/commands/ez/list-phase-assumptions.md +0 -46
  353. package/commands/ez/list-sessions.md +0 -96
  354. package/commands/ez/package-manager.md +0 -316
  355. package/commands/ez/pause-work.md +0 -38
  356. package/commands/ez/plan-milestone-gaps.md +0 -34
  357. package/commands/ez/preflight.md +0 -79
  358. package/commands/ez/reapply-patches.md +0 -124
  359. package/commands/ez/release.md +0 -153
  360. package/commands/ez/remove-phase.md +0 -31
  361. package/commands/ez/research-phase.md +0 -190
  362. package/commands/ez/resume.md +0 -107
  363. package/commands/ez/set-profile.md +0 -34
  364. package/commands/ez/standup.md +0 -85
  365. package/commands/ez/stats.md +0 -18
  366. package/commands/ez/ui-phase.md +0 -34
  367. package/commands/ez/ui-review.md +0 -32
  368. package/commands/ez/validate-phase.md +0 -35
  369. package/ez-agents/bin/lib/metrics-tracker.cjs +0 -406
  370. package/ez-agents/templates/UI-SPEC.md +0 -100
  371. package/ez-agents/templates/VALIDATION.md +0 -76
  372. package/ez-agents/templates/context.md +0 -352
  373. package/ez-agents/templates/verification-report.md +0 -322
  374. package/ez-agents/workflows/arch-review.md +0 -54
  375. package/ez-agents/workflows/export-session.md +0 -255
  376. package/ez-agents/workflows/gather-requirements.md +0 -206
  377. package/ez-agents/workflows/import-session.md +0 -303
  378. package/ez-agents/workflows/research-phase.md +0 -74
  379. package/ez-agents/workflows/standup.md +0 -64
  380. package/ez-agents/workflows/ui-phase.md +0 -290
  381. package/ez-agents/workflows/ui-review.md +0 -157
  382. package/ez-agents/workflows/validate-phase.md +0 -167
@@ -1,713 +1,713 @@
1
- <purpose>
2
-
3
- Start a new milestone cycle for an existing project. Loads project context, gathers milestone goals (from MILESTONE-CONTEXT.md or conversation), updates PROJECT.md and STATE.md, optionally runs parallel research, defines scoped requirements with REQ-IDs, spawns the roadmapper to create phased execution plan, and commits all artifacts. Brownfield equivalent of new-project.
4
-
5
- **GSD-2 Enhanced:** Includes crash recovery, cost tracking, fresh context, and stuck detection for production-grade reliability.
6
-
7
- </purpose>
8
-
9
- <required_reading>
10
-
11
- Read all files referenced by the invoking prompt's execution_context before starting.
12
-
13
- </required_reading>
14
-
15
- <process>
16
-
17
- ## 0. Pre-Flight Health Check (GSD-2 Pattern)
18
-
19
- **MANDATORY FIRST STEP — Validate environment before ANY operation:**
20
-
21
- ```bash
22
- # Run health check
23
- HEALTH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" doctor --json)
24
- ```
25
-
26
- **Check:**
27
- - ✅ Node.js version >= 16.7.0
28
- - ✅ AI tools available (Claude, OpenCode, etc.)
29
- - ✅ Config valid (`.planning/config.json`)
30
- - ✅ Git repo initialized
31
- - ✅ API keys configured
32
-
33
- **If any check fails:**
34
- ```
35
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
36
- EZ ► HEALTH CHECK FAILED
37
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
38
-
39
- ❌ [Failed check description]
40
-
41
- Fix:
42
- [suggested command]
43
-
44
- Example:
45
- $ [example command]
46
-
47
- Resolve before continuing with milestone initialization.
48
- ```
49
-
50
- **Abort milestone init until resolved.**
51
-
52
- ---
53
-
54
- ## 0a. Gather Initial Context (CONTEXT-01, CONTEXT-02)
55
-
56
- **Initialize ContextManager for context gathering:**
57
-
58
- ```javascript
59
- const ContextManager = require('../bin/lib/context-manager.cjs');
60
- const contextManager = new ContextManager(process.cwd());
61
- ```
62
-
63
- **Request milestone-specific context:**
64
-
65
- ```javascript
66
- const context = await contextManager.requestContext({
67
- files: ['.planning/PROJECT.md', '.planning/STATE.md', '.planning/ROADMAP.md'],
68
- urls: []
69
- });
70
- ```
71
-
72
- **Agent can request additional context using:**
73
- - `ez-tools context read <pattern>` — Read local files
74
- - `ez-tools context fetch <url>` — Fetch URL content (requires user confirmation)
75
-
76
- **Update STATE.md with context sources:**
77
-
78
- ```javascript
79
- await contextManager.updateStateMd();
80
- ```
81
-
82
- **Continue to Load Context (Step 1) with gathered context.**
83
-
84
- ---
85
-
86
- ## 1. Load Context
87
-
88
- Read PROJECT.md (existing project, validated requirements, decisions)
89
- Read MILESTONES.md (what shipped previously)
90
- Read STATE.md (pending todos, blockers)
91
- Check for MILESTONE-CONTEXT.md (from /ez:discuss-milestone)
92
-
93
- ---
94
-
95
- ## 1a. Initialize Milestone Cost Tracking (GSD-2 Pattern)
96
-
97
- **Create/Update metrics.json:**
98
-
99
- ```bash
100
- # Initialize milestone budget
101
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-init \
102
- --milestone="v[X.Y]" \
103
- --budget-ceiling=50.00 \
104
- --alert-threshold=0.8
105
- ```
106
-
107
- **Create `.planning/metrics.json`:**
108
- ```json
109
- {
110
- "milestone": "v[X.Y]",
111
- "started_at": "2026-03-18T12:00:00.000Z",
112
- "budget": {
113
- "ceiling": 50.00,
114
- "alert_threshold": 0.8,
115
- "projected": 0.00,
116
- "spent": 0.00
117
- },
118
- "phases": {},
119
- "cumulative": {
120
- "total_tokens": 0,
121
- "total_cost_usd": 0.00,
122
- "by_provider": {}
123
- }
124
- }
125
- ```
126
-
127
- **Display budget info:**
128
- ```
129
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
130
- EZ ► MILESTONE BUDGET
131
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
-
133
- Milestone: v[X.Y]
134
- Budget Ceiling: $50.00
135
- Alert Threshold: 80% ($40.00)
136
-
137
- You will be warned when spending reaches 80% of budget.
138
- Auto-pause at $50.00.
139
-
140
- View anytime: /ez:cost
141
- ```
142
-
143
- **Commit metrics.json:**
144
- ```bash
145
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: initialize milestone budget" --files .planning/metrics.json
146
- ```
147
-
148
- ---
149
-
150
- ## 2. Gather Milestone Goals
151
-
152
- **If MILESTONE-CONTEXT.md exists:**
153
- - Use features and scope from discuss-milestone
154
- - Present summary for confirmation
155
-
156
- **If no context file:**
157
- - Present what shipped in last milestone
158
- - Ask inline (freeform, NOT AskUserQuestion): "What do you want to build next?"
159
- - Wait for their response, then use AskUserQuestion to probe specifics
160
- - If user selects "Other" at any point to provide freeform input, ask follow-up as plain text — not another AskUserQuestion
161
-
162
- ---
163
-
164
- ## 2a. Create Lock File (GSD-2 Pattern)
165
-
166
- **Before any major operation:**
167
-
168
- ```bash
169
- # Create auto.lock
170
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-create \
171
- --operation="new-milestone" \
172
- --milestone="v[X.Y]"
173
- ```
174
-
175
- **Create `.planning/auto.lock`:**
176
- ```json
177
- {
178
- "pid": 12345,
179
- "operation": "new-milestone",
180
- "milestone": "v[X.Y]",
181
- "started_at": "2026-03-18T12:00:00.000Z",
182
- "last_heartbeat": "2026-03-18T12:00:00.000Z",
183
- "state": "gathering_goals"
184
- }
185
- ```
186
-
187
- **Update heartbeat every 5 minutes:**
188
- ```bash
189
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-heartbeat
190
- ```
191
-
192
- **On completion:**
193
- ```bash
194
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
195
- ```
196
-
197
- **On crash/restart:**
198
- - Detect orphaned lock (PID dead)
199
- - Synthesize recovery briefing
200
- - Resume from last known state
201
-
202
- ---
203
-
204
- ## 3. Determine Milestone Version
205
-
206
- - Parse last version from MILESTONES.md
207
- - Suggest next version (v1.0 → v1.1, or v2.0 for major)
208
- - Confirm with user
209
-
210
- ---
211
-
212
- ## 4. Update PROJECT.md
213
-
214
- Add/update:
215
-
216
- ```markdown
217
- ## Current Milestone: v[X.Y] [Name]
218
-
219
- **Goal:** [One sentence describing milestone focus]
220
-
221
- **Target features:**
222
- - [Feature 1]
223
- - [Feature 2]
224
- - [Feature 3]
225
- ```
226
-
227
- Update Active requirements section and "Last updated" footer.
228
-
229
- ---
230
-
231
- ## 5. Update STATE.md
232
-
233
- ```markdown
234
- ## Current Position
235
-
236
- Phase: Not started (defining requirements)
237
- Plan: —
238
- Status: Defining requirements
239
- Last activity: [today] — Milestone v[X.Y] started
240
- ```
241
-
242
- Keep Accumulated Context section from previous milestone.
243
-
244
- ---
245
-
246
- ## 6. Cleanup and Commit
247
-
248
- Delete MILESTONE-CONTEXT.md if exists (consumed).
249
-
250
- ```bash
251
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start milestone v[X.Y] [Name]" --files .planning/PROJECT.md .planning/STATE.md .planning/metrics.json
252
- ```
253
-
254
- **Update lock file state:**
255
- ```bash
256
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="context_loaded"
257
- ```
258
-
259
- ---
260
-
261
- ## 7. Load Context and Resolve Models
262
-
263
- ```bash
264
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init new-milestone)
265
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
266
- ```
267
-
268
- Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`.
269
-
270
- ---
271
-
272
- ## 8. Research Decision
273
-
274
- AskUserQuestion: "Research the domain ecosystem for new features before defining requirements?"
275
- - "Research first (Recommended)" — Discover patterns, features, architecture for NEW capabilities
276
- - "Skip research" — Go straight to requirements
277
-
278
- **Persist choice to config** (so future `/ez:plan-phase` honors it):
279
-
280
- ```bash
281
- # If "Research first": persist true
282
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research true
283
-
284
- # If "Skip research": persist false
285
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research false
286
- ```
287
-
288
- **Update lock file state:**
289
- ```bash
290
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_decision"
291
- ```
292
-
293
- **If "Research first":**
294
-
295
- ```
296
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
297
- EZ ► RESEARCHING
298
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
299
-
300
- ◆ Spawning 4 researchers in parallel...
301
- → Stack, Features, Architecture, Pitfalls
302
- ```
303
-
304
- ```bash
305
- mkdir -p .planning/research
306
- ```
307
-
308
- **Spawn 4 parallel ez-project-researcher agents with FRESH CONTEXT (GSD-2 Pattern):**
309
-
310
- Each uses this template with dimension-specific fields:
311
-
312
- **Common structure for all 4 researchers:**
313
- ```
314
- Task(prompt="
315
- <research_type>Project Research — {DIMENSION} for [new features].</research_type>
316
-
317
- <fresh_context>
318
- CONTEXT RESET: This is a fresh 200K session.
319
- No accumulated garbage from prior tasks.
320
- Only relevant context pre-loaded below.
321
- </fresh_context>
322
-
323
- <pre_loaded_context>
324
- - .planning/PROJECT.md excerpt (core value, milestone goals)
325
- - .planning/REQUIREMENTS.md excerpt (active requirements)
326
- - .planning/ROADMAP.md excerpt (phase structure)
327
- </pre_loaded_context>
328
-
329
- <milestone_context>
330
- SUBSEQUENT MILESTONE — Adding [target features] to existing app.
331
- {EXISTING_CONTEXT}
332
- Focus ONLY on what's needed for the NEW features.
333
- </milestone_context>
334
-
335
- <question>{QUESTION}</question>
336
-
337
- <files_to_read>
338
- - .planning/PROJECT.md (Project context)
339
- </files_to_read>
340
-
341
- <downstream_consumer>{CONSUMER}</downstream_consumer>
342
-
343
- <quality_gate>{GATES}</quality_gate>
344
-
345
- <output>
346
- Write to: .planning/research/{FILE}
347
- Use template: ~/.claude/ez-agents/templates/research-project/{FILE}
348
- </output>
349
- ", subagent_type="ez-project-researcher", model="{researcher_model}", description="{DIMENSION} research")
350
- ```
351
-
352
- **Dimension-specific fields:**
353
-
354
- | Field | Stack | Features | Architecture | Pitfalls |
355
- |-------|-------|----------|-------------|----------|
356
- | EXISTING_CONTEXT | Existing validated capabilities (DO NOT re-research): [from PROJECT.md] | Existing features (already built): [from PROJECT.md] | Existing architecture: [from PROJECT.md or codebase map] | Focus on common mistakes when ADDING these features to existing system |
357
- | QUESTION | What stack additions/changes are needed for [new features]? | How do [target features] typically work? Expected behavior? | How do [target features] integrate with existing architecture? | Common mistakes when adding [target features] to [domain]? |
358
- | CONSUMER | Specific libraries with versions for NEW capabilities, integration points, what NOT to add | Table stakes vs differentiators vs anti-features, complexity noted, dependencies on existing | Integration points, new components, data flow changes, suggested build order | Warning signs, prevention strategy, which phase should address it |
359
- | GATES | Versions current (verify with Context7), rationale explains WHY, integration considered | Categories clear, complexity noted, dependencies identified | Integration points identified, new vs modified explicit, build order considers deps | Pitfalls specific to adding these features, integration pitfalls covered, prevention actionable |
360
- | FILE | STACK.md | FEATURES.md | ARCHITECTURE.md | PITFALLS.md |
361
-
362
- After all 4 complete, spawn synthesizer:
363
-
364
- ```
365
- Task(prompt="
366
- Synthesize research outputs into SUMMARY.md.
367
-
368
- <files_to_read>
369
- - .planning/research/STACK.md
370
- - .planning/research/FEATURES.md
371
- - .planning/research/ARCHITECTURE.md
372
- - .planning/research/PITFALLS.md
373
- </files_to_read>
374
-
375
- Write to: .planning/research/SUMMARY.md
376
- Use template: ~/.claude/ez-agents/templates/research-project/SUMMARY.md
377
- Commit after writing.
378
- ", subagent_type="ez-research-synthesizer", model="{synthesizer_model}", description="Synthesize research")
379
- ```
380
-
381
- Display key findings from SUMMARY.md:
382
- ```
383
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
384
- EZ ► RESEARCH COMPLETE ✓
385
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
386
-
387
- **Stack additions:** [from SUMMARY.md]
388
- **Feature table stakes:** [from SUMMARY.md]
389
- **Watch Out For:** [from SUMMARY.md]
390
- ```
391
-
392
- **Update lock file state:**
393
- ```bash
394
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_complete"
395
- ```
396
-
397
- **If "Skip research":** Continue to Step 9.
398
-
399
- ---
400
-
401
- ## 9. Define Requirements
402
-
403
- ```
404
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
405
- EZ ► DEFINING REQUIREMENTS
406
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
407
- ```
408
-
409
- Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
410
-
411
- **If research exists:** Read FEATURES.md, extract feature categories.
412
-
413
- Present features by category:
414
- ```
415
- ## [Category 1]
416
- **Table stakes:** Feature A, Feature B
417
- **Differentiators:** Feature C, Feature D
418
- **Research notes:** [any relevant notes]
419
- ```
420
-
421
- **If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
422
-
423
- **Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
424
- - "[Feature 1]" — [brief description]
425
- - "[Feature 2]" — [brief description]
426
- - "None for this milestone" — Defer entire category
427
-
428
- Track: Selected → this milestone. Unselected table stakes → future. Unselected differentiators → out of scope.
429
-
430
- **Identify gaps** via AskUserQuestion:
431
- - "No, research covered it" — Proceed
432
- - "Yes, let me add some" — Capture additions
433
-
434
- **Generate REQUIREMENTS.md:**
435
- - v1 Requirements grouped by category (checkboxes, REQ-IDs)
436
- - Future Requirements (deferred)
437
- - Out of Scope (explicit exclusions with reasoning)
438
- - Traceability section (empty, filled by roadmap)
439
-
440
- **REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02). Continue numbering from existing.
441
-
442
- **Requirement quality criteria:**
443
-
444
- Good requirements are:
445
- - **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
446
- - **User-centric:** "User can X" (not "System does Y")
447
- - **Atomic:** One capability per requirement (not "User can login and manage profile")
448
- - **Independent:** Minimal dependencies on other requirements
449
-
450
- Present FULL requirements list for confirmation:
451
-
452
- ```
453
- ## Milestone v[X.Y] Requirements
454
-
455
- ### [Category 1]
456
- - [ ] **CAT1-01**: User can do X
457
- - [ ] **CAT1-02**: User can do Y
458
-
459
- ### [Category 2]
460
- - [ ] **CAT2-01**: User can do Z
461
-
462
- Does this capture what you're building? (yes / adjust)
463
- ```
464
-
465
- If "adjust": Return to scoping.
466
-
467
- **Commit requirements:**
468
- ```bash
469
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: define milestone v[X.Y] requirements" --files .planning/REQUIREMENTS.md
470
- ```
471
-
472
- **Update lock file state:**
473
- ```bash
474
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="requirements_defined"
475
- ```
476
-
477
- ---
478
-
479
- ## 10. Create Roadmap (with Stuck Detection - GSD-2 Pattern)
480
-
481
- ```
482
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
483
- EZ ► CREATING ROADMAP
484
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
485
-
486
- ◆ Spawning roadmapper...
487
- ```
488
-
489
- **Initialize stuck detection:**
490
-
491
- ```bash
492
- # Start stuck watcher
493
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" stuck-watch start \
494
- --operation="roadmap-creation" \
495
- --max-retries=1 \
496
- --timeout=300
497
- ```
498
-
499
- **Starting phase number:** Read MILESTONES.md for last phase number. Continue from there (v1.0 ended at phase 5 → v1.1 starts at phase 6).
500
-
501
- ```
502
- Task(prompt="
503
- <planning_context>
504
- <files_to_read>
505
- - .planning/PROJECT.md
506
- - .planning/REQUIREMENTS.md
507
- - .planning/research/SUMMARY.md (if exists)
508
- - .planning/config.json
509
- - .planning/MILESTONES.md
510
- </files_to_read>
511
- </planning_context>
512
-
513
- <instructions>
514
- Create roadmap for milestone v[X.Y]:
515
- 1. Start phase numbering from [N]
516
- 2. Derive phases from THIS MILESTONE's requirements only
517
- 3. Map every requirement to exactly one phase
518
- 4. Derive 2-5 success criteria per phase (observable user behaviors)
519
- 5. Validate 100% coverage
520
- 6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
521
- 7. Return ROADMAP CREATED with summary
522
-
523
- Write files first, then return.
524
- </instructions>
525
- ", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap")
526
- ```
527
-
528
- **Handle return:**
529
-
530
- **If `## ROADMAP BLOCKED`:**
531
- 1. Log error type and location
532
- 2. Retry ONCE with diagnostic context:
533
- ```
534
- Task(prompt="
535
- <retry_context>
536
- PREVIOUS ATTEMPT FAILED
537
- Error Type: [error_type]
538
- Error Location: [location]
539
- Suggested Fix: [fix]
540
-
541
- CONTEXT SNAPSHOT FOR DEBUGGING:
542
- [snapshot of files read]
543
-
544
- Please try again with this diagnostic information.
545
- </retry_context>
546
- ", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap (retry)")
547
- ```
548
- 3. If fails again → STOP with exact failure report:
549
- ```
550
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
551
- EZ ► ROADMAP CREATION FAILED
552
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
553
-
554
- Error Type: [type]
555
- Error Location: [file:line]
556
- Suggested Fix: [action]
557
-
558
- Context Snapshot: .planning/logs/stuck-snapshot-[timestamp].json
559
-
560
- Next Steps:
561
- 1. Review context snapshot
562
- 2. Fix [specific issue]
563
- 3. Run: /ez:plan-milestone --retry
564
- ```
565
-
566
- **If `## ROADMAP CREATED`:** Read ROADMAP.md, present inline:
567
-
568
- ```
569
- ## Proposed Roadmap
570
-
571
- **[N] phases** | **[X] requirements mapped** | All covered ✓
572
-
573
- | # | Phase | Goal | Requirements | Success Criteria |
574
- |---|-------|------|--------------|------------------|
575
- | [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
576
-
577
- ### Phase Details
578
-
579
- **Phase [N]: [Name]**
580
- Goal: [goal]
581
- Requirements: [REQ-IDs]
582
- Success criteria:
583
- 1. [criterion]
584
- 2. [criterion]
585
- ```
586
-
587
- **Ask for approval** via AskUserQuestion:
588
- - "Approve" — Commit and continue
589
- - "Adjust phases" — Tell me what to change
590
- - "Review full file" — Show raw ROADMAP.md
591
-
592
- **If "Adjust":** Get notes, re-spawn roadmapper with revision context, loop until approved.
593
- **If "Review":** Display raw ROADMAP.md, re-ask.
594
-
595
- **Commit roadmap** (after approval):
596
- ```bash
597
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: create milestone v[X.Y] roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
598
- ```
599
-
600
- **Update lock file state:**
601
- ```bash
602
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="roadmap_created"
603
- ```
604
-
605
- ---
606
-
607
- ## 11. Release Lock File
608
-
609
- **Milestone initialization complete:**
610
-
611
- ```bash
612
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
613
- ```
614
-
615
- ---
616
-
617
- ## 12. Post-Milestone Cost Report (GSD-2 Pattern)
618
-
619
- **After all commits complete:**
620
-
621
- ```bash
622
- # Generate cost report
623
- COST_REPORT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-report \
624
- --milestone="v[X.Y]" \
625
- --format=summary)
626
- ```
627
-
628
- **Display:**
629
- ```
630
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
631
- EZ ► MILESTONE INITIALIZATION COST
632
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
633
-
634
- Milestone: v[X.Y]
635
- Phases: [N]
636
- Requirements: [X]
637
-
638
- Initialization Cost:
639
- - Research: $[X.XX] ([N] tokens)
640
- - Requirements: $[X.XX] ([N] tokens)
641
- - Roadmap: $[X.XX] ([N] tokens)
642
- - Total: $[X.XX] ([N] tokens)
643
-
644
- Budget Remaining: $[XX.XX] of $[XX.XX]
645
-
646
- Projected Total (based on similar milestones): $[XX.XX]
647
-
648
- View detailed report: /ez:cost --milestone=v[X.Y]
649
- ```
650
-
651
- ---
652
-
653
- ## 13. Done
654
-
655
- ```
656
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
657
- EZ ► MILESTONE INITIALIZED ✓
658
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
659
-
660
- **Milestone v[X.Y]: [Name]**
661
-
662
- | Artifact | Location |
663
- |----------------|-----------------------------|
664
- | Project | `.planning/PROJECT.md` |
665
- | Research | `.planning/research/` |
666
- | Requirements | `.planning/REQUIREMENTS.md` |
667
- | Roadmap | `.planning/ROADMAP.md` |
668
- | Metrics | `.planning/metrics.json` |
669
-
670
- **[N] phases** | **[X] requirements** | Ready to build ✓
671
-
672
- ## ▶ Next Up
673
-
674
- **Phase [N]: [Phase Name]** — [Goal]
675
-
676
- `/ez:discuss-phase [N]` — gather context and clarify approach
677
-
678
- <sub>`/clear` first → fresh context window</sub>
679
-
680
- Also: `/ez:plan-phase [N]` — skip discussion, plan directly
681
- ```
682
-
683
- </process>
684
-
685
- <success_criteria>
686
- - [ ] Pre-flight health check passed (all systems go)
687
- - [ ] Cost tracking initialized (metrics.json created)
688
- - [ ] Lock file created and maintained throughout
689
- - [ ] PROJECT.md updated with Current Milestone section
690
- - [ ] STATE.md reset for new milestone
691
- - [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
692
- - [ ] Research completed (if selected) — 4 parallel agents, milestone-aware, fresh context
693
- - [ ] Requirements gathered and scoped per category
694
- - [ ] REQUIREMENTS.md created with REQ-IDs
695
- - [ ] ez-roadmapper spawned with phase numbering context
696
- - [ ] Stuck detection active during roadmap creation
697
- - [ ] Roadmap files written immediately (not draft)
698
- - [ ] User feedback incorporated (if any)
699
- - [ ] ROADMAP.md phases continue from previous milestone
700
- - [ ] All commits made (if planning docs committed)
701
- - [ ] Lock file released on completion
702
- - [ ] Cost report displayed
703
- - [ ] User knows next step: `/ez:discuss-phase [N]`
704
-
705
- **Atomic commits:** Each phase commits its artifacts immediately.
706
-
707
- **GSD-2 Reliability:**
708
- - ✅ Crash recovery via lock files
709
- - ✅ Cost transparency via metrics.json
710
- - ✅ Fresh context per researcher/agent
711
- - ✅ Stuck detection with diagnostics
712
- - ✅ Health check pre-flight validation
713
- </success_criteria>
1
+ <purpose>
2
+
3
+ Start a new milestone cycle for an existing project. Loads project context, gathers milestone goals (from MILESTONE-CONTEXT.md or conversation), updates PROJECT.md and STATE.md, optionally runs parallel research, defines scoped requirements with REQ-IDs, spawns the roadmapper to create phased execution plan, and commits all artifacts. Brownfield equivalent of new-project.
4
+
5
+ **GSD-2 Enhanced:** Includes crash recovery, cost tracking, fresh context, and stuck detection for production-grade reliability.
6
+
7
+ </purpose>
8
+
9
+ <required_reading>
10
+
11
+ Read all files referenced by the invoking prompt's execution_context before starting.
12
+
13
+ </required_reading>
14
+
15
+ <process>
16
+
17
+ ## 0. Pre-Flight Health Check (GSD-2 Pattern)
18
+
19
+ **MANDATORY FIRST STEP — Validate environment before ANY operation:**
20
+
21
+ ```bash
22
+ # Run health check
23
+ HEALTH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" doctor --json)
24
+ ```
25
+
26
+ **Check:**
27
+ - ✅ Node.js version >= 16.7.0
28
+ - ✅ AI tools available (Claude, OpenCode, etc.)
29
+ - ✅ Config valid (`.planning/config.json`)
30
+ - ✅ Git repo initialized
31
+ - ✅ API keys configured
32
+
33
+ **If any check fails:**
34
+ ```
35
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
36
+ EZ ► HEALTH CHECK FAILED
37
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
38
+
39
+ ❌ [Failed check description]
40
+
41
+ Fix:
42
+ [suggested command]
43
+
44
+ Example:
45
+ $ [example command]
46
+
47
+ Resolve before continuing with milestone initialization.
48
+ ```
49
+
50
+ **Abort milestone init until resolved.**
51
+
52
+ ---
53
+
54
+ ## 0a. Gather Initial Context (CONTEXT-01, CONTEXT-02)
55
+
56
+ **Initialize ContextManager for context gathering:**
57
+
58
+ ```javascript
59
+ const ContextManager = require('../bin/lib/context-manager.cjs');
60
+ const contextManager = new ContextManager(process.cwd());
61
+ ```
62
+
63
+ **Request milestone-specific context:**
64
+
65
+ ```javascript
66
+ const context = await contextManager.requestContext({
67
+ files: ['.planning/PROJECT.md', '.planning/STATE.md', '.planning/ROADMAP.md'],
68
+ urls: []
69
+ });
70
+ ```
71
+
72
+ **Agent can request additional context using:**
73
+ - `ez-tools context read <pattern>` — Read local files
74
+ - `ez-tools context fetch <url>` — Fetch URL content (requires user confirmation)
75
+
76
+ **Update STATE.md with context sources:**
77
+
78
+ ```javascript
79
+ await contextManager.updateStateMd();
80
+ ```
81
+
82
+ **Continue to Load Context (Step 1) with gathered context.**
83
+
84
+ ---
85
+
86
+ ## 1. Load Context
87
+
88
+ Read PROJECT.md (existing project, validated requirements, decisions)
89
+ Read MILESTONES.md (what shipped previously)
90
+ Read STATE.md (pending todos, blockers)
91
+ Check for MILESTONE-CONTEXT.md (from /ez:discuss-milestone)
92
+
93
+ ---
94
+
95
+ ## 1a. Initialize Milestone Cost Tracking (GSD-2 Pattern)
96
+
97
+ **Create/Update metrics.json:**
98
+
99
+ ```bash
100
+ # Initialize milestone budget
101
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-init \
102
+ --milestone="v[X.Y]" \
103
+ --budget-ceiling=50.00 \
104
+ --alert-threshold=0.8
105
+ ```
106
+
107
+ **Create `.planning/metrics.json`:**
108
+ ```json
109
+ {
110
+ "milestone": "v[X.Y]",
111
+ "started_at": "2026-03-18T12:00:00.000Z",
112
+ "budget": {
113
+ "ceiling": 50.00,
114
+ "alert_threshold": 0.8,
115
+ "projected": 0.00,
116
+ "spent": 0.00
117
+ },
118
+ "phases": {},
119
+ "cumulative": {
120
+ "total_tokens": 0,
121
+ "total_cost_usd": 0.00,
122
+ "by_provider": {}
123
+ }
124
+ }
125
+ ```
126
+
127
+ **Display budget info:**
128
+ ```
129
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
130
+ EZ ► MILESTONE BUDGET
131
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
132
+
133
+ Milestone: v[X.Y]
134
+ Budget Ceiling: $50.00
135
+ Alert Threshold: 80% ($40.00)
136
+
137
+ You will be warned when spending reaches 80% of budget.
138
+ Auto-pause at $50.00.
139
+
140
+ View anytime: /ez:cost
141
+ ```
142
+
143
+ **Commit metrics.json:**
144
+ ```bash
145
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "chore: initialize milestone budget" --files .planning/metrics.json
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 2. Gather Milestone Goals
151
+
152
+ **If MILESTONE-CONTEXT.md exists:**
153
+ - Use features and scope from discuss-milestone
154
+ - Present summary for confirmation
155
+
156
+ **If no context file:**
157
+ - Present what shipped in last milestone
158
+ - Ask inline (freeform, NOT AskUserQuestion): "What do you want to build next?"
159
+ - Wait for their response, then use AskUserQuestion to probe specifics
160
+ - If user selects "Other" at any point to provide freeform input, ask follow-up as plain text — not another AskUserQuestion
161
+
162
+ ---
163
+
164
+ ## 2a. Create Lock File (GSD-2 Pattern)
165
+
166
+ **Before any major operation:**
167
+
168
+ ```bash
169
+ # Create auto.lock
170
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-create \
171
+ --operation="new-milestone" \
172
+ --milestone="v[X.Y]"
173
+ ```
174
+
175
+ **Create `.planning/auto.lock`:**
176
+ ```json
177
+ {
178
+ "pid": 12345,
179
+ "operation": "new-milestone",
180
+ "milestone": "v[X.Y]",
181
+ "started_at": "2026-03-18T12:00:00.000Z",
182
+ "last_heartbeat": "2026-03-18T12:00:00.000Z",
183
+ "state": "gathering_goals"
184
+ }
185
+ ```
186
+
187
+ **Update heartbeat every 5 minutes:**
188
+ ```bash
189
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-heartbeat
190
+ ```
191
+
192
+ **On completion:**
193
+ ```bash
194
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
195
+ ```
196
+
197
+ **On crash/restart:**
198
+ - Detect orphaned lock (PID dead)
199
+ - Synthesize recovery briefing
200
+ - Resume from last known state
201
+
202
+ ---
203
+
204
+ ## 3. Determine Milestone Version
205
+
206
+ - Parse last version from MILESTONES.md
207
+ - Suggest next version (v1.0 → v1.1, or v2.0 for major)
208
+ - Confirm with user
209
+
210
+ ---
211
+
212
+ ## 4. Update PROJECT.md
213
+
214
+ Add/update:
215
+
216
+ ```markdown
217
+ ## Current Milestone: v[X.Y] [Name]
218
+
219
+ **Goal:** [One sentence describing milestone focus]
220
+
221
+ **Target features:**
222
+ - [Feature 1]
223
+ - [Feature 2]
224
+ - [Feature 3]
225
+ ```
226
+
227
+ Update Active requirements section and "Last updated" footer.
228
+
229
+ ---
230
+
231
+ ## 5. Update STATE.md
232
+
233
+ ```markdown
234
+ ## Current Position
235
+
236
+ Phase: Not started (defining requirements)
237
+ Plan: —
238
+ Status: Defining requirements
239
+ Last activity: [today] — Milestone v[X.Y] started
240
+ ```
241
+
242
+ Keep Accumulated Context section from previous milestone.
243
+
244
+ ---
245
+
246
+ ## 6. Cleanup and Commit
247
+
248
+ Delete MILESTONE-CONTEXT.md if exists (consumed).
249
+
250
+ ```bash
251
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: start milestone v[X.Y] [Name]" --files .planning/PROJECT.md .planning/STATE.md .planning/metrics.json
252
+ ```
253
+
254
+ **Update lock file state:**
255
+ ```bash
256
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="context_loaded"
257
+ ```
258
+
259
+ ---
260
+
261
+ ## 7. Load Context and Resolve Models
262
+
263
+ ```bash
264
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init new-milestone)
265
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
266
+ ```
267
+
268
+ Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `research_enabled`, `current_milestone`, `project_exists`, `roadmap_exists`.
269
+
270
+ ---
271
+
272
+ ## 8. Research Decision
273
+
274
+ AskUserQuestion: "Research the domain ecosystem for new features before defining requirements?"
275
+ - "Research first (Recommended)" — Discover patterns, features, architecture for NEW capabilities
276
+ - "Skip research" — Go straight to requirements
277
+
278
+ **Persist choice to config** (so future `/ez:plan-phase` honors it):
279
+
280
+ ```bash
281
+ # If "Research first": persist true
282
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research true
283
+
284
+ # If "Skip research": persist false
285
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set workflow.research false
286
+ ```
287
+
288
+ **Update lock file state:**
289
+ ```bash
290
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_decision"
291
+ ```
292
+
293
+ **If "Research first":**
294
+
295
+ ```
296
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
297
+ EZ ► RESEARCHING
298
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
299
+
300
+ ◆ Spawning 4 researchers in parallel...
301
+ → Stack, Features, Architecture, Pitfalls
302
+ ```
303
+
304
+ ```bash
305
+ mkdir -p .planning/research
306
+ ```
307
+
308
+ **Spawn 4 parallel ez-project-researcher agents with FRESH CONTEXT (GSD-2 Pattern):**
309
+
310
+ Each uses this template with dimension-specific fields:
311
+
312
+ **Common structure for all 4 researchers:**
313
+ ```
314
+ Task(prompt="
315
+ <research_type>Project Research — {DIMENSION} for [new features].</research_type>
316
+
317
+ <fresh_context>
318
+ CONTEXT RESET: This is a fresh 200K session.
319
+ No accumulated garbage from prior tasks.
320
+ Only relevant context pre-loaded below.
321
+ </fresh_context>
322
+
323
+ <pre_loaded_context>
324
+ - .planning/PROJECT.md excerpt (core value, milestone goals)
325
+ - .planning/REQUIREMENTS.md excerpt (active requirements)
326
+ - .planning/ROADMAP.md excerpt (phase structure)
327
+ </pre_loaded_context>
328
+
329
+ <milestone_context>
330
+ SUBSEQUENT MILESTONE — Adding [target features] to existing app.
331
+ {EXISTING_CONTEXT}
332
+ Focus ONLY on what's needed for the NEW features.
333
+ </milestone_context>
334
+
335
+ <question>{QUESTION}</question>
336
+
337
+ <files_to_read>
338
+ - .planning/PROJECT.md (Project context)
339
+ </files_to_read>
340
+
341
+ <downstream_consumer>{CONSUMER}</downstream_consumer>
342
+
343
+ <quality_gate>{GATES}</quality_gate>
344
+
345
+ <output>
346
+ Write to: .planning/research/{FILE}
347
+ Use template: ~/.claude/ez-agents/templates/research-project/{FILE}
348
+ </output>
349
+ ", subagent_type="ez-project-researcher", model="{researcher_model}", description="{DIMENSION} research")
350
+ ```
351
+
352
+ **Dimension-specific fields:**
353
+
354
+ | Field | Stack | Features | Architecture | Pitfalls |
355
+ |-------|-------|----------|-------------|----------|
356
+ | EXISTING_CONTEXT | Existing validated capabilities (DO NOT re-research): [from PROJECT.md] | Existing features (already built): [from PROJECT.md] | Existing architecture: [from PROJECT.md or codebase map] | Focus on common mistakes when ADDING these features to existing system |
357
+ | QUESTION | What stack additions/changes are needed for [new features]? | How do [target features] typically work? Expected behavior? | How do [target features] integrate with existing architecture? | Common mistakes when adding [target features] to [domain]? |
358
+ | CONSUMER | Specific libraries with versions for NEW capabilities, integration points, what NOT to add | Table stakes vs differentiators vs anti-features, complexity noted, dependencies on existing | Integration points, new components, data flow changes, suggested build order | Warning signs, prevention strategy, which phase should address it |
359
+ | GATES | Versions current (verify with Context7), rationale explains WHY, integration considered | Categories clear, complexity noted, dependencies identified | Integration points identified, new vs modified explicit, build order considers deps | Pitfalls specific to adding these features, integration pitfalls covered, prevention actionable |
360
+ | FILE | STACK.md | FEATURES.md | ARCHITECTURE.md | PITFALLS.md |
361
+
362
+ After all 4 complete, spawn synthesizer:
363
+
364
+ ```
365
+ Task(prompt="
366
+ Synthesize research outputs into SUMMARY.md.
367
+
368
+ <files_to_read>
369
+ - .planning/research/STACK.md
370
+ - .planning/research/FEATURES.md
371
+ - .planning/research/ARCHITECTURE.md
372
+ - .planning/research/PITFALLS.md
373
+ </files_to_read>
374
+
375
+ Write to: .planning/research/SUMMARY.md
376
+ Use template: ~/.claude/ez-agents/templates/research-project/SUMMARY.md
377
+ Commit after writing.
378
+ ", subagent_type="ez-phase-researcher", model="{synthesizer_model}", description="Synthesize research")
379
+ ```
380
+
381
+ Display key findings from SUMMARY.md:
382
+ ```
383
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
384
+ EZ ► RESEARCH COMPLETE ✓
385
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
386
+
387
+ **Stack additions:** [from SUMMARY.md]
388
+ **Feature table stakes:** [from SUMMARY.md]
389
+ **Watch Out For:** [from SUMMARY.md]
390
+ ```
391
+
392
+ **Update lock file state:**
393
+ ```bash
394
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="research_complete"
395
+ ```
396
+
397
+ **If "Skip research":** Continue to Step 9.
398
+
399
+ ---
400
+
401
+ ## 9. Define Requirements
402
+
403
+ ```
404
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
405
+ EZ ► DEFINING REQUIREMENTS
406
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
407
+ ```
408
+
409
+ Read PROJECT.md: core value, current milestone goals, validated requirements (what exists).
410
+
411
+ **If research exists:** Read FEATURES.md, extract feature categories.
412
+
413
+ Present features by category:
414
+ ```
415
+ ## [Category 1]
416
+ **Table stakes:** Feature A, Feature B
417
+ **Differentiators:** Feature C, Feature D
418
+ **Research notes:** [any relevant notes]
419
+ ```
420
+
421
+ **If no research:** Gather requirements through conversation. Ask: "What are the main things users need to do with [new features]?" Clarify, probe for related capabilities, group into categories.
422
+
423
+ **Scope each category** via AskUserQuestion (multiSelect: true, header max 12 chars):
424
+ - "[Feature 1]" — [brief description]
425
+ - "[Feature 2]" — [brief description]
426
+ - "None for this milestone" — Defer entire category
427
+
428
+ Track: Selected → this milestone. Unselected table stakes → future. Unselected differentiators → out of scope.
429
+
430
+ **Identify gaps** via AskUserQuestion:
431
+ - "No, research covered it" — Proceed
432
+ - "Yes, let me add some" — Capture additions
433
+
434
+ **Generate REQUIREMENTS.md:**
435
+ - v1 Requirements grouped by category (checkboxes, REQ-IDs)
436
+ - Future Requirements (deferred)
437
+ - Out of Scope (explicit exclusions with reasoning)
438
+ - Traceability section (empty, filled by roadmap)
439
+
440
+ **REQ-ID format:** `[CATEGORY]-[NUMBER]` (AUTH-01, NOTIF-02). Continue numbering from existing.
441
+
442
+ **Requirement quality criteria:**
443
+
444
+ Good requirements are:
445
+ - **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
446
+ - **User-centric:** "User can X" (not "System does Y")
447
+ - **Atomic:** One capability per requirement (not "User can login and manage profile")
448
+ - **Independent:** Minimal dependencies on other requirements
449
+
450
+ Present FULL requirements list for confirmation:
451
+
452
+ ```
453
+ ## Milestone v[X.Y] Requirements
454
+
455
+ ### [Category 1]
456
+ - [ ] **CAT1-01**: User can do X
457
+ - [ ] **CAT1-02**: User can do Y
458
+
459
+ ### [Category 2]
460
+ - [ ] **CAT2-01**: User can do Z
461
+
462
+ Does this capture what you're building? (yes / adjust)
463
+ ```
464
+
465
+ If "adjust": Return to scoping.
466
+
467
+ **Commit requirements:**
468
+ ```bash
469
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: define milestone v[X.Y] requirements" --files .planning/REQUIREMENTS.md
470
+ ```
471
+
472
+ **Update lock file state:**
473
+ ```bash
474
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="requirements_defined"
475
+ ```
476
+
477
+ ---
478
+
479
+ ## 10. Create Roadmap (with Stuck Detection - GSD-2 Pattern)
480
+
481
+ ```
482
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
483
+ EZ ► CREATING ROADMAP
484
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
485
+
486
+ ◆ Spawning roadmapper...
487
+ ```
488
+
489
+ **Initialize stuck detection:**
490
+
491
+ ```bash
492
+ # Start stuck watcher
493
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" stuck-watch start \
494
+ --operation="roadmap-creation" \
495
+ --max-retries=1 \
496
+ --timeout=300
497
+ ```
498
+
499
+ **Starting phase number:** Read MILESTONES.md for last phase number. Continue from there (v1.0 ended at phase 5 → v1.1 starts at phase 6).
500
+
501
+ ```
502
+ Task(prompt="
503
+ <planning_context>
504
+ <files_to_read>
505
+ - .planning/PROJECT.md
506
+ - .planning/REQUIREMENTS.md
507
+ - .planning/research/SUMMARY.md (if exists)
508
+ - .planning/config.json
509
+ - .planning/MILESTONES.md
510
+ </files_to_read>
511
+ </planning_context>
512
+
513
+ <instructions>
514
+ Create roadmap for milestone v[X.Y]:
515
+ 1. Start phase numbering from [N]
516
+ 2. Derive phases from THIS MILESTONE's requirements only
517
+ 3. Map every requirement to exactly one phase
518
+ 4. Derive 2-5 success criteria per phase (observable user behaviors)
519
+ 5. Validate 100% coverage
520
+ 6. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
521
+ 7. Return ROADMAP CREATED with summary
522
+
523
+ Write files first, then return.
524
+ </instructions>
525
+ ", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap")
526
+ ```
527
+
528
+ **Handle return:**
529
+
530
+ **If `## ROADMAP BLOCKED`:**
531
+ 1. Log error type and location
532
+ 2. Retry ONCE with diagnostic context:
533
+ ```
534
+ Task(prompt="
535
+ <retry_context>
536
+ PREVIOUS ATTEMPT FAILED
537
+ Error Type: [error_type]
538
+ Error Location: [location]
539
+ Suggested Fix: [fix]
540
+
541
+ CONTEXT SNAPSHOT FOR DEBUGGING:
542
+ [snapshot of files read]
543
+
544
+ Please try again with this diagnostic information.
545
+ </retry_context>
546
+ ", subagent_type="ez-roadmapper", model="{roadmapper_model}", description="Create roadmap (retry)")
547
+ ```
548
+ 3. If fails again → STOP with exact failure report:
549
+ ```
550
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
551
+ EZ ► ROADMAP CREATION FAILED
552
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
553
+
554
+ Error Type: [type]
555
+ Error Location: [file:line]
556
+ Suggested Fix: [action]
557
+
558
+ Debug: Run `/ez:debug` to see current session state
559
+
560
+ Next Steps:
561
+ 1. Review error details
562
+ 2. Fix [specific issue]
563
+ 3. Run: /ez:plan-milestone --retry
564
+ ```
565
+
566
+ **If `## ROADMAP CREATED`:** Read ROADMAP.md, present inline:
567
+
568
+ ```
569
+ ## Proposed Roadmap
570
+
571
+ **[N] phases** | **[X] requirements mapped** | All covered ✓
572
+
573
+ | # | Phase | Goal | Requirements | Success Criteria |
574
+ |---|-------|------|--------------|------------------|
575
+ | [N] | [Name] | [Goal] | [REQ-IDs] | [count] |
576
+
577
+ ### Phase Details
578
+
579
+ **Phase [N]: [Name]**
580
+ Goal: [goal]
581
+ Requirements: [REQ-IDs]
582
+ Success criteria:
583
+ 1. [criterion]
584
+ 2. [criterion]
585
+ ```
586
+
587
+ **Ask for approval** via AskUserQuestion:
588
+ - "Approve" — Commit and continue
589
+ - "Adjust phases" — Tell me what to change
590
+ - "Review full file" — Show raw ROADMAP.md
591
+
592
+ **If "Adjust":** Get notes, re-spawn roadmapper with revision context, loop until approved.
593
+ **If "Review":** Display raw ROADMAP.md, re-ask.
594
+
595
+ **Commit roadmap** (after approval):
596
+ ```bash
597
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: create milestone v[X.Y] roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
598
+ ```
599
+
600
+ **Update lock file state:**
601
+ ```bash
602
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-update --state="roadmap_created"
603
+ ```
604
+
605
+ ---
606
+
607
+ ## 11. Release Lock File
608
+
609
+ **Milestone initialization complete:**
610
+
611
+ ```bash
612
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" lock-release
613
+ ```
614
+
615
+ ---
616
+
617
+ ## 12. Post-Milestone Cost Report (GSD-2 Pattern)
618
+
619
+ **After all commits complete:**
620
+
621
+ ```bash
622
+ # Generate cost report
623
+ COST_REPORT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" cost-report \
624
+ --milestone="v[X.Y]" \
625
+ --format=summary)
626
+ ```
627
+
628
+ **Display:**
629
+ ```
630
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
631
+ EZ ► MILESTONE INITIALIZATION COST
632
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
633
+
634
+ Milestone: v[X.Y]
635
+ Phases: [N]
636
+ Requirements: [X]
637
+
638
+ Initialization Cost:
639
+ - Research: $[X.XX] ([N] tokens)
640
+ - Requirements: $[X.XX] ([N] tokens)
641
+ - Roadmap: $[X.XX] ([N] tokens)
642
+ - Total: $[X.XX] ([N] tokens)
643
+
644
+ Budget Remaining: $[XX.XX] of $[XX.XX]
645
+
646
+ Projected Total (based on similar milestones): $[XX.XX]
647
+
648
+ View detailed report: /ez:cost --milestone=v[X.Y]
649
+ ```
650
+
651
+ ---
652
+
653
+ ## 13. Done
654
+
655
+ ```
656
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
657
+ EZ ► MILESTONE INITIALIZED ✓
658
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
659
+
660
+ **Milestone v[X.Y]: [Name]**
661
+
662
+ | Artifact | Location |
663
+ |----------------|-----------------------------|
664
+ | Project | `.planning/PROJECT.md` |
665
+ | Research | `.planning/research/` |
666
+ | Requirements | `.planning/REQUIREMENTS.md` |
667
+ | Roadmap | `.planning/ROADMAP.md` |
668
+ | Metrics | `.planning/metrics.json` |
669
+
670
+ **[N] phases** | **[X] requirements** | Ready to build ✓
671
+
672
+ ## ▶ Next Up
673
+
674
+ **Phase [N]: [Phase Name]** — [Goal]
675
+
676
+ `/ez:discuss-phase [N]` — gather context and clarify approach
677
+
678
+ <sub>`/clear` first → fresh context window</sub>
679
+
680
+ Also: `/ez:plan-phase [N]` — skip discussion, plan directly
681
+ ```
682
+
683
+ </process>
684
+
685
+ <success_criteria>
686
+ - [ ] Pre-flight health check passed (all systems go)
687
+ - [ ] Cost tracking initialized (metrics.json created)
688
+ - [ ] Lock file created and maintained throughout
689
+ - [ ] PROJECT.md updated with Current Milestone section
690
+ - [ ] STATE.md reset for new milestone
691
+ - [ ] MILESTONE-CONTEXT.md consumed and deleted (if existed)
692
+ - [ ] Research completed (if selected) — 4 parallel agents, milestone-aware, fresh context
693
+ - [ ] Requirements gathered and scoped per category
694
+ - [ ] REQUIREMENTS.md created with REQ-IDs
695
+ - [ ] ez-roadmapper spawned with phase numbering context
696
+ - [ ] Stuck detection active during roadmap creation
697
+ - [ ] Roadmap files written immediately (not draft)
698
+ - [ ] User feedback incorporated (if any)
699
+ - [ ] ROADMAP.md phases continue from previous milestone
700
+ - [ ] All commits made (if planning docs committed)
701
+ - [ ] Lock file released on completion
702
+ - [ ] Cost report displayed
703
+ - [ ] User knows next step: `/ez:discuss-phase [N]`
704
+
705
+ **Atomic commits:** Each phase commits its artifacts immediately.
706
+
707
+ **GSD-2 Reliability:**
708
+ - ✅ Crash recovery via lock files
709
+ - ✅ Cost transparency via metrics.json
710
+ - ✅ Fresh context per researcher/agent
711
+ - ✅ Stuck detection with diagnostics
712
+ - ✅ Health check pre-flight validation
713
+ </success_criteria>