@howlil/ez-agents 3.4.2 → 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 (365) hide show
  1. package/README.md +735 -462
  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 -0
  18. package/agents/ez-requirements-agent.md +377 -0
  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/install.js +3221 -3272
  30. package/bin/lib/analytics/analytics-collector.cjs +86 -0
  31. package/bin/lib/analytics/analytics-reporter.cjs +130 -0
  32. package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  33. package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  34. package/bin/lib/analytics/nps-tracker.cjs +147 -0
  35. package/bin/lib/archetype-detector.cjs +289 -0
  36. package/bin/lib/assistant-adapter.cjs +361 -0
  37. package/bin/lib/audit-exec.cjs +175 -0
  38. package/bin/lib/auth.cjs +176 -0
  39. package/bin/lib/backup-service.cjs +422 -0
  40. package/bin/lib/bdd-validator.cjs +622 -0
  41. package/bin/lib/business-flow-mapper.cjs +429 -0
  42. package/bin/lib/circuit-breaker.cjs +276 -0
  43. package/bin/lib/code-complexity-analyzer.cjs +360 -0
  44. package/bin/lib/codebase-analyzer.cjs +241 -0
  45. package/bin/lib/commands.cjs +691 -0
  46. package/bin/lib/config.cjs +236 -0
  47. package/bin/lib/constraint-extractor.cjs +526 -0
  48. package/bin/lib/content-scanner.cjs +238 -0
  49. package/bin/lib/context-cache.cjs +154 -0
  50. package/bin/lib/context-compressor.cjs +102 -0
  51. package/bin/lib/context-deduplicator.cjs +105 -0
  52. package/bin/lib/context-errors.cjs +78 -0
  53. package/bin/lib/context-manager.cjs +338 -0
  54. package/bin/lib/context-metadata-tracker.cjs +140 -0
  55. package/bin/lib/context-relevance-scorer.cjs +99 -0
  56. package/bin/lib/core.cjs +507 -0
  57. package/bin/lib/cost-alerts.cjs +174 -0
  58. package/bin/lib/cost-tracker.cjs +275 -0
  59. package/bin/lib/crash-recovery.cjs +220 -0
  60. package/bin/lib/dependency-graph.cjs +319 -0
  61. package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  62. package/bin/lib/deploy/deploy-detector.cjs +69 -0
  63. package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  64. package/bin/lib/deploy/deploy-health-check.cjs +88 -0
  65. package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  66. package/bin/lib/deploy/deploy-rollback.cjs +72 -0
  67. package/bin/lib/deploy/deploy-runner.cjs +97 -0
  68. package/bin/lib/deploy/deploy-status.cjs +74 -0
  69. package/bin/lib/discussion-synthesizer.cjs +439 -0
  70. package/bin/lib/error-cache.cjs +114 -0
  71. package/bin/lib/error-registry.cjs +177 -0
  72. package/bin/lib/file-access.cjs +207 -0
  73. package/bin/lib/file-lock.cjs +236 -0
  74. package/bin/lib/finops/budget-enforcer.cjs +126 -0
  75. package/bin/lib/finops/cost-reporter.cjs +132 -0
  76. package/bin/lib/finops/finops-analyzer.cjs +112 -0
  77. package/bin/lib/finops/spot-manager.cjs +118 -0
  78. package/bin/lib/framework-detector.cjs +396 -0
  79. package/bin/lib/frontmatter.cjs +313 -0
  80. package/bin/lib/fs-utils.cjs +153 -0
  81. package/bin/lib/gate-executor.cjs +272 -0
  82. package/bin/lib/gates/README.md +374 -0
  83. package/bin/lib/gates/gate-01-requirement.cjs +303 -0
  84. package/bin/lib/gates/gate-02-architecture.cjs +555 -0
  85. package/bin/lib/gates/gate-03-code.cjs +635 -0
  86. package/bin/lib/gates/gate-04-security.cjs +829 -0
  87. package/bin/lib/git-errors.cjs +83 -0
  88. package/bin/lib/git-utils.cjs +321 -0
  89. package/bin/lib/git-workflow-engine.cjs +1157 -0
  90. package/bin/lib/health-check.cjs +227 -0
  91. package/bin/lib/index.cjs +279 -0
  92. package/bin/lib/init.cjs +725 -0
  93. package/bin/lib/lock-logger.cjs +194 -0
  94. package/bin/lib/lock-state.cjs +263 -0
  95. package/bin/lib/lockfile-validator.cjs +227 -0
  96. package/bin/lib/log-rotation.cjs +71 -0
  97. package/bin/lib/logger.cjs +125 -0
  98. package/bin/lib/memory-compression.cjs +256 -0
  99. package/bin/lib/milestone.cjs +247 -0
  100. package/bin/lib/model-provider.cjs +241 -0
  101. package/bin/lib/package-manager-detector.cjs +203 -0
  102. package/bin/lib/package-manager-executor.cjs +385 -0
  103. package/bin/lib/package-manager-service.cjs +216 -0
  104. package/bin/lib/perf/api-monitor.cjs +88 -0
  105. package/bin/lib/perf/db-optimizer.cjs +78 -0
  106. package/bin/lib/perf/frontend-performance.cjs +56 -0
  107. package/bin/lib/perf/perf-analyzer.cjs +77 -0
  108. package/bin/lib/perf/perf-baseline.cjs +102 -0
  109. package/bin/lib/perf/perf-reporter.cjs +117 -0
  110. package/bin/lib/perf/regression-detector.cjs +92 -0
  111. package/bin/lib/phase.cjs +963 -0
  112. package/bin/lib/planning-write.cjs +123 -0
  113. package/bin/lib/project-reporter.cjs +565 -0
  114. package/bin/lib/quality-gate.cjs +332 -0
  115. package/bin/lib/quality-metrics.cjs +324 -0
  116. package/bin/lib/recovery-manager.cjs +98 -0
  117. package/bin/lib/release-validator.cjs +617 -0
  118. package/bin/lib/retry.cjs +119 -0
  119. package/bin/lib/roadmap.cjs +309 -0
  120. package/bin/lib/safe-exec.cjs +173 -0
  121. package/bin/lib/safe-path.cjs +130 -0
  122. package/bin/lib/security-errors.cjs +62 -0
  123. package/bin/lib/session-chain.cjs +304 -0
  124. package/bin/lib/session-errors.cjs +81 -0
  125. package/bin/lib/session-export.cjs +251 -0
  126. package/bin/lib/session-import.cjs +262 -0
  127. package/bin/lib/session-manager.cjs +280 -0
  128. package/bin/lib/skill-context.cjs +148 -0
  129. package/bin/lib/skill-matcher.cjs +236 -0
  130. package/bin/lib/skill-registry.cjs +360 -0
  131. package/bin/lib/skill-resolver.cjs +449 -0
  132. package/bin/lib/skill-triggers.cjs +90 -0
  133. package/bin/lib/skill-validator.cjs +270 -0
  134. package/bin/lib/skill-versioning.cjs +355 -0
  135. package/bin/lib/stack-detector.cjs +399 -0
  136. package/bin/lib/state.cjs +736 -0
  137. package/bin/lib/tech-debt-analyzer.cjs +309 -0
  138. package/bin/lib/temp-file.cjs +239 -0
  139. package/bin/lib/template.cjs +223 -0
  140. package/bin/lib/test-file-lock.cjs +112 -0
  141. package/bin/lib/test-graceful.cjs +93 -0
  142. package/bin/lib/test-logger.cjs +60 -0
  143. package/bin/lib/test-safe-exec.cjs +38 -0
  144. package/bin/lib/test-safe-path.cjs +33 -0
  145. package/bin/lib/test-temp-file.cjs +125 -0
  146. package/bin/lib/tier-manager.cjs +428 -0
  147. package/bin/lib/timeout-exec.cjs +63 -0
  148. package/bin/lib/tradeoff-analyzer.cjs +284 -0
  149. package/bin/lib/url-fetch.cjs +170 -0
  150. package/bin/lib/verify.cjs +863 -0
  151. package/bin/update.js +217 -214
  152. package/commands/deploy.cjs +53 -0
  153. package/commands/ez/add-tests.md +41 -41
  154. package/commands/ez/audit-milestone.md +36 -36
  155. package/commands/ez/complete-milestone.md +136 -136
  156. package/commands/ez/discuss-phase.md +90 -90
  157. package/commands/ez/execute-phase.md +52 -41
  158. package/commands/ez/help.md +22 -22
  159. package/commands/ez/map-codebase.md +71 -71
  160. package/commands/ez/new-milestone.md +44 -44
  161. package/commands/ez/new-project.md +51 -42
  162. package/commands/ez/plan-phase.md +53 -45
  163. package/commands/ez/progress.md +36 -24
  164. package/commands/ez/quick.md +45 -45
  165. package/commands/ez/resume-work.md +40 -40
  166. package/commands/ez/run-phase.md +580 -0
  167. package/commands/ez/settings.md +36 -36
  168. package/commands/ez/update.md +37 -37
  169. package/commands/ez/verify-work.md +402 -38
  170. package/commands/health-check.cjs +44 -0
  171. package/commands/rollback.cjs +47 -0
  172. package/ez-agents/bin/ez-tools.cjs +1692 -716
  173. package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
  174. package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
  175. package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
  176. package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
  177. package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
  178. package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
  179. package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
  180. package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
  181. package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  182. package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  183. package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
  184. package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
  185. package/ez-agents/bin/lib/audit-exec.cjs +166 -167
  186. package/ez-agents/bin/lib/auth.cjs +176 -176
  187. package/ez-agents/bin/lib/backup-service.cjs +422 -0
  188. package/ez-agents/bin/lib/bdd-validator.cjs +622 -0
  189. package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
  190. package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
  191. package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
  192. package/ez-agents/bin/lib/commands.cjs +685 -685
  193. package/ez-agents/bin/lib/config.cjs +41 -1
  194. package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
  195. package/ez-agents/bin/lib/content-scanner.cjs +238 -0
  196. package/ez-agents/bin/lib/context-cache.cjs +154 -0
  197. package/ez-agents/bin/lib/context-errors.cjs +71 -0
  198. package/ez-agents/bin/lib/context-manager.cjs +220 -0
  199. package/ez-agents/bin/lib/core.cjs +507 -512
  200. package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
  201. package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
  202. package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
  203. package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  204. package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
  205. package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  206. package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
  207. package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  208. package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
  209. package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
  210. package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
  211. package/ez-agents/bin/lib/discussion-synthesizer.cjs +458 -0
  212. package/ez-agents/bin/lib/file-access.cjs +207 -0
  213. package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
  214. package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
  215. package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
  216. package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
  217. package/ez-agents/bin/lib/framework-detector.cjs +396 -0
  218. package/ez-agents/bin/lib/frontmatter.cjs +3 -1
  219. package/ez-agents/bin/lib/gates/README.md +374 -0
  220. package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
  221. package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
  222. package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
  223. package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
  224. package/ez-agents/bin/lib/git-errors.cjs +83 -0
  225. package/ez-agents/bin/lib/git-utils.cjs +118 -0
  226. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
  227. package/ez-agents/bin/lib/health-check.cjs +162 -162
  228. package/ez-agents/bin/lib/index.cjs +40 -2
  229. package/ez-agents/bin/lib/init.cjs +0 -2
  230. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
  231. package/ez-agents/bin/lib/log-rotation.cjs +71 -0
  232. package/ez-agents/bin/lib/logger.cjs +99 -154
  233. package/ez-agents/bin/lib/memory-compression.cjs +256 -0
  234. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
  235. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
  236. package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
  237. package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
  238. package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
  239. package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
  240. package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
  241. package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
  242. package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
  243. package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
  244. package/ez-agents/bin/lib/project-reporter.cjs +502 -0
  245. package/ez-agents/bin/lib/quality-gate.cjs +332 -0
  246. package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
  247. package/ez-agents/bin/lib/release-validator.cjs +617 -0
  248. package/ez-agents/bin/lib/safe-exec.cjs +128 -214
  249. package/ez-agents/bin/lib/security-errors.cjs +62 -0
  250. package/ez-agents/bin/lib/session-chain.cjs +304 -0
  251. package/ez-agents/bin/lib/session-errors.cjs +81 -0
  252. package/ez-agents/bin/lib/session-export.cjs +251 -0
  253. package/ez-agents/bin/lib/session-import.cjs +262 -0
  254. package/ez-agents/bin/lib/session-manager.cjs +280 -0
  255. package/ez-agents/bin/lib/skill-context.cjs +148 -0
  256. package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
  257. package/ez-agents/bin/lib/skill-registry.cjs +341 -0
  258. package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
  259. package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
  260. package/ez-agents/bin/lib/skill-validator.cjs +270 -0
  261. package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
  262. package/ez-agents/bin/lib/stack-detector.cjs +399 -0
  263. package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
  264. package/ez-agents/bin/lib/tier-manager.cjs +428 -0
  265. package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
  266. package/ez-agents/bin/lib/url-fetch.cjs +170 -0
  267. package/ez-agents/bin/lib/verify.cjs +863 -863
  268. package/ez-agents/references/decimal-phase-calculation.md +65 -65
  269. package/ez-agents/references/git-integration.md +248 -248
  270. package/ez-agents/references/git-planning-commit.md +38 -38
  271. package/ez-agents/references/metrics-schema.md +118 -0
  272. package/ez-agents/references/model-profile-resolution.md +34 -34
  273. package/ez-agents/references/model-profiles.md +93 -93
  274. package/ez-agents/references/phase-argument-parsing.md +61 -61
  275. package/ez-agents/references/planning-config.md +340 -200
  276. package/ez-agents/references/tier-strategy.md +103 -0
  277. package/ez-agents/references/ui-brand.md +160 -160
  278. package/ez-agents/references/verification-patterns.md +612 -612
  279. package/ez-agents/templates/DEBUG.md +164 -164
  280. package/ez-agents/templates/UAT.md +247 -247
  281. package/ez-agents/templates/agent-output-format.md +404 -0
  282. package/ez-agents/templates/bdd-feature.md +173 -0
  283. package/ez-agents/templates/codebase/architecture.md +255 -255
  284. package/ez-agents/templates/codebase/structure.md +285 -285
  285. package/ez-agents/templates/copilot-instructions.md +7 -7
  286. package/ez-agents/templates/debug-subagent-prompt.md +91 -91
  287. package/ez-agents/templates/discovery.md +146 -146
  288. package/ez-agents/templates/discussion.md +68 -0
  289. package/ez-agents/templates/handoff-protocol.md +294 -0
  290. package/ez-agents/templates/incident-runbook.md +205 -0
  291. package/ez-agents/templates/mode-workflow-templates.md +301 -0
  292. package/ez-agents/templates/phase-prompt.md +610 -610
  293. package/ez-agents/templates/planner-subagent-prompt.md +117 -117
  294. package/ez-agents/templates/project.md +184 -184
  295. package/ez-agents/templates/release-checklist.md +136 -0
  296. package/ez-agents/templates/research.md +552 -552
  297. package/ez-agents/templates/rollback-plan.md +201 -0
  298. package/ez-agents/templates/security-user-setup.md +244 -0
  299. package/ez-agents/templates/skill-validation-rules.md +476 -0
  300. package/ez-agents/templates/state.md +180 -176
  301. package/ez-agents/templates/summary-complex.md +59 -59
  302. package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
  303. package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
  304. package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
  305. package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
  306. package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
  307. package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
  308. package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
  309. package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
  310. package/ez-agents/workflows/audit-milestone.md +1 -1
  311. package/ez-agents/workflows/autonomous.md +131 -30
  312. package/ez-agents/workflows/complete-milestone.md +1 -1
  313. package/ez-agents/workflows/discuss-phase.md +1 -1
  314. package/ez-agents/workflows/execute-phase.md +169 -3
  315. package/ez-agents/workflows/help.md +86 -133
  316. package/ez-agents/workflows/hotfix.md +291 -0
  317. package/ez-agents/workflows/new-milestone.md +340 -11
  318. package/ez-agents/workflows/new-project.md +294 -318
  319. package/ez-agents/workflows/plan-phase.md +22 -40
  320. package/ez-agents/workflows/progress.md +15 -25
  321. package/ez-agents/workflows/release.md +253 -0
  322. package/ez-agents/workflows/resume-session.md +215 -0
  323. package/ez-agents/workflows/run-phase.md +531 -0
  324. package/ez-agents/workflows/settings.md +2 -35
  325. package/hooks/dist/ez-check-update.js +81 -81
  326. package/hooks/dist/ez-context-monitor.js +148 -141
  327. package/hooks/dist/ez-statusline.js +115 -115
  328. package/package.json +78 -64
  329. package/scripts/fix-qwen-installation.js +144 -144
  330. package/agents/ez-integration-checker.md +0 -443
  331. package/agents/ez-nyquist-auditor.md +0 -176
  332. package/agents/ez-plan-checker.md +0 -706
  333. package/agents/ez-research-synthesizer.md +0 -247
  334. package/agents/ez-ui-auditor.md +0 -439
  335. package/agents/ez-ui-checker.md +0 -300
  336. package/agents/ez-ui-researcher.md +0 -353
  337. package/commands/ez/add-phase.md +0 -43
  338. package/commands/ez/add-todo.md +0 -47
  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/health.md +0 -22
  345. package/commands/ez/insert-phase.md +0 -32
  346. package/commands/ez/join-discord.md +0 -18
  347. package/commands/ez/list-phase-assumptions.md +0 -46
  348. package/commands/ez/pause-work.md +0 -38
  349. package/commands/ez/plan-milestone-gaps.md +0 -34
  350. package/commands/ez/reapply-patches.md +0 -124
  351. package/commands/ez/remove-phase.md +0 -31
  352. package/commands/ez/research-phase.md +0 -190
  353. package/commands/ez/set-profile.md +0 -34
  354. package/commands/ez/stats.md +0 -18
  355. package/commands/ez/ui-phase.md +0 -34
  356. package/commands/ez/ui-review.md +0 -32
  357. package/commands/ez/validate-phase.md +0 -35
  358. package/ez-agents/templates/UI-SPEC.md +0 -100
  359. package/ez-agents/templates/VALIDATION.md +0 -76
  360. package/ez-agents/templates/context.md +0 -352
  361. package/ez-agents/templates/verification-report.md +0 -322
  362. package/ez-agents/workflows/research-phase.md +0 -74
  363. package/ez-agents/workflows/ui-phase.md +0 -290
  364. package/ez-agents/workflows/ui-review.md +0 -157
  365. package/ez-agents/workflows/validate-phase.md +0 -167
@@ -1,38 +1,38 @@
1
- # Git Planning Commit
2
-
3
- Commit planning artifacts using the ez-tools CLI, which automatically checks `commit_docs` config and gitignore status.
4
-
5
- ## Commit via CLI
6
-
7
- Always use `ez-tools.cjs commit` for `.planning/` files — it handles `commit_docs` and gitignore checks automatically:
8
-
9
- ```bash
10
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
11
- ```
12
-
13
- The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
14
-
15
- ## Amend previous commit
16
-
17
- To fold `.planning/` file changes into the previous commit:
18
-
19
- ```bash
20
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "" --files .planning/codebase/*.md --amend
21
- ```
22
-
23
- ## Commit Message Patterns
24
-
25
- | Command | Scope | Example |
26
- |---------|-------|---------|
27
- | plan-phase | phase | `docs(phase-03): create authentication plans` |
28
- | execute-phase | phase | `docs(phase-03): complete authentication phase` |
29
- | new-milestone | milestone | `docs: start milestone v1.1` |
30
- | remove-phase | chore | `chore: remove phase 17 (dashboard)` |
31
- | insert-phase | phase | `docs: insert phase 16.1 (critical fix)` |
32
- | add-phase | phase | `docs: add phase 07 (settings page)` |
33
-
34
- ## When to Skip
35
-
36
- - `commit_docs: false` in config
37
- - `.planning/` is gitignored
38
- - No changes to commit (check with `git status --porcelain .planning/`)
1
+ # Git Planning Commit
2
+
3
+ Commit planning artifacts using the ez-tools CLI, which automatically checks `commit_docs` config and gitignore status.
4
+
5
+ ## Commit via CLI
6
+
7
+ Always use `ez-tools.cjs commit` for `.planning/` files — it handles `commit_docs` and gitignore checks automatically:
8
+
9
+ ```bash
10
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
11
+ ```
12
+
13
+ The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
14
+
15
+ ## Amend previous commit
16
+
17
+ To fold `.planning/` file changes into the previous commit:
18
+
19
+ ```bash
20
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "" --files .planning/codebase/*.md --amend
21
+ ```
22
+
23
+ ## Commit Message Patterns
24
+
25
+ | Command | Scope | Example |
26
+ |---------|-------|---------|
27
+ | plan-phase | phase | `docs(phase-03): create authentication plans` |
28
+ | execute-phase | phase | `docs(phase-03): complete authentication phase` |
29
+ | new-milestone | milestone | `docs: start milestone v1.1` |
30
+ | remove-phase | chore | `chore: remove phase 17 (dashboard)` |
31
+ | insert-phase | phase | `docs: insert phase 16.1 (critical fix)` |
32
+ | add-phase | phase | `docs: add phase 07 (settings page)` |
33
+
34
+ ## When to Skip
35
+
36
+ - `commit_docs: false` in config
37
+ - `.planning/` is gitignored
38
+ - No changes to commit (check with `git status --porcelain .planning/`)
@@ -0,0 +1,118 @@
1
+ # Metrics Schema Reference
2
+
3
+ Schema for `.planning/metrics.json` — the EZ Agents success metrics store.
4
+
5
+ ## Full Schema
6
+
7
+ ```json
8
+ {
9
+ "schema_version": "1.0",
10
+ "project": "project-name",
11
+ "updated": "2026-03-19T00:00:00Z",
12
+
13
+ "phase_metrics": [
14
+ {
15
+ "phase": 18,
16
+ "phase_name": "session-memory",
17
+ "plans_total": 4,
18
+ "plans_completed": 4,
19
+ "velocity_min": 24,
20
+ "defect_density": 0.12,
21
+ "bdd_pass_rate": 0.84,
22
+ "bdd_must_passing": 8,
23
+ "bdd_must_total": 9,
24
+ "deviation_count": 2,
25
+ "completed_at": "2026-03-19T00:00:00Z"
26
+ }
27
+ ],
28
+
29
+ "project_metrics": {
30
+ "requirements_coverage_pct": 78,
31
+ "test_coverage_pct": 74,
32
+ "bdd_scenarios_total": 60,
33
+ "bdd_scenarios_passing": 45,
34
+ "bdd_scenarios_must": 25,
35
+ "bdd_scenarios_must_passing": 24
36
+ },
37
+
38
+ "agent_metrics": {
39
+ "total_token_cost_usd": 18.40,
40
+ "avg_cost_per_plan": 0.27,
41
+ "deviation_rate": 0.15,
42
+ "avg_plans_per_phase": 3.2,
43
+ "avg_velocity_min_per_plan": 22
44
+ },
45
+
46
+ "business_metrics": {
47
+ "time_to_first_ship_days": 95,
48
+ "hotfixes_deployed": 0,
49
+ "milestones_shipped": 1,
50
+ "current_tier": "medium",
51
+ "phases_total": 29,
52
+ "phases_completed": 18
53
+ }
54
+ }
55
+ ```
56
+
57
+ ## Field Definitions
58
+
59
+ ### phase_metrics[]
60
+
61
+ | Field | Type | Source | Description |
62
+ |-------|------|--------|-------------|
63
+ | `phase` | int | ez-executor | Phase number |
64
+ | `plans_total` | int | ez-executor | Plans in phase |
65
+ | `plans_completed` | int | ez-executor | Plans with SUMMARY.md |
66
+ | `velocity_min` | int | ez-executor | Minutes from first to last commit in phase |
67
+ | `defect_density` | float | ez-executor | Deviations / tasks executed |
68
+ | `bdd_pass_rate` | float | ez-verifier | @must scenarios passing / total @must |
69
+ | `deviation_count` | int | ez-executor | Auto-fix deviations logged |
70
+
71
+ ### project_metrics
72
+
73
+ | Field | Type | Source | Description |
74
+ |-------|------|--------|-------------|
75
+ | `requirements_coverage_pct` | int | ez-executor | % of REQUIREMENTS.md checked off |
76
+ | `test_coverage_pct` | int | ez-verifier | From coverage tool output |
77
+ | `bdd_scenarios_passing` | int | ez-verifier | Scenarios with green status |
78
+
79
+ ### agent_metrics
80
+
81
+ | Field | Type | Source | Description |
82
+ |-------|------|--------|-------------|
83
+ | `total_token_cost_usd` | float | metrics-tracker | Accumulated from state.record-metric |
84
+ | `avg_cost_per_plan` | float | metrics-tracker | total / plans_completed |
85
+ | `deviation_rate` | float | metrics-tracker | total_deviations / total_tasks |
86
+
87
+ ### business_metrics
88
+
89
+ | Field | Type | Source | Description |
90
+ |-------|------|--------|-------------|
91
+ | `time_to_first_ship_days` | int | ez-release-agent | Days from project init to first release |
92
+ | `hotfixes_deployed` | int | ez-release-agent | Hotfixes tagged and pushed |
93
+ | `current_tier` | string | tier-manager | mvp / medium / enterprise |
94
+
95
+ ## Capture Points
96
+
97
+ | Metric | When Captured | Who Captures |
98
+ |--------|---------------|--------------|
99
+ | velocity_min | After SUMMARY.md created | ez-executor (state record-metric) |
100
+ | deviation_count | During execution | ez-executor (per deviation Rule 1-3) |
101
+ | defect_density | After plan completes | ez-executor (computed) |
102
+ | bdd_pass_rate | After VERIFICATION.md | ez-verifier (metrics record-bdd) |
103
+ | test_coverage_pct | After verification | ez-verifier (from coverage tool) |
104
+ | requirements_coverage_pct | After mark-complete | ez-executor (computed from REQUIREMENTS.md) |
105
+ | total_token_cost_usd | Ongoing | ez-executor (from state.record-metric cost field) |
106
+ | hotfixes_deployed | After hotfix tag | ez-release-agent |
107
+
108
+ ## Dashboard Output
109
+
110
+ ```
111
+ /ez:stats → enhanced dashboard
112
+
113
+ PROGRESS: Phase 18/29 (62%) | Requirements 78% | BDD 80%
114
+ VELOCITY: 22 min/plan avg | Trend: ↑ IMPROVING
115
+ QUALITY: Coverage 74% | Defect density 0.12 | Deviation 15%
116
+ COSTS: $18.40 total | $0.27/plan | Est. remaining: ~$3.00
117
+ RELEASE: Tier: Medium | Hotfixes: 0 | Blockers: 0
118
+ ```
@@ -1,34 +1,34 @@
1
- # Model Profile Resolution
2
-
3
- Resolve model profile once at the start of orchestration, then use it for all Task spawns.
4
-
5
- ## Resolution Pattern
6
-
7
- ```bash
8
- MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
9
- ```
10
-
11
- Default: `balanced` if not set or config missing.
12
-
13
- ## Lookup Table
14
-
15
- @~/.claude/ez-agents/references/model-profiles.md
16
-
17
- Look up the agent in the table for the resolved profile. Pass the model parameter to Task calls:
18
-
19
- ```
20
- Task(
21
- prompt="...",
22
- subagent_type="ez-planner",
23
- model="{resolved_model}" # "inherit", "sonnet", or "haiku"
24
- )
25
- ```
26
-
27
- **Note:** Opus-tier agents resolve to `"inherit"` (not `"opus"`). This causes the agent to use the parent session's model, avoiding conflicts with organization policies that may block specific opus versions.
28
-
29
- ## Usage
30
-
31
- 1. Resolve once at orchestration start
32
- 2. Store the profile value
33
- 3. Look up each agent's model from the table when spawning
34
- 4. Pass model parameter to each Task call (values: `"inherit"`, `"sonnet"`, `"haiku"`)
1
+ # Model Profile Resolution
2
+
3
+ Resolve model profile once at the start of orchestration, then use it for all Task spawns.
4
+
5
+ ## Resolution Pattern
6
+
7
+ ```bash
8
+ MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
9
+ ```
10
+
11
+ Default: `balanced` if not set or config missing.
12
+
13
+ ## Lookup Table
14
+
15
+ @~/.claude/ez-agents/references/model-profiles.md
16
+
17
+ Look up the agent in the table for the resolved profile. Pass the model parameter to Task calls:
18
+
19
+ ```
20
+ Task(
21
+ prompt="...",
22
+ subagent_type="ez-planner",
23
+ model="{resolved_model}" # "inherit", "sonnet", or "haiku"
24
+ )
25
+ ```
26
+
27
+ **Note:** Opus-tier agents resolve to `"inherit"` (not `"opus"`). This causes the agent to use the parent session's model, avoiding conflicts with organization policies that may block specific opus versions.
28
+
29
+ ## Usage
30
+
31
+ 1. Resolve once at orchestration start
32
+ 2. Store the profile value
33
+ 3. Look up each agent's model from the table when spawning
34
+ 4. Pass model parameter to each Task call (values: `"inherit"`, `"sonnet"`, `"haiku"`)
@@ -1,93 +1,93 @@
1
- # Model Profiles
2
-
3
- Model profiles control which Claude model each EZ Agents agent uses. This allows balancing quality vs token spend.
4
-
5
- ## Profile Definitions
6
-
7
- | Agent | `quality` | `balanced` | `budget` |
8
- |-------|-----------|------------|----------|
9
- | ez-planner | opus | opus | sonnet |
10
- | ez-roadmapper | opus | sonnet | sonnet |
11
- | ez-executor | opus | sonnet | sonnet |
12
- | ez-phase-researcher | opus | sonnet | haiku |
13
- | ez-project-researcher | opus | sonnet | haiku |
14
- | ez-research-synthesizer | sonnet | sonnet | haiku |
15
- | ez-debugger | opus | sonnet | sonnet |
16
- | ez-codebase-mapper | sonnet | haiku | haiku |
17
- | ez-verifier | sonnet | sonnet | haiku |
18
- | ez-plan-checker | sonnet | sonnet | haiku |
19
- | ez-integration-checker | sonnet | sonnet | haiku |
20
- | ez-nyquist-auditor | sonnet | sonnet | haiku |
21
-
22
- ## Profile Philosophy
23
-
24
- **quality** - Maximum reasoning power
25
- - Opus for all decision-making agents
26
- - Sonnet for read-only verification
27
- - Use when: quota available, critical architecture work
28
-
29
- **balanced** (default) - Smart allocation
30
- - Opus only for planning (where architecture decisions happen)
31
- - Sonnet for execution and research (follows explicit instructions)
32
- - Sonnet for verification (needs reasoning, not just pattern matching)
33
- - Use when: normal development, good balance of quality and cost
34
-
35
- **budget** - Minimal Opus usage
36
- - Sonnet for anything that writes code
37
- - Haiku for research and verification
38
- - Use when: conserving quota, high-volume work, less critical phases
39
-
40
- ## Resolution Logic
41
-
42
- Orchestrators resolve model before spawning:
43
-
44
- ```
45
- 1. Read .planning/config.json
46
- 2. Check model_overrides for agent-specific override
47
- 3. If no override, look up agent in profile table
48
- 4. Pass model parameter to Task call
49
- ```
50
-
51
- ## Per-Agent Overrides
52
-
53
- Override specific agents without changing the entire profile:
54
-
55
- ```json
56
- {
57
- "model_profile": "balanced",
58
- "model_overrides": {
59
- "ez-executor": "opus",
60
- "ez-planner": "haiku"
61
- }
62
- }
63
- ```
64
-
65
- Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`.
66
-
67
- ## Switching Profiles
68
-
69
- Runtime: `/ez:set-profile <profile>`
70
-
71
- Per-project default: Set in `.planning/config.json`:
72
- ```json
73
- {
74
- "model_profile": "balanced"
75
- }
76
- ```
77
-
78
- ## Design Rationale
79
-
80
- **Why Opus for ez-planner?**
81
- Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.
82
-
83
- **Why Sonnet for ez-executor?**
84
- Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.
85
-
86
- **Why Sonnet (not Haiku) for verifiers in balanced?**
87
- Verification requires goal-backward reasoning - checking if code *delivers* what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.
88
-
89
- **Why Haiku for ez-codebase-mapper?**
90
- Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.
91
-
92
- **Why `inherit` instead of passing `opus` directly?**
93
- Claude Code's `"opus"` alias maps to a specific model version. Organizations may block older opus versions while allowing newer ones. EZ Agents returns `"inherit"` for opus-tier agents, causing them to use whatever opus version the user has configured in their session. This avoids version conflicts and silent fallbacks to Sonnet.
1
+ # Model Profiles
2
+
3
+ Model profiles control which Claude model each EZ Agents agent uses. This allows balancing quality vs token spend.
4
+
5
+ ## Profile Definitions
6
+
7
+ | Agent | `quality` | `balanced` | `budget` |
8
+ |-------|-----------|------------|----------|
9
+ | ez-planner | opus | opus | sonnet |
10
+ | ez-roadmapper | opus | sonnet | sonnet |
11
+ | ez-executor | opus | sonnet | sonnet |
12
+ | ez-phase-researcher | opus | sonnet | haiku |
13
+ | ez-project-researcher | opus | sonnet | haiku |
14
+ | ez-research-synthesizer | sonnet | sonnet | haiku |
15
+ | ez-debugger | opus | sonnet | sonnet |
16
+ | ez-codebase-mapper | sonnet | haiku | haiku |
17
+ | ez-verifier | sonnet | sonnet | haiku |
18
+ | ez-plan-checker | sonnet | sonnet | haiku |
19
+ | ez-integration-checker | sonnet | sonnet | haiku |
20
+ | ez-nyquist-auditor | sonnet | sonnet | haiku |
21
+
22
+ ## Profile Philosophy
23
+
24
+ **quality** - Maximum reasoning power
25
+ - Opus for all decision-making agents
26
+ - Sonnet for read-only verification
27
+ - Use when: quota available, critical architecture work
28
+
29
+ **balanced** (default) - Smart allocation
30
+ - Opus only for planning (where architecture decisions happen)
31
+ - Sonnet for execution and research (follows explicit instructions)
32
+ - Sonnet for verification (needs reasoning, not just pattern matching)
33
+ - Use when: normal development, good balance of quality and cost
34
+
35
+ **budget** - Minimal Opus usage
36
+ - Sonnet for anything that writes code
37
+ - Haiku for research and verification
38
+ - Use when: conserving quota, high-volume work, less critical phases
39
+
40
+ ## Resolution Logic
41
+
42
+ Orchestrators resolve model before spawning:
43
+
44
+ ```
45
+ 1. Read .planning/config.json
46
+ 2. Check model_overrides for agent-specific override
47
+ 3. If no override, look up agent in profile table
48
+ 4. Pass model parameter to Task call
49
+ ```
50
+
51
+ ## Per-Agent Overrides
52
+
53
+ Override specific agents without changing the entire profile:
54
+
55
+ ```json
56
+ {
57
+ "model_profile": "balanced",
58
+ "model_overrides": {
59
+ "ez-executor": "opus",
60
+ "ez-planner": "haiku"
61
+ }
62
+ }
63
+ ```
64
+
65
+ Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`.
66
+
67
+ ## Switching Profiles
68
+
69
+ Runtime: `/ez:set-profile <profile>`
70
+
71
+ Per-project default: Set in `.planning/config.json`:
72
+ ```json
73
+ {
74
+ "model_profile": "balanced"
75
+ }
76
+ ```
77
+
78
+ ## Design Rationale
79
+
80
+ **Why Opus for ez-planner?**
81
+ Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.
82
+
83
+ **Why Sonnet for ez-executor?**
84
+ Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.
85
+
86
+ **Why Sonnet (not Haiku) for verifiers in balanced?**
87
+ Verification requires goal-backward reasoning - checking if code *delivers* what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.
88
+
89
+ **Why Haiku for ez-codebase-mapper?**
90
+ Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.
91
+
92
+ **Why `inherit` instead of passing `opus` directly?**
93
+ Claude Code's `"opus"` alias maps to a specific model version. Organizations may block older opus versions while allowing newer ones. EZ Agents returns `"inherit"` for opus-tier agents, causing them to use whatever opus version the user has configured in their session. This avoids version conflicts and silent fallbacks to Sonnet.
@@ -1,61 +1,61 @@
1
- # Phase Argument Parsing
2
-
3
- Parse and normalize phase arguments for commands that operate on phases.
4
-
5
- ## Extraction
6
-
7
- From `$ARGUMENTS`:
8
- - Extract phase number (first numeric argument)
9
- - Extract flags (prefixed with `--`)
10
- - Remaining text is description (for insert/add commands)
11
-
12
- ## Using ez-tools
13
-
14
- The `find-phase` command handles normalization and validation in one step:
15
-
16
- ```bash
17
- PHASE_INFO=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" find-phase "${PHASE}")
18
- ```
19
-
20
- Returns JSON with:
21
- - `found`: true/false
22
- - `directory`: Full path to phase directory
23
- - `phase_number`: Normalized number (e.g., "06", "06.1")
24
- - `phase_name`: Name portion (e.g., "foundation")
25
- - `plans`: Array of PLAN.md files
26
- - `summaries`: Array of SUMMARY.md files
27
-
28
- ## Manual Normalization (Legacy)
29
-
30
- Zero-pad integer phases to 2 digits. Preserve decimal suffixes.
31
-
32
- ```bash
33
- # Normalize phase number
34
- if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
35
- # Integer: 8 → 08
36
- PHASE=$(printf "%02d" "$PHASE")
37
- elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
38
- # Decimal: 2.1 → 02.1
39
- PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
40
- fi
41
- ```
42
-
43
- ## Validation
44
-
45
- Use `roadmap get-phase` to validate phase exists:
46
-
47
- ```bash
48
- PHASE_CHECK=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}")
49
- if [ "$(printf '%s\n' "$PHASE_CHECK" | jq -r '.found')" = "false" ]; then
50
- echo "ERROR: Phase ${PHASE} not found in roadmap"
51
- exit 1
52
- fi
53
- ```
54
-
55
- ## Directory Lookup
56
-
57
- Use `find-phase` for directory lookup:
58
-
59
- ```bash
60
- PHASE_DIR=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" find-phase "${PHASE}" --raw)
61
- ```
1
+ # Phase Argument Parsing
2
+
3
+ Parse and normalize phase arguments for commands that operate on phases.
4
+
5
+ ## Extraction
6
+
7
+ From `$ARGUMENTS`:
8
+ - Extract phase number (first numeric argument)
9
+ - Extract flags (prefixed with `--`)
10
+ - Remaining text is description (for insert/add commands)
11
+
12
+ ## Using ez-tools
13
+
14
+ The `find-phase` command handles normalization and validation in one step:
15
+
16
+ ```bash
17
+ PHASE_INFO=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" find-phase "${PHASE}")
18
+ ```
19
+
20
+ Returns JSON with:
21
+ - `found`: true/false
22
+ - `directory`: Full path to phase directory
23
+ - `phase_number`: Normalized number (e.g., "06", "06.1")
24
+ - `phase_name`: Name portion (e.g., "foundation")
25
+ - `plans`: Array of PLAN.md files
26
+ - `summaries`: Array of SUMMARY.md files
27
+
28
+ ## Manual Normalization (Legacy)
29
+
30
+ Zero-pad integer phases to 2 digits. Preserve decimal suffixes.
31
+
32
+ ```bash
33
+ # Normalize phase number
34
+ if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
35
+ # Integer: 8 → 08
36
+ PHASE=$(printf "%02d" "$PHASE")
37
+ elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
38
+ # Decimal: 2.1 → 02.1
39
+ PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
40
+ fi
41
+ ```
42
+
43
+ ## Validation
44
+
45
+ Use `roadmap get-phase` to validate phase exists:
46
+
47
+ ```bash
48
+ PHASE_CHECK=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}")
49
+ if [ "$(printf '%s\n' "$PHASE_CHECK" | jq -r '.found')" = "false" ]; then
50
+ echo "ERROR: Phase ${PHASE} not found in roadmap"
51
+ exit 1
52
+ fi
53
+ ```
54
+
55
+ ## Directory Lookup
56
+
57
+ Use `find-phase` for directory lookup:
58
+
59
+ ```bash
60
+ PHASE_DIR=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" find-phase "${PHASE}" --raw)
61
+ ```