@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,552 +1,552 @@
1
- # Research Template
2
-
3
- Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
-
5
- **Purpose:** Document what Claude needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
-
7
- ---
8
-
9
- ## File Template
10
-
11
- ```markdown
12
- # Phase [X]: [Name] - Research
13
-
14
- **Researched:** [date]
15
- **Domain:** [primary technology/problem domain]
16
- **Confidence:** [HIGH/MEDIUM/LOW]
17
-
18
- <user_constraints>
19
- ## User Constraints (from CONTEXT.md)
20
-
21
- **CRITICAL:** If CONTEXT.md exists from /ez:discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
22
-
23
- ### Locked Decisions
24
- [Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
25
- - [Decision 1]
26
- - [Decision 2]
27
-
28
- ### Claude's Discretion
29
- [Copy from CONTEXT.md - areas where researcher/planner can choose]
30
- - [Area 1]
31
- - [Area 2]
32
-
33
- ### Deferred Ideas (OUT OF SCOPE)
34
- [Copy from CONTEXT.md - do NOT research or plan these]
35
- - [Deferred 1]
36
- - [Deferred 2]
37
-
38
- **If no CONTEXT.md exists:** Write "No user constraints - all decisions at Claude's discretion"
39
- </user_constraints>
40
-
41
- <research_summary>
42
- ## Summary
43
-
44
- [2-3 paragraph executive summary]
45
- - What was researched
46
- - What the standard approach is
47
- - Key recommendations
48
-
49
- **Primary recommendation:** [one-liner actionable guidance]
50
- </research_summary>
51
-
52
- <standard_stack>
53
- ## Standard Stack
54
-
55
- The established libraries/tools for this domain:
56
-
57
- ### Core
58
- | Library | Version | Purpose | Why Standard |
59
- |---------|---------|---------|--------------|
60
- | [name] | [ver] | [what it does] | [why experts use it] |
61
- | [name] | [ver] | [what it does] | [why experts use it] |
62
-
63
- ### Supporting
64
- | Library | Version | Purpose | When to Use |
65
- |---------|---------|---------|-------------|
66
- | [name] | [ver] | [what it does] | [use case] |
67
- | [name] | [ver] | [what it does] | [use case] |
68
-
69
- ### Alternatives Considered
70
- | Instead of | Could Use | Tradeoff |
71
- |------------|-----------|----------|
72
- | [standard] | [alternative] | [when alternative makes sense] |
73
-
74
- **Installation:**
75
- ```bash
76
- npm install [packages]
77
- # or
78
- yarn add [packages]
79
- ```
80
- </standard_stack>
81
-
82
- <architecture_patterns>
83
- ## Architecture Patterns
84
-
85
- ### Recommended Project Structure
86
- ```
87
- src/
88
- ├── [folder]/ # [purpose]
89
- ├── [folder]/ # [purpose]
90
- └── [folder]/ # [purpose]
91
- ```
92
-
93
- ### Pattern 1: [Pattern Name]
94
- **What:** [description]
95
- **When to use:** [conditions]
96
- **Example:**
97
- ```typescript
98
- // [code example from Context7/official docs]
99
- ```
100
-
101
- ### Pattern 2: [Pattern Name]
102
- **What:** [description]
103
- **When to use:** [conditions]
104
- **Example:**
105
- ```typescript
106
- // [code example]
107
- ```
108
-
109
- ### Anti-Patterns to Avoid
110
- - **[Anti-pattern]:** [why it's bad, what to do instead]
111
- - **[Anti-pattern]:** [why it's bad, what to do instead]
112
- </architecture_patterns>
113
-
114
- <dont_hand_roll>
115
- ## Don't Hand-Roll
116
-
117
- Problems that look simple but have existing solutions:
118
-
119
- | Problem | Don't Build | Use Instead | Why |
120
- |---------|-------------|-------------|-----|
121
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
122
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
123
- | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
124
-
125
- **Key insight:** [why custom solutions are worse in this domain]
126
- </dont_hand_roll>
127
-
128
- <common_pitfalls>
129
- ## Common Pitfalls
130
-
131
- ### Pitfall 1: [Name]
132
- **What goes wrong:** [description]
133
- **Why it happens:** [root cause]
134
- **How to avoid:** [prevention strategy]
135
- **Warning signs:** [how to detect early]
136
-
137
- ### Pitfall 2: [Name]
138
- **What goes wrong:** [description]
139
- **Why it happens:** [root cause]
140
- **How to avoid:** [prevention strategy]
141
- **Warning signs:** [how to detect early]
142
-
143
- ### Pitfall 3: [Name]
144
- **What goes wrong:** [description]
145
- **Why it happens:** [root cause]
146
- **How to avoid:** [prevention strategy]
147
- **Warning signs:** [how to detect early]
148
- </common_pitfalls>
149
-
150
- <code_examples>
151
- ## Code Examples
152
-
153
- Verified patterns from official sources:
154
-
155
- ### [Common Operation 1]
156
- ```typescript
157
- // Source: [Context7/official docs URL]
158
- [code]
159
- ```
160
-
161
- ### [Common Operation 2]
162
- ```typescript
163
- // Source: [Context7/official docs URL]
164
- [code]
165
- ```
166
-
167
- ### [Common Operation 3]
168
- ```typescript
169
- // Source: [Context7/official docs URL]
170
- [code]
171
- ```
172
- </code_examples>
173
-
174
- <sota_updates>
175
- ## State of the Art (2024-2025)
176
-
177
- What's changed recently:
178
-
179
- | Old Approach | Current Approach | When Changed | Impact |
180
- |--------------|------------------|--------------|--------|
181
- | [old] | [new] | [date/version] | [what it means for implementation] |
182
-
183
- **New tools/patterns to consider:**
184
- - [Tool/Pattern]: [what it enables, when to use]
185
- - [Tool/Pattern]: [what it enables, when to use]
186
-
187
- **Deprecated/outdated:**
188
- - [Thing]: [why it's outdated, what replaced it]
189
- </sota_updates>
190
-
191
- <open_questions>
192
- ## Open Questions
193
-
194
- Things that couldn't be fully resolved:
195
-
196
- 1. **[Question]**
197
- - What we know: [partial info]
198
- - What's unclear: [the gap]
199
- - Recommendation: [how to handle during planning/execution]
200
-
201
- 2. **[Question]**
202
- - What we know: [partial info]
203
- - What's unclear: [the gap]
204
- - Recommendation: [how to handle]
205
- </open_questions>
206
-
207
- <sources>
208
- ## Sources
209
-
210
- ### Primary (HIGH confidence)
211
- - [Context7 library ID] - [topics fetched]
212
- - [Official docs URL] - [what was checked]
213
-
214
- ### Secondary (MEDIUM confidence)
215
- - [WebSearch verified with official source] - [finding + verification]
216
-
217
- ### Tertiary (LOW confidence - needs validation)
218
- - [WebSearch only] - [finding, marked for validation during implementation]
219
- </sources>
220
-
221
- <metadata>
222
- ## Metadata
223
-
224
- **Research scope:**
225
- - Core technology: [what]
226
- - Ecosystem: [libraries explored]
227
- - Patterns: [patterns researched]
228
- - Pitfalls: [areas checked]
229
-
230
- **Confidence breakdown:**
231
- - Standard stack: [HIGH/MEDIUM/LOW] - [reason]
232
- - Architecture: [HIGH/MEDIUM/LOW] - [reason]
233
- - Pitfalls: [HIGH/MEDIUM/LOW] - [reason]
234
- - Code examples: [HIGH/MEDIUM/LOW] - [reason]
235
-
236
- **Research date:** [date]
237
- **Valid until:** [estimate - 30 days for stable tech, 7 days for fast-moving]
238
- </metadata>
239
-
240
- ---
241
-
242
- *Phase: XX-name*
243
- *Research completed: [date]*
244
- *Ready for planning: [yes/no]*
245
- ```
246
-
247
- ---
248
-
249
- ## Good Example
250
-
251
- ```markdown
252
- # Phase 3: 3D City Driving - Research
253
-
254
- **Researched:** 2025-01-20
255
- **Domain:** Three.js 3D web game with driving mechanics
256
- **Confidence:** HIGH
257
-
258
- <research_summary>
259
- ## Summary
260
-
261
- Researched the Three.js ecosystem for building a 3D city driving game. The standard approach uses Three.js with React Three Fiber for component architecture, Rapier for physics, and drei for common helpers.
262
-
263
- Key finding: Don't hand-roll physics or collision detection. Rapier (via @react-three/rapier) handles vehicle physics, terrain collision, and city object interactions efficiently. Custom physics code leads to bugs and performance issues.
264
-
265
- **Primary recommendation:** Use R3F + Rapier + drei stack. Start with vehicle controller from drei, add Rapier vehicle physics, build city with instanced meshes for performance.
266
- </research_summary>
267
-
268
- <standard_stack>
269
- ## Standard Stack
270
-
271
- ### Core
272
- | Library | Version | Purpose | Why Standard |
273
- |---------|---------|---------|--------------|
274
- | three | 0.160.0 | 3D rendering | The standard for web 3D |
275
- | @react-three/fiber | 8.15.0 | React renderer for Three.js | Declarative 3D, better DX |
276
- | @react-three/drei | 9.92.0 | Helpers and abstractions | Solves common problems |
277
- | @react-three/rapier | 1.2.1 | Physics engine bindings | Best physics for R3F |
278
-
279
- ### Supporting
280
- | Library | Version | Purpose | When to Use |
281
- |---------|---------|---------|-------------|
282
- | @react-three/postprocessing | 2.16.0 | Visual effects | Bloom, DOF, motion blur |
283
- | leva | 0.9.35 | Debug UI | Tweaking parameters |
284
- | zustand | 4.4.7 | State management | Game state, UI state |
285
- | use-sound | 4.0.1 | Audio | Engine sounds, ambient |
286
-
287
- ### Alternatives Considered
288
- | Instead of | Could Use | Tradeoff |
289
- |------------|-----------|----------|
290
- | Rapier | Cannon.js | Cannon simpler but less performant for vehicles |
291
- | R3F | Vanilla Three | Vanilla if no React, but R3F DX is much better |
292
- | drei | Custom helpers | drei is battle-tested, don't reinvent |
293
-
294
- **Installation:**
295
- ```bash
296
- npm install three @react-three/fiber @react-three/drei @react-three/rapier zustand
297
- ```
298
- </standard_stack>
299
-
300
- <architecture_patterns>
301
- ## Architecture Patterns
302
-
303
- ### Recommended Project Structure
304
- ```
305
- src/
306
- ├── components/
307
- │ ├── Vehicle/ # Player car with physics
308
- │ ├── City/ # City generation and buildings
309
- │ ├── Road/ # Road network
310
- │ └── Environment/ # Sky, lighting, fog
311
- ├── hooks/
312
- │ ├── useVehicleControls.ts
313
- │ └── useGameState.ts
314
- ├── stores/
315
- │ └── gameStore.ts # Zustand state
316
- └── utils/
317
- └── cityGenerator.ts # Procedural generation helpers
318
- ```
319
-
320
- ### Pattern 1: Vehicle with Rapier Physics
321
- **What:** Use RigidBody with vehicle-specific settings, not custom physics
322
- **When to use:** Any ground vehicle
323
- **Example:**
324
- ```typescript
325
- // Source: @react-three/rapier docs
326
- import { RigidBody, useRapier } from '@react-three/rapier'
327
-
328
- function Vehicle() {
329
- const rigidBody = useRef()
330
-
331
- return (
332
- <RigidBody
333
- ref={rigidBody}
334
- type="dynamic"
335
- colliders="hull"
336
- mass={1500}
337
- linearDamping={0.5}
338
- angularDamping={0.5}
339
- >
340
- <mesh>
341
- <boxGeometry args={[2, 1, 4]} />
342
- <meshStandardMaterial />
343
- </mesh>
344
- </RigidBody>
345
- )
346
- }
347
- ```
348
-
349
- ### Pattern 2: Instanced Meshes for City
350
- **What:** Use InstancedMesh for repeated objects (buildings, trees, props)
351
- **When to use:** >100 similar objects
352
- **Example:**
353
- ```typescript
354
- // Source: drei docs
355
- import { Instances, Instance } from '@react-three/drei'
356
-
357
- function Buildings({ positions }) {
358
- return (
359
- <Instances limit={1000}>
360
- <boxGeometry />
361
- <meshStandardMaterial />
362
- {positions.map((pos, i) => (
363
- <Instance key={i} position={pos} scale={[1, Math.random() * 5 + 1, 1]} />
364
- ))}
365
- </Instances>
366
- )
367
- }
368
- ```
369
-
370
- ### Anti-Patterns to Avoid
371
- - **Creating meshes in render loop:** Create once, update transforms only
372
- - **Not using InstancedMesh:** Individual meshes for buildings kills performance
373
- - **Custom physics math:** Rapier handles it better, every time
374
- </architecture_patterns>
375
-
376
- <dont_hand_roll>
377
- ## Don't Hand-Roll
378
-
379
- | Problem | Don't Build | Use Instead | Why |
380
- |---------|-------------|-------------|-----|
381
- | Vehicle physics | Custom velocity/acceleration | Rapier RigidBody | Wheel friction, suspension, collisions are complex |
382
- | Collision detection | Raycasting everything | Rapier colliders | Performance, edge cases, tunneling |
383
- | Camera follow | Manual lerp | drei CameraControls or custom with useFrame | Smooth interpolation, bounds |
384
- | City generation | Pure random placement | Grid-based with noise for variation | Random looks wrong, grid is predictable |
385
- | LOD | Manual distance checks | drei <Detailed> | Handles transitions, hysteresis |
386
-
387
- **Key insight:** 3D game development has 40+ years of solved problems. Rapier implements proper physics simulation. drei implements proper 3D helpers. Fighting these leads to bugs that look like "game feel" issues but are actually physics edge cases.
388
- </dont_hand_roll>
389
-
390
- <common_pitfalls>
391
- ## Common Pitfalls
392
-
393
- ### Pitfall 1: Physics Tunneling
394
- **What goes wrong:** Fast objects pass through walls
395
- **Why it happens:** Default physics step too large for velocity
396
- **How to avoid:** Use CCD (Continuous Collision Detection) in Rapier
397
- **Warning signs:** Objects randomly appearing outside buildings
398
-
399
- ### Pitfall 2: Performance Death by Draw Calls
400
- **What goes wrong:** Game stutters with many buildings
401
- **Why it happens:** Each mesh = 1 draw call, hundreds of buildings = hundreds of calls
402
- **How to avoid:** InstancedMesh for similar objects, merge static geometry
403
- **Warning signs:** GPU bound, low FPS despite simple scene
404
-
405
- ### Pitfall 3: Vehicle "Floaty" Feel
406
- **What goes wrong:** Car doesn't feel grounded
407
- **Why it happens:** Missing proper wheel/suspension simulation
408
- **How to avoid:** Use Rapier vehicle controller or tune mass/damping carefully
409
- **Warning signs:** Car bounces oddly, doesn't grip corners
410
- </common_pitfalls>
411
-
412
- <code_examples>
413
- ## Code Examples
414
-
415
- ### Basic R3F + Rapier Setup
416
- ```typescript
417
- // Source: @react-three/rapier getting started
418
- import { Canvas } from '@react-three/fiber'
419
- import { Physics } from '@react-three/rapier'
420
-
421
- function Game() {
422
- return (
423
- <Canvas>
424
- <Physics gravity={[0, -9.81, 0]}>
425
- <Vehicle />
426
- <City />
427
- <Ground />
428
- </Physics>
429
- </Canvas>
430
- )
431
- }
432
- ```
433
-
434
- ### Vehicle Controls Hook
435
- ```typescript
436
- // Source: Community pattern, verified with drei docs
437
- import { useFrame } from '@react-three/fiber'
438
- import { useKeyboardControls } from '@react-three/drei'
439
-
440
- function useVehicleControls(rigidBodyRef) {
441
- const [, getKeys] = useKeyboardControls()
442
-
443
- useFrame(() => {
444
- const { forward, back, left, right } = getKeys()
445
- const body = rigidBodyRef.current
446
- if (!body) return
447
-
448
- const impulse = { x: 0, y: 0, z: 0 }
449
- if (forward) impulse.z -= 10
450
- if (back) impulse.z += 5
451
-
452
- body.applyImpulse(impulse, true)
453
-
454
- if (left) body.applyTorqueImpulse({ x: 0, y: 2, z: 0 }, true)
455
- if (right) body.applyTorqueImpulse({ x: 0, y: -2, z: 0 }, true)
456
- })
457
- }
458
- ```
459
- </code_examples>
460
-
461
- <sota_updates>
462
- ## State of the Art (2024-2025)
463
-
464
- | Old Approach | Current Approach | When Changed | Impact |
465
- |--------------|------------------|--------------|--------|
466
- | cannon-es | Rapier | 2023 | Rapier is faster, better maintained |
467
- | vanilla Three.js | React Three Fiber | 2020+ | R3F is now standard for React apps |
468
- | Manual InstancedMesh | drei <Instances> | 2022 | Simpler API, handles updates |
469
-
470
- **New tools/patterns to consider:**
471
- - **WebGPU:** Coming but not production-ready for games yet (2025)
472
- - **drei Gltf helpers:** <useGLTF.preload> for loading screens
473
-
474
- **Deprecated/outdated:**
475
- - **cannon.js (original):** Use cannon-es fork or better, Rapier
476
- - **Manual raycasting for physics:** Just use Rapier colliders
477
- </sota_updates>
478
-
479
- <sources>
480
- ## Sources
481
-
482
- ### Primary (HIGH confidence)
483
- - /pmndrs/react-three-fiber - getting started, hooks, performance
484
- - /pmndrs/drei - instances, controls, helpers
485
- - /dimforge/rapier-js - physics setup, vehicle physics
486
-
487
- ### Secondary (MEDIUM confidence)
488
- - Three.js discourse "city driving game" threads - verified patterns against docs
489
- - R3F examples repository - verified code works
490
-
491
- ### Tertiary (LOW confidence - needs validation)
492
- - None - all findings verified
493
- </sources>
494
-
495
- <metadata>
496
- ## Metadata
497
-
498
- **Research scope:**
499
- - Core technology: Three.js + React Three Fiber
500
- - Ecosystem: Rapier, drei, zustand
501
- - Patterns: Vehicle physics, instancing, city generation
502
- - Pitfalls: Performance, physics, feel
503
-
504
- **Confidence breakdown:**
505
- - Standard stack: HIGH - verified with Context7, widely used
506
- - Architecture: HIGH - from official examples
507
- - Pitfalls: HIGH - documented in discourse, verified in docs
508
- - Code examples: HIGH - from Context7/official sources
509
-
510
- **Research date:** 2025-01-20
511
- **Valid until:** 2025-02-20 (30 days - R3F ecosystem stable)
512
- </metadata>
513
-
514
- ---
515
-
516
- *Phase: 03-city-driving*
517
- *Research completed: 2025-01-20*
518
- *Ready for planning: yes*
519
- ```
520
-
521
- ---
522
-
523
- ## Guidelines
524
-
525
- **When to create:**
526
- - Before planning phases in niche/complex domains
527
- - When Claude's training data is likely stale or sparse
528
- - When "how do experts do this" matters more than "which library"
529
-
530
- **Structure:**
531
- - Use XML tags for section markers (matches EZ Agents templates)
532
- - Seven core sections: summary, standard_stack, architecture_patterns, dont_hand_roll, common_pitfalls, code_examples, sources
533
- - All sections required (drives comprehensive research)
534
-
535
- **Content quality:**
536
- - Standard stack: Specific versions, not just names
537
- - Architecture: Include actual code examples from authoritative sources
538
- - Don't hand-roll: Be explicit about what problems to NOT solve yourself
539
- - Pitfalls: Include warning signs, not just "don't do this"
540
- - Sources: Mark confidence levels honestly
541
-
542
- **Integration with planning:**
543
- - RESEARCH.md loaded as @context reference in PLAN.md
544
- - Standard stack informs library choices
545
- - Don't hand-roll prevents custom solutions
546
- - Pitfalls inform verification criteria
547
- - Code examples can be referenced in task actions
548
-
549
- **After creation:**
550
- - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
551
- - Referenced during planning workflow
552
- - plan-phase loads it automatically when present
1
+ # Research Template
2
+
3
+ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
+
5
+ **Purpose:** Document what Claude needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
+
7
+ ---
8
+
9
+ ## File Template
10
+
11
+ ```markdown
12
+ # Phase [X]: [Name] - Research
13
+
14
+ **Researched:** [date]
15
+ **Domain:** [primary technology/problem domain]
16
+ **Confidence:** [HIGH/MEDIUM/LOW]
17
+
18
+ <user_constraints>
19
+ ## User Constraints (from CONTEXT.md)
20
+
21
+ **CRITICAL:** If CONTEXT.md exists from /ez:discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
22
+
23
+ ### Locked Decisions
24
+ [Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
25
+ - [Decision 1]
26
+ - [Decision 2]
27
+
28
+ ### Claude's Discretion
29
+ [Copy from CONTEXT.md - areas where researcher/planner can choose]
30
+ - [Area 1]
31
+ - [Area 2]
32
+
33
+ ### Deferred Ideas (OUT OF SCOPE)
34
+ [Copy from CONTEXT.md - do NOT research or plan these]
35
+ - [Deferred 1]
36
+ - [Deferred 2]
37
+
38
+ **If no CONTEXT.md exists:** Write "No user constraints - all decisions at Claude's discretion"
39
+ </user_constraints>
40
+
41
+ <research_summary>
42
+ ## Summary
43
+
44
+ [2-3 paragraph executive summary]
45
+ - What was researched
46
+ - What the standard approach is
47
+ - Key recommendations
48
+
49
+ **Primary recommendation:** [one-liner actionable guidance]
50
+ </research_summary>
51
+
52
+ <standard_stack>
53
+ ## Standard Stack
54
+
55
+ The established libraries/tools for this domain:
56
+
57
+ ### Core
58
+ | Library | Version | Purpose | Why Standard |
59
+ |---------|---------|---------|--------------|
60
+ | [name] | [ver] | [what it does] | [why experts use it] |
61
+ | [name] | [ver] | [what it does] | [why experts use it] |
62
+
63
+ ### Supporting
64
+ | Library | Version | Purpose | When to Use |
65
+ |---------|---------|---------|-------------|
66
+ | [name] | [ver] | [what it does] | [use case] |
67
+ | [name] | [ver] | [what it does] | [use case] |
68
+
69
+ ### Alternatives Considered
70
+ | Instead of | Could Use | Tradeoff |
71
+ |------------|-----------|----------|
72
+ | [standard] | [alternative] | [when alternative makes sense] |
73
+
74
+ **Installation:**
75
+ ```bash
76
+ npm install [packages]
77
+ # or
78
+ yarn add [packages]
79
+ ```
80
+ </standard_stack>
81
+
82
+ <architecture_patterns>
83
+ ## Architecture Patterns
84
+
85
+ ### Recommended Project Structure
86
+ ```
87
+ src/
88
+ ├── [folder]/ # [purpose]
89
+ ├── [folder]/ # [purpose]
90
+ └── [folder]/ # [purpose]
91
+ ```
92
+
93
+ ### Pattern 1: [Pattern Name]
94
+ **What:** [description]
95
+ **When to use:** [conditions]
96
+ **Example:**
97
+ ```typescript
98
+ // [code example from Context7/official docs]
99
+ ```
100
+
101
+ ### Pattern 2: [Pattern Name]
102
+ **What:** [description]
103
+ **When to use:** [conditions]
104
+ **Example:**
105
+ ```typescript
106
+ // [code example]
107
+ ```
108
+
109
+ ### Anti-Patterns to Avoid
110
+ - **[Anti-pattern]:** [why it's bad, what to do instead]
111
+ - **[Anti-pattern]:** [why it's bad, what to do instead]
112
+ </architecture_patterns>
113
+
114
+ <dont_hand_roll>
115
+ ## Don't Hand-Roll
116
+
117
+ Problems that look simple but have existing solutions:
118
+
119
+ | Problem | Don't Build | Use Instead | Why |
120
+ |---------|-------------|-------------|-----|
121
+ | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
122
+ | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
123
+ | [problem] | [what you'd build] | [library] | [edge cases, complexity] |
124
+
125
+ **Key insight:** [why custom solutions are worse in this domain]
126
+ </dont_hand_roll>
127
+
128
+ <common_pitfalls>
129
+ ## Common Pitfalls
130
+
131
+ ### Pitfall 1: [Name]
132
+ **What goes wrong:** [description]
133
+ **Why it happens:** [root cause]
134
+ **How to avoid:** [prevention strategy]
135
+ **Warning signs:** [how to detect early]
136
+
137
+ ### Pitfall 2: [Name]
138
+ **What goes wrong:** [description]
139
+ **Why it happens:** [root cause]
140
+ **How to avoid:** [prevention strategy]
141
+ **Warning signs:** [how to detect early]
142
+
143
+ ### Pitfall 3: [Name]
144
+ **What goes wrong:** [description]
145
+ **Why it happens:** [root cause]
146
+ **How to avoid:** [prevention strategy]
147
+ **Warning signs:** [how to detect early]
148
+ </common_pitfalls>
149
+
150
+ <code_examples>
151
+ ## Code Examples
152
+
153
+ Verified patterns from official sources:
154
+
155
+ ### [Common Operation 1]
156
+ ```typescript
157
+ // Source: [Context7/official docs URL]
158
+ [code]
159
+ ```
160
+
161
+ ### [Common Operation 2]
162
+ ```typescript
163
+ // Source: [Context7/official docs URL]
164
+ [code]
165
+ ```
166
+
167
+ ### [Common Operation 3]
168
+ ```typescript
169
+ // Source: [Context7/official docs URL]
170
+ [code]
171
+ ```
172
+ </code_examples>
173
+
174
+ <sota_updates>
175
+ ## State of the Art (2024-2025)
176
+
177
+ What's changed recently:
178
+
179
+ | Old Approach | Current Approach | When Changed | Impact |
180
+ |--------------|------------------|--------------|--------|
181
+ | [old] | [new] | [date/version] | [what it means for implementation] |
182
+
183
+ **New tools/patterns to consider:**
184
+ - [Tool/Pattern]: [what it enables, when to use]
185
+ - [Tool/Pattern]: [what it enables, when to use]
186
+
187
+ **Deprecated/outdated:**
188
+ - [Thing]: [why it's outdated, what replaced it]
189
+ </sota_updates>
190
+
191
+ <open_questions>
192
+ ## Open Questions
193
+
194
+ Things that couldn't be fully resolved:
195
+
196
+ 1. **[Question]**
197
+ - What we know: [partial info]
198
+ - What's unclear: [the gap]
199
+ - Recommendation: [how to handle during planning/execution]
200
+
201
+ 2. **[Question]**
202
+ - What we know: [partial info]
203
+ - What's unclear: [the gap]
204
+ - Recommendation: [how to handle]
205
+ </open_questions>
206
+
207
+ <sources>
208
+ ## Sources
209
+
210
+ ### Primary (HIGH confidence)
211
+ - [Context7 library ID] - [topics fetched]
212
+ - [Official docs URL] - [what was checked]
213
+
214
+ ### Secondary (MEDIUM confidence)
215
+ - [WebSearch verified with official source] - [finding + verification]
216
+
217
+ ### Tertiary (LOW confidence - needs validation)
218
+ - [WebSearch only] - [finding, marked for validation during implementation]
219
+ </sources>
220
+
221
+ <metadata>
222
+ ## Metadata
223
+
224
+ **Research scope:**
225
+ - Core technology: [what]
226
+ - Ecosystem: [libraries explored]
227
+ - Patterns: [patterns researched]
228
+ - Pitfalls: [areas checked]
229
+
230
+ **Confidence breakdown:**
231
+ - Standard stack: [HIGH/MEDIUM/LOW] - [reason]
232
+ - Architecture: [HIGH/MEDIUM/LOW] - [reason]
233
+ - Pitfalls: [HIGH/MEDIUM/LOW] - [reason]
234
+ - Code examples: [HIGH/MEDIUM/LOW] - [reason]
235
+
236
+ **Research date:** [date]
237
+ **Valid until:** [estimate - 30 days for stable tech, 7 days for fast-moving]
238
+ </metadata>
239
+
240
+ ---
241
+
242
+ *Phase: XX-name*
243
+ *Research completed: [date]*
244
+ *Ready for planning: [yes/no]*
245
+ ```
246
+
247
+ ---
248
+
249
+ ## Good Example
250
+
251
+ ```markdown
252
+ # Phase 3: 3D City Driving - Research
253
+
254
+ **Researched:** 2025-01-20
255
+ **Domain:** Three.js 3D web game with driving mechanics
256
+ **Confidence:** HIGH
257
+
258
+ <research_summary>
259
+ ## Summary
260
+
261
+ Researched the Three.js ecosystem for building a 3D city driving game. The standard approach uses Three.js with React Three Fiber for component architecture, Rapier for physics, and drei for common helpers.
262
+
263
+ Key finding: Don't hand-roll physics or collision detection. Rapier (via @react-three/rapier) handles vehicle physics, terrain collision, and city object interactions efficiently. Custom physics code leads to bugs and performance issues.
264
+
265
+ **Primary recommendation:** Use R3F + Rapier + drei stack. Start with vehicle controller from drei, add Rapier vehicle physics, build city with instanced meshes for performance.
266
+ </research_summary>
267
+
268
+ <standard_stack>
269
+ ## Standard Stack
270
+
271
+ ### Core
272
+ | Library | Version | Purpose | Why Standard |
273
+ |---------|---------|---------|--------------|
274
+ | three | 0.160.0 | 3D rendering | The standard for web 3D |
275
+ | @react-three/fiber | 8.15.0 | React renderer for Three.js | Declarative 3D, better DX |
276
+ | @react-three/drei | 9.92.0 | Helpers and abstractions | Solves common problems |
277
+ | @react-three/rapier | 1.2.1 | Physics engine bindings | Best physics for R3F |
278
+
279
+ ### Supporting
280
+ | Library | Version | Purpose | When to Use |
281
+ |---------|---------|---------|-------------|
282
+ | @react-three/postprocessing | 2.16.0 | Visual effects | Bloom, DOF, motion blur |
283
+ | leva | 0.9.35 | Debug UI | Tweaking parameters |
284
+ | zustand | 4.4.7 | State management | Game state, UI state |
285
+ | use-sound | 4.0.1 | Audio | Engine sounds, ambient |
286
+
287
+ ### Alternatives Considered
288
+ | Instead of | Could Use | Tradeoff |
289
+ |------------|-----------|----------|
290
+ | Rapier | Cannon.js | Cannon simpler but less performant for vehicles |
291
+ | R3F | Vanilla Three | Vanilla if no React, but R3F DX is much better |
292
+ | drei | Custom helpers | drei is battle-tested, don't reinvent |
293
+
294
+ **Installation:**
295
+ ```bash
296
+ npm install three @react-three/fiber @react-three/drei @react-three/rapier zustand
297
+ ```
298
+ </standard_stack>
299
+
300
+ <architecture_patterns>
301
+ ## Architecture Patterns
302
+
303
+ ### Recommended Project Structure
304
+ ```
305
+ src/
306
+ ├── components/
307
+ │ ├── Vehicle/ # Player car with physics
308
+ │ ├── City/ # City generation and buildings
309
+ │ ├── Road/ # Road network
310
+ │ └── Environment/ # Sky, lighting, fog
311
+ ├── hooks/
312
+ │ ├── useVehicleControls.ts
313
+ │ └── useGameState.ts
314
+ ├── stores/
315
+ │ └── gameStore.ts # Zustand state
316
+ └── utils/
317
+ └── cityGenerator.ts # Procedural generation helpers
318
+ ```
319
+
320
+ ### Pattern 1: Vehicle with Rapier Physics
321
+ **What:** Use RigidBody with vehicle-specific settings, not custom physics
322
+ **When to use:** Any ground vehicle
323
+ **Example:**
324
+ ```typescript
325
+ // Source: @react-three/rapier docs
326
+ import { RigidBody, useRapier } from '@react-three/rapier'
327
+
328
+ function Vehicle() {
329
+ const rigidBody = useRef()
330
+
331
+ return (
332
+ <RigidBody
333
+ ref={rigidBody}
334
+ type="dynamic"
335
+ colliders="hull"
336
+ mass={1500}
337
+ linearDamping={0.5}
338
+ angularDamping={0.5}
339
+ >
340
+ <mesh>
341
+ <boxGeometry args={[2, 1, 4]} />
342
+ <meshStandardMaterial />
343
+ </mesh>
344
+ </RigidBody>
345
+ )
346
+ }
347
+ ```
348
+
349
+ ### Pattern 2: Instanced Meshes for City
350
+ **What:** Use InstancedMesh for repeated objects (buildings, trees, props)
351
+ **When to use:** >100 similar objects
352
+ **Example:**
353
+ ```typescript
354
+ // Source: drei docs
355
+ import { Instances, Instance } from '@react-three/drei'
356
+
357
+ function Buildings({ positions }) {
358
+ return (
359
+ <Instances limit={1000}>
360
+ <boxGeometry />
361
+ <meshStandardMaterial />
362
+ {positions.map((pos, i) => (
363
+ <Instance key={i} position={pos} scale={[1, Math.random() * 5 + 1, 1]} />
364
+ ))}
365
+ </Instances>
366
+ )
367
+ }
368
+ ```
369
+
370
+ ### Anti-Patterns to Avoid
371
+ - **Creating meshes in render loop:** Create once, update transforms only
372
+ - **Not using InstancedMesh:** Individual meshes for buildings kills performance
373
+ - **Custom physics math:** Rapier handles it better, every time
374
+ </architecture_patterns>
375
+
376
+ <dont_hand_roll>
377
+ ## Don't Hand-Roll
378
+
379
+ | Problem | Don't Build | Use Instead | Why |
380
+ |---------|-------------|-------------|-----|
381
+ | Vehicle physics | Custom velocity/acceleration | Rapier RigidBody | Wheel friction, suspension, collisions are complex |
382
+ | Collision detection | Raycasting everything | Rapier colliders | Performance, edge cases, tunneling |
383
+ | Camera follow | Manual lerp | drei CameraControls or custom with useFrame | Smooth interpolation, bounds |
384
+ | City generation | Pure random placement | Grid-based with noise for variation | Random looks wrong, grid is predictable |
385
+ | LOD | Manual distance checks | drei <Detailed> | Handles transitions, hysteresis |
386
+
387
+ **Key insight:** 3D game development has 40+ years of solved problems. Rapier implements proper physics simulation. drei implements proper 3D helpers. Fighting these leads to bugs that look like "game feel" issues but are actually physics edge cases.
388
+ </dont_hand_roll>
389
+
390
+ <common_pitfalls>
391
+ ## Common Pitfalls
392
+
393
+ ### Pitfall 1: Physics Tunneling
394
+ **What goes wrong:** Fast objects pass through walls
395
+ **Why it happens:** Default physics step too large for velocity
396
+ **How to avoid:** Use CCD (Continuous Collision Detection) in Rapier
397
+ **Warning signs:** Objects randomly appearing outside buildings
398
+
399
+ ### Pitfall 2: Performance Death by Draw Calls
400
+ **What goes wrong:** Game stutters with many buildings
401
+ **Why it happens:** Each mesh = 1 draw call, hundreds of buildings = hundreds of calls
402
+ **How to avoid:** InstancedMesh for similar objects, merge static geometry
403
+ **Warning signs:** GPU bound, low FPS despite simple scene
404
+
405
+ ### Pitfall 3: Vehicle "Floaty" Feel
406
+ **What goes wrong:** Car doesn't feel grounded
407
+ **Why it happens:** Missing proper wheel/suspension simulation
408
+ **How to avoid:** Use Rapier vehicle controller or tune mass/damping carefully
409
+ **Warning signs:** Car bounces oddly, doesn't grip corners
410
+ </common_pitfalls>
411
+
412
+ <code_examples>
413
+ ## Code Examples
414
+
415
+ ### Basic R3F + Rapier Setup
416
+ ```typescript
417
+ // Source: @react-three/rapier getting started
418
+ import { Canvas } from '@react-three/fiber'
419
+ import { Physics } from '@react-three/rapier'
420
+
421
+ function Game() {
422
+ return (
423
+ <Canvas>
424
+ <Physics gravity={[0, -9.81, 0]}>
425
+ <Vehicle />
426
+ <City />
427
+ <Ground />
428
+ </Physics>
429
+ </Canvas>
430
+ )
431
+ }
432
+ ```
433
+
434
+ ### Vehicle Controls Hook
435
+ ```typescript
436
+ // Source: Community pattern, verified with drei docs
437
+ import { useFrame } from '@react-three/fiber'
438
+ import { useKeyboardControls } from '@react-three/drei'
439
+
440
+ function useVehicleControls(rigidBodyRef) {
441
+ const [, getKeys] = useKeyboardControls()
442
+
443
+ useFrame(() => {
444
+ const { forward, back, left, right } = getKeys()
445
+ const body = rigidBodyRef.current
446
+ if (!body) return
447
+
448
+ const impulse = { x: 0, y: 0, z: 0 }
449
+ if (forward) impulse.z -= 10
450
+ if (back) impulse.z += 5
451
+
452
+ body.applyImpulse(impulse, true)
453
+
454
+ if (left) body.applyTorqueImpulse({ x: 0, y: 2, z: 0 }, true)
455
+ if (right) body.applyTorqueImpulse({ x: 0, y: -2, z: 0 }, true)
456
+ })
457
+ }
458
+ ```
459
+ </code_examples>
460
+
461
+ <sota_updates>
462
+ ## State of the Art (2024-2025)
463
+
464
+ | Old Approach | Current Approach | When Changed | Impact |
465
+ |--------------|------------------|--------------|--------|
466
+ | cannon-es | Rapier | 2023 | Rapier is faster, better maintained |
467
+ | vanilla Three.js | React Three Fiber | 2020+ | R3F is now standard for React apps |
468
+ | Manual InstancedMesh | drei <Instances> | 2022 | Simpler API, handles updates |
469
+
470
+ **New tools/patterns to consider:**
471
+ - **WebGPU:** Coming but not production-ready for games yet (2025)
472
+ - **drei Gltf helpers:** <useGLTF.preload> for loading screens
473
+
474
+ **Deprecated/outdated:**
475
+ - **cannon.js (original):** Use cannon-es fork or better, Rapier
476
+ - **Manual raycasting for physics:** Just use Rapier colliders
477
+ </sota_updates>
478
+
479
+ <sources>
480
+ ## Sources
481
+
482
+ ### Primary (HIGH confidence)
483
+ - /pmndrs/react-three-fiber - getting started, hooks, performance
484
+ - /pmndrs/drei - instances, controls, helpers
485
+ - /dimforge/rapier-js - physics setup, vehicle physics
486
+
487
+ ### Secondary (MEDIUM confidence)
488
+ - Three.js discourse "city driving game" threads - verified patterns against docs
489
+ - R3F examples repository - verified code works
490
+
491
+ ### Tertiary (LOW confidence - needs validation)
492
+ - None - all findings verified
493
+ </sources>
494
+
495
+ <metadata>
496
+ ## Metadata
497
+
498
+ **Research scope:**
499
+ - Core technology: Three.js + React Three Fiber
500
+ - Ecosystem: Rapier, drei, zustand
501
+ - Patterns: Vehicle physics, instancing, city generation
502
+ - Pitfalls: Performance, physics, feel
503
+
504
+ **Confidence breakdown:**
505
+ - Standard stack: HIGH - verified with Context7, widely used
506
+ - Architecture: HIGH - from official examples
507
+ - Pitfalls: HIGH - documented in discourse, verified in docs
508
+ - Code examples: HIGH - from Context7/official sources
509
+
510
+ **Research date:** 2025-01-20
511
+ **Valid until:** 2025-02-20 (30 days - R3F ecosystem stable)
512
+ </metadata>
513
+
514
+ ---
515
+
516
+ *Phase: 03-city-driving*
517
+ *Research completed: 2025-01-20*
518
+ *Ready for planning: yes*
519
+ ```
520
+
521
+ ---
522
+
523
+ ## Guidelines
524
+
525
+ **When to create:**
526
+ - Before planning phases in niche/complex domains
527
+ - When Claude's training data is likely stale or sparse
528
+ - When "how do experts do this" matters more than "which library"
529
+
530
+ **Structure:**
531
+ - Use XML tags for section markers (matches EZ Agents templates)
532
+ - Seven core sections: summary, standard_stack, architecture_patterns, dont_hand_roll, common_pitfalls, code_examples, sources
533
+ - All sections required (drives comprehensive research)
534
+
535
+ **Content quality:**
536
+ - Standard stack: Specific versions, not just names
537
+ - Architecture: Include actual code examples from authoritative sources
538
+ - Don't hand-roll: Be explicit about what problems to NOT solve yourself
539
+ - Pitfalls: Include warning signs, not just "don't do this"
540
+ - Sources: Mark confidence levels honestly
541
+
542
+ **Integration with planning:**
543
+ - RESEARCH.md loaded as @context reference in PLAN.md
544
+ - Standard stack informs library choices
545
+ - Don't hand-roll prevents custom solutions
546
+ - Pitfalls inform verification criteria
547
+ - Code examples can be referenced in task actions
548
+
549
+ **After creation:**
550
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
551
+ - Referenced during planning workflow
552
+ - plan-phase loads it automatically when present