@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,340 +1,340 @@
1
- <planning_config>
2
-
3
- Configuration options for `.planning/` directory behavior.
4
-
5
- <config_schema>
6
- ```json
7
- "planning": {
8
- "commit_docs": true,
9
- "search_gitignored": false
10
- },
11
- "git": {
12
- "branching_strategy": "none",
13
- "phase_branch_template": "ez/phase-{phase}-{slug}",
14
- "milestone_branch_template": "ez/{milestone}-{slug}"
15
- }
16
- ```
17
-
18
- | Option | Default | Description |
19
- |--------|---------|-------------|
20
- | `commit_docs` | `true` | Whether to commit planning artifacts to git |
21
- | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
22
- | `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
23
- | `git.phase_branch_template` | `"ez/phase-{phase}-{slug}"` | Branch template for phase strategy |
24
- | `git.milestone_branch_template` | `"ez/{milestone}-{slug}"` | Branch template for milestone strategy |
25
- </config_schema>
26
-
27
- <commit_docs_behavior>
28
-
29
- **When `commit_docs: true` (default):**
30
- - Planning files committed normally
31
- - SUMMARY.md, STATE.md, ROADMAP.md tracked in git
32
- - Full history of planning decisions preserved
33
-
34
- **When `commit_docs: false`:**
35
- - Skip all `git add`/`git commit` for `.planning/` files
36
- - User must add `.planning/` to `.gitignore`
37
- - Useful for: OSS contributions, client projects, keeping planning private
38
-
39
- **Using ez-tools.cjs (preferred):**
40
-
41
- ```bash
42
- # Commit with automatic commit_docs + gitignore checks:
43
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: update state" --files .planning/STATE.md
44
-
45
- # Load config via state load (returns JSON):
46
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" state load)
47
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
48
- # commit_docs is available in the JSON output
49
-
50
- # Or use init commands which include commit_docs:
51
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init execute-phase "1")
52
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
53
- # commit_docs is included in all init command outputs
54
- ```
55
-
56
- **Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.planning/` in `.gitignore`.
57
-
58
- **Commit via CLI (handles checks automatically):**
59
-
60
- ```bash
61
- node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: update state" --files .planning/STATE.md
62
- ```
63
-
64
- The CLI checks `commit_docs` config and gitignore status internally — no manual conditionals needed.
65
-
66
- </commit_docs_behavior>
67
-
68
- <search_behavior>
69
-
70
- **When `search_gitignored: false` (default):**
71
- - Standard rg behavior (respects .gitignore)
72
- - Direct path searches work: `rg "pattern" .planning/` finds files
73
- - Broad searches skip gitignored: `rg "pattern"` skips `.planning/`
74
-
75
- **When `search_gitignored: true`:**
76
- - Add `--no-ignore` to broad rg searches that should include `.planning/`
77
- - Only needed when searching entire repo and expecting `.planning/` matches
78
-
79
- **Note:** Most EZ Agents operations use direct file reads or explicit paths, which work regardless of gitignore status.
80
-
81
- </search_behavior>
82
-
83
- <setup_uncommitted_mode>
84
-
85
- To use uncommitted mode:
86
-
87
- 1. **Set config:**
88
- ```json
89
- "planning": {
90
- "commit_docs": false,
91
- "search_gitignored": true
92
- }
93
- ```
94
-
95
- 2. **Add to .gitignore:**
96
- ```
97
- .planning/
98
- ```
99
-
100
- 3. **Existing tracked files:** If `.planning/` was previously tracked:
101
- ```bash
102
- git rm -r --cached .planning/
103
- git commit -m "chore: stop tracking planning docs"
104
- ```
105
-
106
- 4. **Branch merges:** When using `branching_strategy: phase` or `milestone`, the `complete-milestone` workflow automatically strips `.planning/` files from staging before merge commits when `commit_docs: false`.
107
-
108
- </setup_uncommitted_mode>
109
-
110
- <branching_strategy_behavior>
111
-
112
- **Branching Strategies:**
113
-
114
- | Strategy | When branch created | Branch scope | Merge point |
115
- |----------|---------------------|--------------|-------------|
116
- | `none` | Never | N/A | N/A |
117
- | `phase` | At `execute-phase` start | Single phase | User merges after phase |
118
- | `milestone` | At first `execute-phase` of milestone | Entire milestone | At `complete-milestone` |
119
-
120
- **When `git.branching_strategy: "none"` (default):**
121
- - All work commits to current branch
122
- - Standard EZ Agents behavior
123
-
124
- **When `git.branching_strategy: "phase"`:**
125
- - `execute-phase` creates/switches to a branch before execution
126
- - Branch name from `phase_branch_template` (e.g., `ez/phase-03-authentication`)
127
- - All plan commits go to that branch
128
- - User merges branches manually after phase completion
129
- - `complete-milestone` offers to merge all phase branches
130
-
131
- **When `git.branching_strategy: "milestone"`:**
132
- - First `execute-phase` of milestone creates the milestone branch
133
- - Branch name from `milestone_branch_template` (e.g., `ez/v1.0-mvp`)
134
- - All phases in milestone commit to same branch
135
- - `complete-milestone` offers to merge milestone branch to main
136
-
137
- **Template variables:**
138
-
139
- | Variable | Available in | Description |
140
- |----------|--------------|-------------|
141
- | `{phase}` | phase_branch_template | Zero-padded phase number (e.g., "03") |
142
- | `{slug}` | Both | Lowercase, hyphenated name |
143
- | `{milestone}` | milestone_branch_template | Milestone version (e.g., "v1.0") |
144
-
145
- **Checking the config:**
146
-
147
- Use `init execute-phase` which returns all config as JSON:
148
- ```bash
149
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init execute-phase "1")
150
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
151
- # JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
152
- ```
153
-
154
- Or use `state load` for the config values:
155
- ```bash
156
- INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" state load)
157
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
158
- # Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
159
- ```
160
-
161
- **Branch creation:**
162
-
163
- ```bash
164
- # For phase strategy
165
- if [ "$BRANCHING_STRATEGY" = "phase" ]; then
166
- PHASE_SLUG=$(echo "$PHASE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
167
- BRANCH_NAME=$(echo "$PHASE_BRANCH_TEMPLATE" | sed "s/{phase}/$PADDED_PHASE/g" | sed "s/{slug}/$PHASE_SLUG/g")
168
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
169
- fi
170
-
171
- # For milestone strategy
172
- if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
173
- MILESTONE_SLUG=$(echo "$MILESTONE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
174
- BRANCH_NAME=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed "s/{milestone}/$MILESTONE_VERSION/g" | sed "s/{slug}/$MILESTONE_SLUG/g")
175
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
176
- fi
177
- ```
178
-
179
- **Merge options at complete-milestone:**
180
-
181
- | Option | Git command | Result |
182
- |--------|-------------|--------|
183
- | Squash merge (recommended) | `git merge --squash` | Single clean commit per branch |
184
- | Merge with history | `git merge --no-ff` | Preserves all individual commits |
185
- | Delete without merging | `git branch -D` | Discard branch work |
186
- | Keep branches | (none) | Manual handling later |
187
-
188
- Squash merge is recommended — keeps main branch history clean while preserving the full development history in the branch (until deleted).
189
-
190
- **Use cases:**
191
-
192
- | Strategy | Best for |
193
- |----------|----------|
194
- | `none` | Solo development, simple projects |
195
- | `phase` | Code review per phase, granular rollback, team collaboration |
196
- | `milestone` | Release branches, staging environments, PR per version |
197
-
198
- </branching_strategy_behavior>
199
-
200
-
201
- <smart_orchestration_config>
202
-
203
- **`smart_orchestration` block:**
204
-
205
- ```json
206
- "smart_orchestration": {
207
- "enabled": true,
208
- "show_auto_prefix": true,
209
- "auto_invoke": {
210
- "preflight": ["progress", "execute-phase"],
211
- "arch_review": ["execute-phase"],
212
- "standup": []
213
- }
214
- }
215
- ```
216
-
217
- | Option | Default | Description |
218
- |--------|---------|-------------|
219
- | `enabled` | `true` | Master toggle for smart orchestration auto-invocations |
220
- | `show_auto_prefix` | `true` | Prefix auto-invoked agent output with `[AUTO]` label |
221
- | `auto_invoke.preflight` | `["progress", "execute-phase"]` | Commands that silently run health check before executing |
222
- | `auto_invoke.arch_review` | `["execute-phase"]` | Commands that auto-spawn tech lead review when `agent_discussion` enabled |
223
- | `auto_invoke.standup` | `[]` | Commands that auto-generate standup before running |
224
-
225
- **Disabling per-invocation:** Pass `--no-auto` flag to any command to skip smart orchestration for that run.
226
-
227
- </smart_orchestration_config>
228
-
229
- <agent_discussion_config>
230
-
231
- **`agent_discussion` block:**
232
-
233
- ```json
234
- "agent_discussion": {
235
- "enabled": false,
236
- "pre_flight_observer": false,
237
- "tech_lead_review": false,
238
- "scrum_master_standup": false,
239
- "cost_warning": true
240
- }
241
- ```
242
-
243
- | Option | Default | Description |
244
- |--------|---------|-------------|
245
- | `enabled` | `false` | Master toggle for optional discussion agents |
246
- | `pre_flight_observer` | `false` | Spawn observer agent before execution to surface risks |
247
- | `tech_lead_review` | `false` | Auto-spawn tech lead review after `/ez:plan-phase` completes |
248
- | `scrum_master_standup` | `false` | Auto-generate standup report at session start |
249
- | `cost_warning` | `true` | Warn before spawning expensive agents (Opus-class) |
250
-
251
- **Enable via `/ez:settings`:** The settings workflow provides a guided UI for toggling these options. Avoid manual JSON edits.
252
-
253
- </agent_discussion_config>
254
-
255
- <sessions_config>
256
-
257
- **`sessions` block:**
258
-
259
- ```json
260
- "sessions": {
261
- "retention_policy": "keep_last_10",
262
- "auto_compress_threshold": 50,
263
- "chain_navigation_enabled": true
264
- }
265
- ```
266
-
267
- | Option | Default | Description |
268
- |--------|---------|-------------|
269
- | `retention_policy` | `"keep_last_10"` | How many sessions to retain. Options: `"keep_all"`, `"keep_last_N"`, `"keep_days_N"` |
270
- | `auto_compress_threshold` | `50` | Compress session memory when token count exceeds this (in thousands) |
271
- | `chain_navigation_enabled` | `true` | Enable `--previous`/`--next`/`--chain` flags in `/ez:resume` |
272
-
273
- **Session files location:** `.planning/sessions/` — each session is a JSON file. Use `/ez:export-session` and `/ez:import-session` for cross-model handoffs.
274
-
275
- </sessions_config>
276
-
277
- <release_tiers_config>
278
-
279
- **`release.tiers` block:**
280
-
281
- ```json
282
- "release": {
283
- "tier": "mvp",
284
- "tiers": {
285
- "mvp": {
286
- "coverage_threshold": 0,
287
- "checklist_items": ["build_passes", "no_blockers"],
288
- "git_strategy": "direct_to_main"
289
- },
290
- "medium": {
291
- "coverage_threshold": 60,
292
- "checklist_items": ["build_passes", "no_blockers", "tests_pass", "security_scan"],
293
- "git_strategy": "pr_required"
294
- },
295
- "enterprise": {
296
- "coverage_threshold": 80,
297
- "checklist_items": ["build_passes", "no_blockers", "tests_pass", "security_scan", "coverage_gate", "changelog_updated", "rollback_plan"],
298
- "git_strategy": "gitflow"
299
- }
300
- }
301
- }
302
- ```
303
-
304
- | Tier | Coverage | Git Strategy | Checklist |
305
- |------|----------|--------------|-----------|
306
- | `mvp` | None | Direct to main | Build + no blockers |
307
- | `medium` | 60% | PR required | Build + tests + security scan |
308
- | `enterprise` | 80% | GitFlow (main + develop) | Full gates including rollback plan |
309
-
310
- **Hotfix behavior by tier:** MVP hotfixes merge directly; Medium requires PR; Enterprise merges to main AND syncs to develop. See `/ez:hotfix` documentation.
311
-
312
- **Set tier:** `node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set release.tier enterprise`
313
-
314
- </release_tiers_config>
315
-
316
- <package_manager_config>
317
-
318
- **`packageManager` block:**
319
-
320
- ```json
321
- "packageManager": {
322
- "default": "npm",
323
- "autoDetect": true,
324
- "respectLockfile": true
325
- }
326
- ```
327
-
328
- | Option | Default | Description |
329
- |--------|---------|-------------|
330
- | `default` | `"npm"` | Fallback package manager when auto-detection fails. Options: `"npm"`, `"yarn"`, `"pnpm"`, `"bun"` |
331
- | `autoDetect` | `true` | Detect package manager from lock file presence (`yarn.lock`, `pnpm-lock.yaml`, `bun.lockb`) |
332
- | `respectLockfile` | `true` | Use `--frozen-lockfile` / `--ci` flags during install to prevent lock file mutations |
333
-
334
- **Auto-detection order:** `bun.lockb` → bun, `pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, `package-lock.json` → npm, fallback to `default`.
335
-
336
- **Set explicitly:** `node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set packageManager.default pnpm`
337
-
338
- </package_manager_config>
339
-
340
- </planning_config>
1
+ <planning_config>
2
+
3
+ Configuration options for `.planning/` directory behavior.
4
+
5
+ <config_schema>
6
+ ```json
7
+ "planning": {
8
+ "commit_docs": true,
9
+ "search_gitignored": false
10
+ },
11
+ "git": {
12
+ "branching_strategy": "none",
13
+ "phase_branch_template": "ez/phase-{phase}-{slug}",
14
+ "milestone_branch_template": "ez/{milestone}-{slug}"
15
+ }
16
+ ```
17
+
18
+ | Option | Default | Description |
19
+ |--------|---------|-------------|
20
+ | `commit_docs` | `true` | Whether to commit planning artifacts to git |
21
+ | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
22
+ | `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
23
+ | `git.phase_branch_template` | `"ez/phase-{phase}-{slug}"` | Branch template for phase strategy |
24
+ | `git.milestone_branch_template` | `"ez/{milestone}-{slug}"` | Branch template for milestone strategy |
25
+ </config_schema>
26
+
27
+ <commit_docs_behavior>
28
+
29
+ **When `commit_docs: true` (default):**
30
+ - Planning files committed normally
31
+ - SUMMARY.md, STATE.md, ROADMAP.md tracked in git
32
+ - Full history of planning decisions preserved
33
+
34
+ **When `commit_docs: false`:**
35
+ - Skip all `git add`/`git commit` for `.planning/` files
36
+ - User must add `.planning/` to `.gitignore`
37
+ - Useful for: OSS contributions, client projects, keeping planning private
38
+
39
+ **Using ez-tools.cjs (preferred):**
40
+
41
+ ```bash
42
+ # Commit with automatic commit_docs + gitignore checks:
43
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: update state" --files .planning/STATE.md
44
+
45
+ # Load config via state load (returns JSON):
46
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" state load)
47
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
48
+ # commit_docs is available in the JSON output
49
+
50
+ # Or use init commands which include commit_docs:
51
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init execute-phase "1")
52
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
53
+ # commit_docs is included in all init command outputs
54
+ ```
55
+
56
+ **Auto-detection:** If `.planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.planning/` in `.gitignore`.
57
+
58
+ **Commit via CLI (handles checks automatically):**
59
+
60
+ ```bash
61
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" commit "docs: update state" --files .planning/STATE.md
62
+ ```
63
+
64
+ The CLI checks `commit_docs` config and gitignore status internally — no manual conditionals needed.
65
+
66
+ </commit_docs_behavior>
67
+
68
+ <search_behavior>
69
+
70
+ **When `search_gitignored: false` (default):**
71
+ - Standard rg behavior (respects .gitignore)
72
+ - Direct path searches work: `rg "pattern" .planning/` finds files
73
+ - Broad searches skip gitignored: `rg "pattern"` skips `.planning/`
74
+
75
+ **When `search_gitignored: true`:**
76
+ - Add `--no-ignore` to broad rg searches that should include `.planning/`
77
+ - Only needed when searching entire repo and expecting `.planning/` matches
78
+
79
+ **Note:** Most EZ Agents operations use direct file reads or explicit paths, which work regardless of gitignore status.
80
+
81
+ </search_behavior>
82
+
83
+ <setup_uncommitted_mode>
84
+
85
+ To use uncommitted mode:
86
+
87
+ 1. **Set config:**
88
+ ```json
89
+ "planning": {
90
+ "commit_docs": false,
91
+ "search_gitignored": true
92
+ }
93
+ ```
94
+
95
+ 2. **Add to .gitignore:**
96
+ ```
97
+ .planning/
98
+ ```
99
+
100
+ 3. **Existing tracked files:** If `.planning/` was previously tracked:
101
+ ```bash
102
+ git rm -r --cached .planning/
103
+ git commit -m "chore: stop tracking planning docs"
104
+ ```
105
+
106
+ 4. **Branch merges:** When using `branching_strategy: phase` or `milestone`, the `complete-milestone` workflow automatically strips `.planning/` files from staging before merge commits when `commit_docs: false`.
107
+
108
+ </setup_uncommitted_mode>
109
+
110
+ <branching_strategy_behavior>
111
+
112
+ **Branching Strategies:**
113
+
114
+ | Strategy | When branch created | Branch scope | Merge point |
115
+ |----------|---------------------|--------------|-------------|
116
+ | `none` | Never | N/A | N/A |
117
+ | `phase` | At `execute-phase` start | Single phase | User merges after phase |
118
+ | `milestone` | At first `execute-phase` of milestone | Entire milestone | At `complete-milestone` |
119
+
120
+ **When `git.branching_strategy: "none"` (default):**
121
+ - All work commits to current branch
122
+ - Standard EZ Agents behavior
123
+
124
+ **When `git.branching_strategy: "phase"`:**
125
+ - `execute-phase` creates/switches to a branch before execution
126
+ - Branch name from `phase_branch_template` (e.g., `ez/phase-03-authentication`)
127
+ - All plan commits go to that branch
128
+ - User merges branches manually after phase completion
129
+ - `complete-milestone` offers to merge all phase branches
130
+
131
+ **When `git.branching_strategy: "milestone"`:**
132
+ - First `execute-phase` of milestone creates the milestone branch
133
+ - Branch name from `milestone_branch_template` (e.g., `ez/v1.0-mvp`)
134
+ - All phases in milestone commit to same branch
135
+ - `complete-milestone` offers to merge milestone branch to main
136
+
137
+ **Template variables:**
138
+
139
+ | Variable | Available in | Description |
140
+ |----------|--------------|-------------|
141
+ | `{phase}` | phase_branch_template | Zero-padded phase number (e.g., "03") |
142
+ | `{slug}` | Both | Lowercase, hyphenated name |
143
+ | `{milestone}` | milestone_branch_template | Milestone version (e.g., "v1.0") |
144
+
145
+ **Checking the config:**
146
+
147
+ Use `init execute-phase` which returns all config as JSON:
148
+ ```bash
149
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" init execute-phase "1")
150
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
151
+ # JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
152
+ ```
153
+
154
+ Or use `state load` for the config values:
155
+ ```bash
156
+ INIT=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" state load)
157
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
158
+ # Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
159
+ ```
160
+
161
+ **Branch creation:**
162
+
163
+ ```bash
164
+ # For phase strategy
165
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
166
+ PHASE_SLUG=$(echo "$PHASE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
167
+ BRANCH_NAME=$(echo "$PHASE_BRANCH_TEMPLATE" | sed "s/{phase}/$PADDED_PHASE/g" | sed "s/{slug}/$PHASE_SLUG/g")
168
+ git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
169
+ fi
170
+
171
+ # For milestone strategy
172
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
173
+ MILESTONE_SLUG=$(echo "$MILESTONE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
174
+ BRANCH_NAME=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed "s/{milestone}/$MILESTONE_VERSION/g" | sed "s/{slug}/$MILESTONE_SLUG/g")
175
+ git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
176
+ fi
177
+ ```
178
+
179
+ **Merge options at complete-milestone:**
180
+
181
+ | Option | Git command | Result |
182
+ |--------|-------------|--------|
183
+ | Squash merge (recommended) | `git merge --squash` | Single clean commit per branch |
184
+ | Merge with history | `git merge --no-ff` | Preserves all individual commits |
185
+ | Delete without merging | `git branch -D` | Discard branch work |
186
+ | Keep branches | (none) | Manual handling later |
187
+
188
+ Squash merge is recommended — keeps main branch history clean while preserving the full development history in the branch (until deleted).
189
+
190
+ **Use cases:**
191
+
192
+ | Strategy | Best for |
193
+ |----------|----------|
194
+ | `none` | Solo development, simple projects |
195
+ | `phase` | Code review per phase, granular rollback, team collaboration |
196
+ | `milestone` | Release branches, staging environments, PR per version |
197
+
198
+ </branching_strategy_behavior>
199
+
200
+
201
+ <smart_orchestration_config>
202
+
203
+ **`smart_orchestration` block:**
204
+
205
+ ```json
206
+ "smart_orchestration": {
207
+ "enabled": true,
208
+ "show_auto_prefix": true,
209
+ "auto_invoke": {
210
+ "preflight": ["progress", "execute-phase"],
211
+ "arch_review": ["execute-phase"],
212
+ "standup": []
213
+ }
214
+ }
215
+ ```
216
+
217
+ | Option | Default | Description |
218
+ |--------|---------|-------------|
219
+ | `enabled` | `true` | Master toggle for smart orchestration auto-invocations |
220
+ | `show_auto_prefix` | `true` | Prefix auto-invoked agent output with `[AUTO]` label |
221
+ | `auto_invoke.preflight` | `["progress", "execute-phase"]` | Commands that silently run health check before executing |
222
+ | `auto_invoke.arch_review` | `["execute-phase"]` | Commands that auto-spawn tech lead review when `agent_discussion` enabled |
223
+ | `auto_invoke.standup` | `[]` | Commands that auto-generate standup before running |
224
+
225
+ **Disabling per-invocation:** Pass `--no-auto` flag to any command to skip smart orchestration for that run.
226
+
227
+ </smart_orchestration_config>
228
+
229
+ <agent_discussion_config>
230
+
231
+ **`agent_discussion` block:**
232
+
233
+ ```json
234
+ "agent_discussion": {
235
+ "enabled": false,
236
+ "pre_flight_observer": false,
237
+ "tech_lead_review": false,
238
+ "scrum_master_standup": false,
239
+ "cost_warning": true
240
+ }
241
+ ```
242
+
243
+ | Option | Default | Description |
244
+ |--------|---------|-------------|
245
+ | `enabled` | `false` | Master toggle for optional discussion agents |
246
+ | `pre_flight_observer` | `false` | Spawn observer agent before execution to surface risks |
247
+ | `tech_lead_review` | `false` | Auto-spawn tech lead review after `/ez:plan-phase` completes |
248
+ | `scrum_master_standup` | `false` | Auto-generate standup report at session start |
249
+ | `cost_warning` | `true` | Warn before spawning expensive agents (Opus-class) |
250
+
251
+ **Enable via `/ez:settings`:** The settings workflow provides a guided UI for toggling these options. Avoid manual JSON edits.
252
+
253
+ </agent_discussion_config>
254
+
255
+ <sessions_config>
256
+
257
+ **`sessions` block:**
258
+
259
+ ```json
260
+ "sessions": {
261
+ "retention_policy": "keep_last_10",
262
+ "auto_compress_threshold": 50,
263
+ "chain_navigation_enabled": true
264
+ }
265
+ ```
266
+
267
+ | Option | Default | Description |
268
+ |--------|---------|-------------|
269
+ | `retention_policy` | `"keep_last_10"` | How many sessions to retain. Options: `"keep_all"`, `"keep_last_N"`, `"keep_days_N"` |
270
+ | `auto_compress_threshold` | `50` | Compress session memory when token count exceeds this (in thousands) |
271
+ | `chain_navigation_enabled` | `true` | Enable `--previous`/`--next`/`--chain` flags in `/ez:resume` |
272
+
273
+ **Session files location:** `.planning/sessions/` — each session is a JSON file. Use `/ez:export-session` and `/ez:import-session` for cross-model handoffs.
274
+
275
+ </sessions_config>
276
+
277
+ <release_tiers_config>
278
+
279
+ **`release.tiers` block:**
280
+
281
+ ```json
282
+ "release": {
283
+ "tier": "mvp",
284
+ "tiers": {
285
+ "mvp": {
286
+ "coverage_threshold": 0,
287
+ "checklist_items": ["build_passes", "no_blockers"],
288
+ "git_strategy": "direct_to_main"
289
+ },
290
+ "medium": {
291
+ "coverage_threshold": 60,
292
+ "checklist_items": ["build_passes", "no_blockers", "tests_pass", "security_scan"],
293
+ "git_strategy": "pr_required"
294
+ },
295
+ "enterprise": {
296
+ "coverage_threshold": 80,
297
+ "checklist_items": ["build_passes", "no_blockers", "tests_pass", "security_scan", "coverage_gate", "changelog_updated", "rollback_plan"],
298
+ "git_strategy": "gitflow"
299
+ }
300
+ }
301
+ }
302
+ ```
303
+
304
+ | Tier | Coverage | Git Strategy | Checklist |
305
+ |------|----------|--------------|-----------|
306
+ | `mvp` | None | Direct to main | Build + no blockers |
307
+ | `medium` | 60% | PR required | Build + tests + security scan |
308
+ | `enterprise` | 80% | GitFlow (main + develop) | Full gates including rollback plan |
309
+
310
+ **Hotfix behavior by tier:** MVP hotfixes merge directly; Medium requires PR; Enterprise merges to main AND syncs to develop. See `/ez:hotfix` documentation.
311
+
312
+ **Set tier:** `node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set release.tier enterprise`
313
+
314
+ </release_tiers_config>
315
+
316
+ <package_manager_config>
317
+
318
+ **`packageManager` block:**
319
+
320
+ ```json
321
+ "packageManager": {
322
+ "default": "npm",
323
+ "autoDetect": true,
324
+ "respectLockfile": true
325
+ }
326
+ ```
327
+
328
+ | Option | Default | Description |
329
+ |--------|---------|-------------|
330
+ | `default` | `"npm"` | Fallback package manager when auto-detection fails. Options: `"npm"`, `"yarn"`, `"pnpm"`, `"bun"` |
331
+ | `autoDetect` | `true` | Detect package manager from lock file presence (`yarn.lock`, `pnpm-lock.yaml`, `bun.lockb`) |
332
+ | `respectLockfile` | `true` | Use `--frozen-lockfile` / `--ci` flags during install to prevent lock file mutations |
333
+
334
+ **Auto-detection order:** `bun.lockb` → bun, `pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, `package-lock.json` → npm, fallback to `default`.
335
+
336
+ **Set explicitly:** `node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-set packageManager.default pnpm`
337
+
338
+ </package_manager_config>
339
+
340
+ </planning_config>