@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
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Skill Context — Context schema validation for skill matcher
5
+ *
6
+ * Validates and normalizes matcher context:
7
+ * - stack: object with language, framework, version
8
+ * - scope: enum [new-feature, bugfix, refactor, migration, maintenance]
9
+ * - projectType: string (optional)
10
+ * - mode: enum [greenfield, existing, rapid-mvp, scale-up, maintenance]
11
+ * - constraints: object with deadline, teamSize, compliance, legacySystems
12
+ * - taskDescription: string (for keyword matching)
13
+ * - codebaseFiles: array of strings (for file pattern matching)
14
+ * - executedCommands: array of strings (for command matching)
15
+ *
16
+ * Usage:
17
+ * const { validateContext, CONTEXT_SCHEMA } = require('./skill-context.cjs');
18
+ * const { valid, errors, normalizedContext } = validateContext(context);
19
+ */
20
+
21
+ const Logger = require('./logger.cjs');
22
+ const logger = new Logger();
23
+
24
+ /**
25
+ * Context schema definition
26
+ */
27
+ const CONTEXT_SCHEMA = {
28
+ stack: {
29
+ type: 'object',
30
+ optional: true,
31
+ properties: {
32
+ language: { type: 'string', optional: false },
33
+ framework: { type: 'string', optional: true },
34
+ version: { type: 'string', optional: true }
35
+ }
36
+ },
37
+ scope: {
38
+ type: 'enum',
39
+ values: ['new-feature', 'bugfix', 'refactor', 'migration', 'maintenance'],
40
+ optional: true
41
+ },
42
+ projectType: {
43
+ type: 'string',
44
+ optional: true
45
+ },
46
+ mode: {
47
+ type: 'enum',
48
+ values: ['greenfield', 'existing', 'rapid-mvp', 'scale-up', 'maintenance'],
49
+ optional: true,
50
+ normalize: (value) => {
51
+ const mappings = {
52
+ 'mvp': 'rapid-mvp',
53
+ 'green-field': 'greenfield',
54
+ 'brownfield': 'existing',
55
+ 'scale': 'scale-up',
56
+ 'maint': 'maintenance'
57
+ };
58
+ return mappings[value] || value;
59
+ }
60
+ },
61
+ constraints: {
62
+ type: 'object',
63
+ optional: true,
64
+ properties: {
65
+ deadline: { type: 'string', optional: true },
66
+ teamSize: { type: 'number', optional: true },
67
+ compliance: { type: 'array', optional: true },
68
+ legacySystems: { type: 'array', optional: true }
69
+ }
70
+ },
71
+ taskDescription: { type: 'string', optional: true },
72
+ codebaseFiles: { type: 'array', optional: true },
73
+ executedCommands: { type: 'array', optional: true }
74
+ };
75
+
76
+ /**
77
+ * Validate and normalize context object
78
+ * @param {Object} context - Context object to validate
79
+ * @returns {Object} Validation result: { valid, errors, normalizedContext }
80
+ */
81
+ function validateContext(context) {
82
+ const errors = [];
83
+ const normalized = { ...context };
84
+
85
+ if (!context || typeof context !== 'object') {
86
+ return {
87
+ valid: false,
88
+ errors: ['Context must be an object'],
89
+ normalizedContext: null
90
+ };
91
+ }
92
+
93
+ // Validate and normalize mode
94
+ if (context.mode) {
95
+ const modeSchema = CONTEXT_SCHEMA.mode;
96
+ if (!modeSchema.values.includes(context.mode)) {
97
+ const normalizedMode = modeSchema.normalize?.(context.mode);
98
+ if (normalizedMode && modeSchema.values.includes(normalizedMode)) {
99
+ normalized.mode = normalizedMode;
100
+ } else {
101
+ errors.push(`Invalid mode: ${context.mode}. Valid: ${modeSchema.values.join(', ')}`);
102
+ }
103
+ }
104
+ }
105
+
106
+ // Validate scope
107
+ if (context.scope) {
108
+ const scopeSchema = CONTEXT_SCHEMA.scope;
109
+ if (!scopeSchema.values.includes(context.scope)) {
110
+ errors.push(`Invalid scope: ${context.scope}. Valid: ${scopeSchema.values.join(', ')}`);
111
+ }
112
+ }
113
+
114
+ // Validate stack structure
115
+ if (context.stack) {
116
+ if (!context.stack.language && !context.stack.framework) {
117
+ errors.push('Stack must have at least language or framework');
118
+ }
119
+ }
120
+
121
+ // Validate constraints structure
122
+ if (context.constraints) {
123
+ if (context.constraints.teamSize && typeof context.constraints.teamSize !== 'number') {
124
+ errors.push('teamSize must be a number');
125
+ }
126
+ if (context.constraints.compliance && !Array.isArray(context.constraints.compliance)) {
127
+ errors.push('compliance must be an array');
128
+ }
129
+ }
130
+
131
+ if (errors.length > 0) {
132
+ logger.warn('Context validation failed', {
133
+ errorCount: errors.length,
134
+ errors
135
+ });
136
+ }
137
+
138
+ return {
139
+ valid: errors.length === 0,
140
+ errors,
141
+ normalizedContext: errors.length === 0 ? normalized : null
142
+ };
143
+ }
144
+
145
+ module.exports = {
146
+ validateContext,
147
+ CONTEXT_SCHEMA
148
+ };
@@ -0,0 +1,236 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Skill Matcher — Rule-based skill matching algorithm
5
+ *
6
+ * Matches context to skills using 5-rule matching:
7
+ * - Rule 1: Stack skills (mandatory, priority 100)
8
+ * - Rule 2: Domain skills (if project type detected, priority 90)
9
+ * - Rule 3: Mode skills (ceremony level, priority 85)
10
+ * - Rule 4: Constraint-based skills (deadline, team, compliance, priority 80)
11
+ * - Rule 5: Universal skills (always activate, priority 50)
12
+ *
13
+ * Enforces 3-7 skill limit per task (EDGE-05 compliance)
14
+ *
15
+ * Usage:
16
+ * const { SkillMatcher, SKILL_LIMITS } = require('./skill-matcher.cjs');
17
+ * const matcher = new SkillMatcher(registry);
18
+ * const result = matcher.match(context);
19
+ */
20
+
21
+ const Logger = require('./logger.cjs');
22
+ const logger = new Logger();
23
+
24
+ /**
25
+ * Skill activation limits (EDGE-05 compliance)
26
+ */
27
+ const SKILL_LIMITS = {
28
+ MIN_ACTIVE: 3,
29
+ MAX_ACTIVE: 7,
30
+ CRITICAL_TASK_MAX: 5, // For security-sensitive tasks
31
+ MVP_MODE_MAX: 4, // Rapid MVP mode reduces complexity
32
+ };
33
+
34
+ /**
35
+ * Skill Matcher class for matching context to skills
36
+ */
37
+ class SkillMatcher {
38
+ /**
39
+ * Create a SkillMatcher instance
40
+ * @param {Object} registry - SkillRegistry instance
41
+ * @param {Object} options - Matcher options
42
+ */
43
+ constructor(registry, options = {}) {
44
+ this.registry = registry;
45
+ this.logger = options.logger || logger;
46
+ this.rules = this.loadMatchingRules();
47
+ }
48
+
49
+ /**
50
+ * Match context to skills
51
+ * @param {Object} context - Matching context
52
+ * @returns {Object} Match result: { activatedSkills, rationale, conflicts, metadata }
53
+ */
54
+ match(context) {
55
+ const candidates = [];
56
+
57
+ // Rule 1: Stack skills (mandatory)
58
+ if (context.stack?.framework || context.stack?.language) {
59
+ const stackSkills = this.findByStack(context.stack);
60
+ stackSkills.forEach(skill => {
61
+ candidates.push({ skill, priority: 100, rule: 'stack' });
62
+ });
63
+ }
64
+
65
+ // Rule 2: Domain skills (if project type detected)
66
+ if (context.projectType) {
67
+ const domainSkills = this.findByDomain(context.projectType);
68
+ domainSkills.forEach(skill => {
69
+ candidates.push({ skill, priority: 90, rule: 'domain' });
70
+ });
71
+ }
72
+
73
+ // Rule 3: Mode skills (ceremony level)
74
+ if (context.mode) {
75
+ const modeSkills = this.findByMode(context.mode);
76
+ modeSkills.forEach(skill => {
77
+ candidates.push({ skill, priority: 85, rule: 'mode' });
78
+ });
79
+ }
80
+
81
+ // Rule 4: Constraint-based skills
82
+ const constraintSkills = this.findByConstraints(context.constraints);
83
+ constraintSkills.forEach(skill => {
84
+ candidates.push({ skill, priority: 80, rule: 'constraint' });
85
+ });
86
+
87
+ // Rule 5: Universal skills (always activate)
88
+ const universalSkills = this.registry.findByTag('universal');
89
+ universalSkills.forEach(skill => {
90
+ candidates.push({ skill, priority: 50, rule: 'universal' });
91
+ });
92
+
93
+ // Sort by priority and apply limits
94
+ const sorted = candidates.sort((a, b) => b.priority - a.priority);
95
+ const limited = this.enforceSkillLimits(sorted, context);
96
+ const activatedSkills = limited.map(c => c.skill);
97
+
98
+ return {
99
+ activatedSkills,
100
+ rationale: this.generateRationale(activatedSkills, context),
101
+ conflicts: [], // Reserved for Phase 36 SKILL-07
102
+ metadata: {
103
+ totalCandidates: candidates.length,
104
+ rulesApplied: [...new Set(candidates.map(c => c.rule))],
105
+ limitEnforced: candidates.length > limited.length
106
+ }
107
+ };
108
+ }
109
+
110
+ /**
111
+ * Enforce skill activation limits
112
+ * @param {Object[]} candidates - Sorted candidate skills
113
+ * @param {Object} context - Matching context
114
+ * @returns {Object[]} Limited candidate array
115
+ * @private
116
+ */
117
+ enforceSkillLimits(candidates, context) {
118
+ const maxSkills = context.mode === 'rapid-mvp'
119
+ ? SKILL_LIMITS.MVP_MODE_MAX
120
+ : SKILL_LIMITS.MAX_ACTIVE;
121
+
122
+ if (candidates.length > maxSkills) {
123
+ this.logger.warn('Skill limit exceeded', {
124
+ candidateCount: candidates.length,
125
+ maxSkills,
126
+ mode: context.mode,
127
+ skills: candidates.slice(0, maxSkills).map(c => c.skill.name)
128
+ });
129
+ }
130
+
131
+ return candidates.slice(0, maxSkills);
132
+ }
133
+
134
+ /**
135
+ * Generate rationale for skill activation
136
+ * @param {Object[]} skills - Activated skills
137
+ * @param {Object} context - Matching context
138
+ * @returns {string} Rationale string
139
+ * @private
140
+ */
141
+ generateRationale(skills, context) {
142
+ const categories = {};
143
+ skills.forEach(skill => {
144
+ const cat = skill.category || 'other';
145
+ if (!categories[cat]) categories[cat] = [];
146
+ categories[cat].push(skill.name);
147
+ });
148
+
149
+ const parts = [];
150
+ if (categories.stack) parts.push(`stack: ${categories.stack.join(', ')}`);
151
+ if (categories.domain) parts.push(`domain: ${categories.domain.join(', ')}`);
152
+ if (categories.mode) parts.push(`mode: ${categories.mode.join(', ')}`);
153
+ if (categories.constraint) parts.push(`constraint: ${categories.constraint.join(', ')}`);
154
+ if (categories.universal) parts.push(`universal: ${categories.universal.join(', ')}`);
155
+
156
+ return `Activated ${skills.length} skills based on ${context.mode || 'default'} mode: ${parts.join('; ')}`;
157
+ }
158
+
159
+ /**
160
+ * Find skills by stack
161
+ * @param {Object|string} stack - Stack identifier
162
+ * @returns {Object[]} Matching skills
163
+ */
164
+ findByStack(stack) {
165
+ return this.registry.findByStack(stack);
166
+ }
167
+
168
+ /**
169
+ * Find skills by domain/project type
170
+ * @param {string} projectType - Project type
171
+ * @returns {Object[]} Matching skills
172
+ */
173
+ findByDomain(projectType) {
174
+ return this.registry.findByTag(projectType);
175
+ }
176
+
177
+ /**
178
+ * Find skills by mode
179
+ * @param {string} mode - Mode identifier
180
+ * @returns {Object[]} Matching skills
181
+ */
182
+ findByMode(mode) {
183
+ return this.registry.findByTag(mode);
184
+ }
185
+
186
+ /**
187
+ * Find skills by constraints
188
+ * @param {Object} constraints - Constraint object
189
+ * @returns {Object[]} Matching skills
190
+ * @private
191
+ */
192
+ findByConstraints(constraints) {
193
+ const skills = [];
194
+ if (!constraints) return skills;
195
+
196
+ // Deadline-based skills
197
+ if (constraints.deadline === '2-weeks' || constraints.deadline === '1-week') {
198
+ const rapid = this.registry.get('rapid_delivery_skill_v1');
199
+ if (rapid) skills.push(rapid);
200
+ }
201
+
202
+ // Compliance-based skills
203
+ if (constraints.compliance?.includes('hipaa')) {
204
+ const hipaa = this.registry.get('hipaa_compliance_skill_v1');
205
+ if (hipaa) skills.push(hipaa);
206
+ }
207
+
208
+ // Team size skills
209
+ if (constraints.teamSize === 1) {
210
+ const solo = this.registry.get('solo_developer_skill_v1');
211
+ if (solo) skills.push(solo);
212
+ }
213
+
214
+ return skills;
215
+ }
216
+
217
+ /**
218
+ * Load matching rules configuration
219
+ * @returns {Object} Rules configuration
220
+ * @private
221
+ */
222
+ loadMatchingRules() {
223
+ return {
224
+ stack: { priority: 100, required: true },
225
+ domain: { priority: 90, required: false },
226
+ mode: { priority: 85, required: false },
227
+ constraint: { priority: 80, required: false },
228
+ universal: { priority: 50, required: true }
229
+ };
230
+ }
231
+ }
232
+
233
+ module.exports = {
234
+ SkillMatcher,
235
+ SKILL_LIMITS
236
+ };