metaharness 0.3.2 → 0.4.1

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 (348) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +126 -99
  3. package/dist/completions-cmd.js +94 -94
  4. package/dist/index.js +74 -74
  5. package/dist/meta-proxy.d.ts +21 -1
  6. package/dist/meta-proxy.d.ts.map +1 -1
  7. package/dist/meta-proxy.js +139 -5
  8. package/dist/meta-proxy.js.map +1 -1
  9. package/dist/with-wasm.js +43 -43
  10. package/genomes/README.md +23 -23
  11. package/genomes/genome-promoted-cand6-edit-by-midpoint.json +26 -26
  12. package/package.json +126 -126
  13. package/templates/catalog.def.mjs +542 -542
  14. package/templates/catalog.json +1274 -1274
  15. package/templates/minimal/.claude/settings.json.tmpl +18 -18
  16. package/templates/minimal/.claude-plugin/plugin.json.tmpl +13 -13
  17. package/templates/minimal/CLAUDE.md.tmpl +26 -26
  18. package/templates/minimal/README.md.tmpl +20 -20
  19. package/templates/minimal/__tests__/smoke.test.ts.tmpl +37 -37
  20. package/templates/minimal/bin/cli.js.tmpl +100 -100
  21. package/templates/minimal/manifest.json +20 -20
  22. package/templates/minimal/package.json.tmpl +31 -31
  23. package/templates/minimal/src/init.ts.tmpl +21 -21
  24. package/templates/minimal/tsconfig.json.tmpl +19 -19
  25. package/templates/minimal/vitest.config.ts.tmpl +23 -23
  26. package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -12
  27. package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -33
  28. package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -13
  29. package/templates/vertical_advertising/.claude-plugin/plugin.json.tmpl +23 -23
  30. package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -30
  31. package/templates/vertical_advertising/README.md.tmpl +29 -29
  32. package/templates/vertical_advertising/__tests__/smoke.test.ts.tmpl +37 -37
  33. package/templates/vertical_advertising/bin/cli.js.tmpl +100 -100
  34. package/templates/vertical_advertising/manifest.json +101 -101
  35. package/templates/vertical_advertising/package.json.tmpl +30 -30
  36. package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -7
  37. package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -7
  38. package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -7
  39. package/templates/vertical_advertising/src/init.ts.tmpl +21 -21
  40. package/templates/vertical_advertising/tsconfig.json.tmpl +19 -19
  41. package/templates/vertical_advertising/vitest.config.ts.tmpl +23 -23
  42. package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -12
  43. package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -33
  44. package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  45. package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -14
  46. package/templates/vertical_agentics/.claude-plugin/plugin.json.tmpl +23 -23
  47. package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -32
  48. package/templates/vertical_agentics/README.md.tmpl +30 -30
  49. package/templates/vertical_agentics/__tests__/smoke.test.ts.tmpl +37 -37
  50. package/templates/vertical_agentics/bin/cli.js.tmpl +100 -100
  51. package/templates/vertical_agentics/manifest.json +111 -111
  52. package/templates/vertical_agentics/package.json.tmpl +30 -30
  53. package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -7
  54. package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -7
  55. package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -7
  56. package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -7
  57. package/templates/vertical_agentics/src/init.ts.tmpl +21 -21
  58. package/templates/vertical_agentics/tsconfig.json.tmpl +19 -19
  59. package/templates/vertical_agentics/vitest.config.ts.tmpl +23 -23
  60. package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -12
  61. package/templates/vertical_ai/.claude/settings.json.tmpl +35 -35
  62. package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -13
  63. package/templates/vertical_ai/.claude-plugin/plugin.json.tmpl +23 -23
  64. package/templates/vertical_ai/CLAUDE.md.tmpl +31 -31
  65. package/templates/vertical_ai/README.md.tmpl +30 -30
  66. package/templates/vertical_ai/__tests__/smoke.test.ts.tmpl +37 -37
  67. package/templates/vertical_ai/bin/cli.js.tmpl +100 -100
  68. package/templates/vertical_ai/manifest.json +106 -106
  69. package/templates/vertical_ai/package.json.tmpl +30 -30
  70. package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -7
  71. package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -7
  72. package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -7
  73. package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -7
  74. package/templates/vertical_ai/src/init.ts.tmpl +21 -21
  75. package/templates/vertical_ai/tsconfig.json.tmpl +19 -19
  76. package/templates/vertical_ai/vitest.config.ts.tmpl +23 -23
  77. package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -12
  78. package/templates/vertical_business/.claude/settings.json.tmpl +33 -33
  79. package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -13
  80. package/templates/vertical_business/.claude-plugin/plugin.json.tmpl +23 -23
  81. package/templates/vertical_business/CLAUDE.md.tmpl +30 -30
  82. package/templates/vertical_business/README.md.tmpl +29 -29
  83. package/templates/vertical_business/__tests__/smoke.test.ts.tmpl +37 -37
  84. package/templates/vertical_business/bin/cli.js.tmpl +100 -100
  85. package/templates/vertical_business/manifest.json +101 -101
  86. package/templates/vertical_business/package.json.tmpl +30 -30
  87. package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -7
  88. package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -7
  89. package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -7
  90. package/templates/vertical_business/src/init.ts.tmpl +21 -21
  91. package/templates/vertical_business/tsconfig.json.tmpl +19 -19
  92. package/templates/vertical_business/vitest.config.ts.tmpl +23 -23
  93. package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -12
  94. package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -10
  95. package/templates/vertical_coding/.claude/settings.json.tmpl +40 -40
  96. package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  97. package/templates/vertical_coding/.claude-plugin/plugin.json.tmpl +23 -23
  98. package/templates/vertical_coding/CLAUDE.md.tmpl +32 -32
  99. package/templates/vertical_coding/README.md.tmpl +30 -30
  100. package/templates/vertical_coding/__tests__/smoke.test.ts.tmpl +37 -37
  101. package/templates/vertical_coding/bin/cli.js.tmpl +100 -100
  102. package/templates/vertical_coding/manifest.json +111 -111
  103. package/templates/vertical_coding/package.json.tmpl +30 -30
  104. package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -7
  105. package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -7
  106. package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -7
  107. package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -7
  108. package/templates/vertical_coding/src/init.ts.tmpl +21 -21
  109. package/templates/vertical_coding/tsconfig.json.tmpl +19 -19
  110. package/templates/vertical_coding/vitest.config.ts.tmpl +23 -23
  111. package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -12
  112. package/templates/vertical_crm/.claude/settings.json.tmpl +33 -33
  113. package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  114. package/templates/vertical_crm/.claude-plugin/plugin.json.tmpl +23 -23
  115. package/templates/vertical_crm/CLAUDE.md.tmpl +30 -30
  116. package/templates/vertical_crm/README.md.tmpl +29 -29
  117. package/templates/vertical_crm/__tests__/smoke.test.ts.tmpl +37 -37
  118. package/templates/vertical_crm/bin/cli.js.tmpl +100 -100
  119. package/templates/vertical_crm/manifest.json +101 -101
  120. package/templates/vertical_crm/package.json.tmpl +30 -30
  121. package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -7
  122. package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -7
  123. package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -7
  124. package/templates/vertical_crm/src/init.ts.tmpl +21 -21
  125. package/templates/vertical_crm/tsconfig.json.tmpl +19 -19
  126. package/templates/vertical_crm/vitest.config.ts.tmpl +23 -23
  127. package/templates/vertical_devops/.claude/settings.json.tmpl +36 -36
  128. package/templates/vertical_devops/.claude-plugin/plugin.json.tmpl +23 -23
  129. package/templates/vertical_devops/CLAUDE.md.tmpl +34 -34
  130. package/templates/vertical_devops/README.md.tmpl +27 -27
  131. package/templates/vertical_devops/__tests__/smoke.test.ts.tmpl +37 -37
  132. package/templates/vertical_devops/bin/cli.js.tmpl +100 -100
  133. package/templates/vertical_devops/manifest.json +100 -100
  134. package/templates/vertical_devops/package.json.tmpl +27 -27
  135. package/templates/vertical_devops/runbooks/README.md.tmpl +32 -32
  136. package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -19
  137. package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -23
  138. package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -14
  139. package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -17
  140. package/templates/vertical_devops/src/init.ts.tmpl +23 -23
  141. package/templates/vertical_devops/tsconfig.json.tmpl +19 -19
  142. package/templates/vertical_devops/vitest.config.ts.tmpl +23 -23
  143. package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -12
  144. package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -12
  145. package/templates/vertical_education/.claude/settings.json.tmpl +45 -45
  146. package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  147. package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -16
  148. package/templates/vertical_education/.claude-plugin/plugin.json.tmpl +23 -23
  149. package/templates/vertical_education/CLAUDE.md.tmpl +33 -33
  150. package/templates/vertical_education/README.md.tmpl +30 -30
  151. package/templates/vertical_education/__tests__/smoke.test.ts.tmpl +37 -37
  152. package/templates/vertical_education/bin/cli.js.tmpl +100 -100
  153. package/templates/vertical_education/manifest.json +116 -116
  154. package/templates/vertical_education/package.json.tmpl +30 -30
  155. package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -7
  156. package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -7
  157. package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -7
  158. package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -7
  159. package/templates/vertical_education/src/init.ts.tmpl +21 -21
  160. package/templates/vertical_education/tsconfig.json.tmpl +19 -19
  161. package/templates/vertical_education/vitest.config.ts.tmpl +23 -23
  162. package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -12
  163. package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -44
  164. package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -14
  165. package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  166. package/templates/vertical_exotic/.claude-plugin/plugin.json.tmpl +23 -23
  167. package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -31
  168. package/templates/vertical_exotic/README.md.tmpl +29 -29
  169. package/templates/vertical_exotic/__tests__/smoke.test.ts.tmpl +37 -37
  170. package/templates/vertical_exotic/bin/cli.js.tmpl +100 -100
  171. package/templates/vertical_exotic/manifest.json +106 -106
  172. package/templates/vertical_exotic/package.json.tmpl +30 -30
  173. package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -7
  174. package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -7
  175. package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -7
  176. package/templates/vertical_exotic/src/init.ts.tmpl +21 -21
  177. package/templates/vertical_exotic/tsconfig.json.tmpl +19 -19
  178. package/templates/vertical_exotic/vitest.config.ts.tmpl +23 -23
  179. package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -13
  180. package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -12
  181. package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -45
  182. package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  183. package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -16
  184. package/templates/vertical_gaming/.claude-plugin/plugin.json.tmpl +23 -23
  185. package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -33
  186. package/templates/vertical_gaming/README.md.tmpl +30 -30
  187. package/templates/vertical_gaming/__tests__/smoke.test.ts.tmpl +37 -37
  188. package/templates/vertical_gaming/bin/cli.js.tmpl +100 -100
  189. package/templates/vertical_gaming/manifest.json +116 -116
  190. package/templates/vertical_gaming/package.json.tmpl +30 -30
  191. package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -7
  192. package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -7
  193. package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -7
  194. package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -7
  195. package/templates/vertical_gaming/src/init.ts.tmpl +21 -21
  196. package/templates/vertical_gaming/tsconfig.json.tmpl +19 -19
  197. package/templates/vertical_gaming/vitest.config.ts.tmpl +23 -23
  198. package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -12
  199. package/templates/vertical_health/.claude/settings.json.tmpl +33 -33
  200. package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -15
  201. package/templates/vertical_health/.claude-plugin/plugin.json.tmpl +23 -23
  202. package/templates/vertical_health/CLAUDE.md.tmpl +30 -30
  203. package/templates/vertical_health/README.md.tmpl +29 -29
  204. package/templates/vertical_health/__tests__/smoke.test.ts.tmpl +37 -37
  205. package/templates/vertical_health/bin/cli.js.tmpl +100 -100
  206. package/templates/vertical_health/manifest.json +101 -101
  207. package/templates/vertical_health/package.json.tmpl +30 -30
  208. package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -7
  209. package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -7
  210. package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -7
  211. package/templates/vertical_health/src/init.ts.tmpl +21 -21
  212. package/templates/vertical_health/tsconfig.json.tmpl +19 -19
  213. package/templates/vertical_health/vitest.config.ts.tmpl +23 -23
  214. package/templates/vertical_legal/.claude/settings.json.tmpl +10 -10
  215. package/templates/vertical_legal/.claude-plugin/plugin.json.tmpl +23 -23
  216. package/templates/vertical_legal/CLAUDE.md.tmpl +24 -24
  217. package/templates/vertical_legal/README.md.tmpl +21 -21
  218. package/templates/vertical_legal/__tests__/smoke.test.ts.tmpl +37 -37
  219. package/templates/vertical_legal/bin/cli.js.tmpl +100 -100
  220. package/templates/vertical_legal/manifest.json +90 -90
  221. package/templates/vertical_legal/package.json.tmpl +14 -14
  222. package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -7
  223. package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -7
  224. package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -8
  225. package/templates/vertical_legal/src/init.ts.tmpl +13 -13
  226. package/templates/vertical_legal/tsconfig.json.tmpl +19 -19
  227. package/templates/vertical_legal/vitest.config.ts.tmpl +23 -23
  228. package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -12
  229. package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -33
  230. package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -13
  231. package/templates/vertical_marketing/.claude-plugin/plugin.json.tmpl +23 -23
  232. package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -30
  233. package/templates/vertical_marketing/README.md.tmpl +29 -29
  234. package/templates/vertical_marketing/__tests__/smoke.test.ts.tmpl +37 -37
  235. package/templates/vertical_marketing/bin/cli.js.tmpl +100 -100
  236. package/templates/vertical_marketing/manifest.json +101 -101
  237. package/templates/vertical_marketing/package.json.tmpl +30 -30
  238. package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -7
  239. package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -7
  240. package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -7
  241. package/templates/vertical_marketing/src/init.ts.tmpl +21 -21
  242. package/templates/vertical_marketing/tsconfig.json.tmpl +19 -19
  243. package/templates/vertical_marketing/vitest.config.ts.tmpl +23 -23
  244. package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -12
  245. package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -13
  246. package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -16
  247. package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -44
  248. package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  249. package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  250. package/templates/vertical_repo-maintainer/.claude-plugin/plugin.json.tmpl +23 -23
  251. package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -34
  252. package/templates/vertical_repo-maintainer/README.md.tmpl +30 -30
  253. package/templates/vertical_repo-maintainer/__tests__/smoke.test.ts.tmpl +37 -37
  254. package/templates/vertical_repo-maintainer/bin/cli.js.tmpl +100 -100
  255. package/templates/vertical_repo-maintainer/manifest.json +121 -121
  256. package/templates/vertical_repo-maintainer/package.json.tmpl +30 -30
  257. package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -7
  258. package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -7
  259. package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -7
  260. package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -7
  261. package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -21
  262. package/templates/vertical_repo-maintainer/tsconfig.json.tmpl +19 -19
  263. package/templates/vertical_repo-maintainer/vitest.config.ts.tmpl +23 -23
  264. package/templates/vertical_research/.claude/settings.json.tmpl +9 -9
  265. package/templates/vertical_research/.claude-plugin/plugin.json.tmpl +23 -23
  266. package/templates/vertical_research/CLAUDE.md.tmpl +33 -33
  267. package/templates/vertical_research/README.md.tmpl +17 -17
  268. package/templates/vertical_research/__tests__/smoke.test.ts.tmpl +37 -37
  269. package/templates/vertical_research/bin/cli.js.tmpl +100 -100
  270. package/templates/vertical_research/manifest.json +105 -105
  271. package/templates/vertical_research/package.json.tmpl +14 -14
  272. package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -8
  273. package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -8
  274. package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -7
  275. package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -10
  276. package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -8
  277. package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -6
  278. package/templates/vertical_research/src/init.ts.tmpl +13 -13
  279. package/templates/vertical_research/tsconfig.json.tmpl +19 -19
  280. package/templates/vertical_research/vitest.config.ts.tmpl +23 -23
  281. package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -12
  282. package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -33
  283. package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -15
  284. package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  285. package/templates/vertical_ruview/.claude-plugin/plugin.json.tmpl +23 -23
  286. package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -31
  287. package/templates/vertical_ruview/README.md.tmpl +29 -29
  288. package/templates/vertical_ruview/__tests__/smoke.test.ts.tmpl +37 -37
  289. package/templates/vertical_ruview/bin/cli.js.tmpl +100 -100
  290. package/templates/vertical_ruview/manifest.json +106 -106
  291. package/templates/vertical_ruview/package.json.tmpl +30 -30
  292. package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -7
  293. package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -7
  294. package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -7
  295. package/templates/vertical_ruview/src/init.ts.tmpl +21 -21
  296. package/templates/vertical_ruview/tsconfig.json.tmpl +19 -19
  297. package/templates/vertical_ruview/vitest.config.ts.tmpl +23 -23
  298. package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -12
  299. package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -13
  300. package/templates/vertical_sales/.claude/settings.json.tmpl +45 -45
  301. package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  302. package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -15
  303. package/templates/vertical_sales/.claude-plugin/plugin.json.tmpl +23 -23
  304. package/templates/vertical_sales/CLAUDE.md.tmpl +33 -33
  305. package/templates/vertical_sales/README.md.tmpl +30 -30
  306. package/templates/vertical_sales/__tests__/smoke.test.ts.tmpl +37 -37
  307. package/templates/vertical_sales/bin/cli.js.tmpl +100 -100
  308. package/templates/vertical_sales/manifest.json +116 -116
  309. package/templates/vertical_sales/package.json.tmpl +30 -30
  310. package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -7
  311. package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -7
  312. package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -7
  313. package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -7
  314. package/templates/vertical_sales/src/init.ts.tmpl +21 -21
  315. package/templates/vertical_sales/tsconfig.json.tmpl +19 -19
  316. package/templates/vertical_sales/vitest.config.ts.tmpl +23 -23
  317. package/templates/vertical_support/.claude/settings.json.tmpl +25 -25
  318. package/templates/vertical_support/.claude-plugin/plugin.json.tmpl +23 -23
  319. package/templates/vertical_support/CLAUDE.md.tmpl +34 -34
  320. package/templates/vertical_support/README.md.tmpl +16 -16
  321. package/templates/vertical_support/__tests__/smoke.test.ts.tmpl +37 -37
  322. package/templates/vertical_support/bin/cli.js.tmpl +100 -100
  323. package/templates/vertical_support/kb/README.md.tmpl +23 -23
  324. package/templates/vertical_support/manifest.json +100 -100
  325. package/templates/vertical_support/package.json.tmpl +25 -25
  326. package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -6
  327. package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -6
  328. package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -7
  329. package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -6
  330. package/templates/vertical_support/src/init.ts.tmpl +16 -16
  331. package/templates/vertical_support/tsconfig.json.tmpl +19 -19
  332. package/templates/vertical_support/vitest.config.ts.tmpl +23 -23
  333. package/templates/vertical_trading/.claude/settings.json.tmpl +20 -20
  334. package/templates/vertical_trading/.claude-plugin/plugin.json.tmpl +23 -23
  335. package/templates/vertical_trading/CLAUDE.md.tmpl +24 -24
  336. package/templates/vertical_trading/README.md.tmpl +17 -17
  337. package/templates/vertical_trading/__tests__/smoke.test.ts.tmpl +37 -37
  338. package/templates/vertical_trading/bin/cli.js.tmpl +100 -100
  339. package/templates/vertical_trading/manifest.json +100 -100
  340. package/templates/vertical_trading/package.json.tmpl +14 -14
  341. package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -8
  342. package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -7
  343. package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -8
  344. package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -11
  345. package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -8
  346. package/templates/vertical_trading/src/init.ts.tmpl +20 -20
  347. package/templates/vertical_trading/tsconfig.json.tmpl +19 -19
  348. package/templates/vertical_trading/vitest.config.ts.tmpl +23 -23
@@ -1,30 +1,30 @@
1
- {
2
- "name": "{{name}}",
3
- "version": "0.1.0",
4
- "description": "{{description}}",
5
- "type": "module",
6
- "bin": {
7
- "{{name}}": "bin/cli.js"
8
- },
9
- "files": ["bin/**", "dist/**", "src/**", "tsconfig.json", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
10
- "scripts": {
11
- "build": "tsc",
12
- "test": "vitest run",
13
- "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor"
14
- },
15
- "dependencies": {
16
- "@metaharness/kernel": "^0.1.0",
17
- "@metaharness/host-{{host}}": "^0.1.0"
18
- },
19
- "devDependencies": {
20
- "@types/node": "^20.0.0",
21
- "typescript": "^5.4.0",
22
- "vitest": "^3.0.0"
23
- },
24
- "engines": {
25
- "node": ">=20.0.0"
26
- },
27
- "publishConfig": {
28
- "access": "public"
29
- }
30
- }
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": {
7
+ "{{name}}": "bin/cli.js"
8
+ },
9
+ "files": ["bin/**", "dist/**", "src/**", "tsconfig.json", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "vitest run",
13
+ "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor"
14
+ },
15
+ "dependencies": {
16
+ "@metaharness/kernel": "^0.1.0",
17
+ "@metaharness/host-{{host}}": "^0.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "typescript": "^5.4.0",
22
+ "vitest": "^3.0.0"
23
+ },
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ }
30
+ }
@@ -1,7 +1,7 @@
1
- // SPDX-License-Identifier: MIT
2
- // Care Coordinator agent — Organises logistics and reminders.
3
-
4
- export const SYSTEM_PROMPT = `You handle non-clinical coordination: summarising appointments, organising questions to ask a real clinician, and setting wellness reminders. You never give medical advice, dosages, or diagnoses. Your value is logistics and clarity, leaving every clinical judgement to a licensed human. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
-
6
- export const NAME = 'care-coordinator';
7
- export const TIER = 'sonnet' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ // Care Coordinator agent — Organises logistics and reminders.
3
+
4
+ export const SYSTEM_PROMPT = `You handle non-clinical coordination: summarising appointments, organising questions to ask a real clinician, and setting wellness reminders. You never give medical advice, dosages, or diagnoses. Your value is logistics and clarity, leaving every clinical judgement to a licensed human. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
+
6
+ export const NAME = 'care-coordinator';
7
+ export const TIER = 'sonnet' as const;
@@ -1,7 +1,7 @@
1
- // SPDX-License-Identifier: MIT
2
- // Intake agent — Collects structured intake, flags red flags.
3
-
4
- export const SYSTEM_PROMPT = `You collect a structured wellness intake: goals, history the user volunteers, and current routine. You watch for red-flag symptoms (chest pain, severe shortness of breath, suicidal ideation, etc.) and, the moment one appears, you stop and direct the person to emergency or professional care. You never diagnose. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
-
6
- export const NAME = 'intake';
7
- export const TIER = 'haiku' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ // Intake agent — Collects structured intake, flags red flags.
3
+
4
+ export const SYSTEM_PROMPT = `You collect a structured wellness intake: goals, history the user volunteers, and current routine. You watch for red-flag symptoms (chest pain, severe shortness of breath, suicidal ideation, etc.) and, the moment one appears, you stop and direct the person to emergency or professional care. You never diagnose. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
+
6
+ export const NAME = 'intake';
7
+ export const TIER = 'haiku' as const;
@@ -1,7 +1,7 @@
1
- // SPDX-License-Identifier: MIT
2
- // Triage agent — Routes to the right resource, not a diagnosis.
3
-
4
- export const SYSTEM_PROMPT = `You route, you do not diagnose. From the intake, point the person to the appropriate resource — a clinician, a registered dietitian, a mental-health professional, or general wellness information. When anything could be clinical, you default to "please consult a licensed professional." Safety over helpfulness, always. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
-
6
- export const NAME = 'triage';
7
- export const TIER = 'sonnet' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ // Triage agent — Routes to the right resource, not a diagnosis.
3
+
4
+ export const SYSTEM_PROMPT = `You route, you do not diagnose. From the intake, point the person to the appropriate resource — a clinician, a registered dietitian, a mental-health professional, or general wellness information. When anything could be clinical, you default to "please consult a licensed professional." Safety over helpfulness, always. You operate inside the {{name}} harness; defer destructive actions to the user.`;
5
+
6
+ export const NAME = 'triage';
7
+ export const TIER = 'sonnet' as const;
@@ -1,21 +1,21 @@
1
- // SPDX-License-Identifier: MIT
2
- // Generated by create-agent-harness — your harness's `{{name}} init` entry.
3
-
4
- import { loadKernel } from '@metaharness/kernel';
5
- import adapter from '@metaharness/host-{{host}}';
6
-
7
- const HARNESS_NAME = '{{name}}';
8
-
9
- async function main(): Promise<number> {
10
- const kernel = await loadKernel();
11
- const info = kernel.kernelInfo();
12
- console.log(`${HARNESS_NAME} — kernel ${info.version} (${kernel.backend})`);
13
- console.log(`Host adapter: ${adapter.name}`);
14
- console.log(`Run \`${HARNESS_NAME} doctor\` to verify the install.`);
15
- return 0;
16
- }
17
-
18
- main().then(c => process.exit(c)).catch(err => {
19
- console.error(err);
20
- process.exit(1);
21
- });
1
+ // SPDX-License-Identifier: MIT
2
+ // Generated by create-agent-harness — your harness's `{{name}} init` entry.
3
+
4
+ import { loadKernel } from '@metaharness/kernel';
5
+ import adapter from '@metaharness/host-{{host}}';
6
+
7
+ const HARNESS_NAME = '{{name}}';
8
+
9
+ async function main(): Promise<number> {
10
+ const kernel = await loadKernel();
11
+ const info = kernel.kernelInfo();
12
+ console.log(`${HARNESS_NAME} — kernel ${info.version} (${kernel.backend})`);
13
+ console.log(`Host adapter: ${adapter.name}`);
14
+ console.log(`Run \`${HARNESS_NAME} doctor\` to verify the install.`);
15
+ return 0;
16
+ }
17
+
18
+ main().then(c => process.exit(c)).catch(err => {
19
+ console.error(err);
20
+ process.exit(1);
21
+ });
@@ -1,19 +1,19 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "NodeNext",
5
- "moduleResolution": "NodeNext",
6
- "lib": ["ES2022"],
7
- "outDir": "./dist",
8
- "rootDir": "./src",
9
- "declaration": true,
10
- "declarationMap": true,
11
- "sourceMap": true,
12
- "strict": true,
13
- "esModuleInterop": true,
14
- "skipLibCheck": true,
15
- "forceConsistentCasingInFileNames": true
16
- },
17
- "include": ["src/**/*.ts"],
18
- "exclude": ["node_modules", "dist", "__tests__"]
19
- }
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "lib": ["ES2022"],
7
+ "outDir": "./dist",
8
+ "rootDir": "./src",
9
+ "declaration": true,
10
+ "declarationMap": true,
11
+ "sourceMap": true,
12
+ "strict": true,
13
+ "esModuleInterop": true,
14
+ "skipLibCheck": true,
15
+ "forceConsistentCasingInFileNames": true
16
+ },
17
+ "include": ["src/**/*.ts"],
18
+ "exclude": ["node_modules", "dist", "__tests__"]
19
+ }
@@ -1,23 +1,23 @@
1
- // SPDX-License-Identifier: MIT
2
- // Generated by metaharness. Strips the `#!/usr/bin/env node` shebang from
3
- // importable entrypoints (e.g. bin/cli.js) before Vite parses them — Vite/esbuild
4
- // (used internally by Vitest) does NOT strip shebangs, so importing a shebanged
5
- // module throws `SyntaxError: Invalid or unexpected token`. See issue #44.
6
- // Has no effect on direct CLI execution or `npm run doctor` (those bypass Vite).
7
- import { defineConfig } from 'vitest/config';
8
-
9
- export default defineConfig({
10
- plugins: [
11
- {
12
- name: 'strip-shebang',
13
- enforce: 'pre',
14
- transform(code: string) {
15
- if (code.startsWith('#!')) {
16
- // Replace with a blank line so source line numbers stay aligned.
17
- return { code: code.replace(/^#![^\n]*/, ''), map: null };
18
- }
19
- return null;
20
- },
21
- },
22
- ],
23
- });
1
+ // SPDX-License-Identifier: MIT
2
+ // Generated by metaharness. Strips the `#!/usr/bin/env node` shebang from
3
+ // importable entrypoints (e.g. bin/cli.js) before Vite parses them — Vite/esbuild
4
+ // (used internally by Vitest) does NOT strip shebangs, so importing a shebanged
5
+ // module throws `SyntaxError: Invalid or unexpected token`. See issue #44.
6
+ // Has no effect on direct CLI execution or `npm run doctor` (those bypass Vite).
7
+ import { defineConfig } from 'vitest/config';
8
+
9
+ export default defineConfig({
10
+ plugins: [
11
+ {
12
+ name: 'strip-shebang',
13
+ enforce: 'pre',
14
+ transform(code: string) {
15
+ if (code.startsWith('#!')) {
16
+ // Replace with a blank line so source line numbers stay aligned.
17
+ return { code: code.replace(/^#![^\n]*/, ''), map: null };
18
+ }
19
+ return null;
20
+ },
21
+ },
22
+ ],
23
+ });
@@ -1,10 +1,10 @@
1
- {
2
- "permissions": {
3
- "allow": ["Bash(npx {{name}}*)", "mcp__{{name}}__*", "mcp__citations__*"],
4
- "deny": ["Bash(rm *)", "Read(./.env)", "Read(./.env.*)", "WebFetch"]
5
- },
6
- "mcpServers": {
7
- "{{name}}": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "start"] },
8
- "citations": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "citations"] }
9
- }
10
- }
1
+ {
2
+ "permissions": {
3
+ "allow": ["Bash(npx {{name}}*)", "mcp__{{name}}__*", "mcp__citations__*"],
4
+ "deny": ["Bash(rm *)", "Read(./.env)", "Read(./.env.*)", "WebFetch"]
5
+ },
6
+ "mcpServers": {
7
+ "{{name}}": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "start"] },
8
+ "citations": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "citations"] }
9
+ }
10
+ }
@@ -1,23 +1,23 @@
1
- {
2
- "name": "{{name}}",
3
- "version": "0.1.0",
4
- "description": "{{description}}",
5
- "author": {
6
- "displayName": "Generated by metaharness",
7
- "url": "https://www.npmjs.com/package/metaharness"
8
- },
9
- "license": "MIT",
10
- "categories": [
11
- "agent-harness",
12
- "metaharness-scaffold",
13
- "vertical",
14
- "legal/contract-review"
15
- ],
16
- "tags": [
17
- "metaharness",
18
- "agent-harness",
19
- "vertical:legal",
20
- "legal/contract-review"
21
- ],
22
- "homepage": "https://github.com/ruvnet/agent-harness-generator"
23
- }
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "author": {
6
+ "displayName": "Generated by metaharness",
7
+ "url": "https://www.npmjs.com/package/metaharness"
8
+ },
9
+ "license": "MIT",
10
+ "categories": [
11
+ "agent-harness",
12
+ "metaharness-scaffold",
13
+ "vertical",
14
+ "legal/contract-review"
15
+ ],
16
+ "tags": [
17
+ "metaharness",
18
+ "agent-harness",
19
+ "vertical:legal",
20
+ "legal/contract-review"
21
+ ],
22
+ "homepage": "https://github.com/ruvnet/agent-harness-generator"
23
+ }
@@ -1,24 +1,24 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- ## Disclaimer — read first
6
-
7
- This is software, not a lawyer. Output is **advisory only**. Final review by qualified counsel is required before any contract is signed.
8
-
9
- ## Agents
10
-
11
- | Agent | Role | Tier |
12
- |---|---|---|
13
- | `redline` | Identifies clauses that deviate from standard templates, suggests rewrites | Sonnet |
14
- | `citation-checker` | Verifies every cited statute / case is real, current, and on-point | Sonnet |
15
- | `risk-rater` | Assigns HIGH/MEDIUM/LOW risk to each surviving deviation | Sonnet |
16
-
17
- ## Deliberation-first workflow
18
-
19
- 1. `redline` runs over the input document and emits a deviation list
20
- 2. For each deviation, `citation-checker` verifies every legal citation in the proposed rewrite
21
- 3. `risk-rater` reviews ONLY the verified deviations and assigns risk
22
- 4. Output: a memo with verified deviations, rewrites, and risk ratings
23
-
24
- No agent auto-applies changes. The deliverable is always a memo to a human reviewer.
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ ## Disclaimer — read first
6
+
7
+ This is software, not a lawyer. Output is **advisory only**. Final review by qualified counsel is required before any contract is signed.
8
+
9
+ ## Agents
10
+
11
+ | Agent | Role | Tier |
12
+ |---|---|---|
13
+ | `redline` | Identifies clauses that deviate from standard templates, suggests rewrites | Sonnet |
14
+ | `citation-checker` | Verifies every cited statute / case is real, current, and on-point | Sonnet |
15
+ | `risk-rater` | Assigns HIGH/MEDIUM/LOW risk to each surviving deviation | Sonnet |
16
+
17
+ ## Deliberation-first workflow
18
+
19
+ 1. `redline` runs over the input document and emits a deviation list
20
+ 2. For each deviation, `citation-checker` verifies every legal citation in the proposed rewrite
21
+ 3. `risk-rater` reviews ONLY the verified deviations and assigns risk
22
+ 4. Output: a memo with verified deviations, rewrites, and risk ratings
23
+
24
+ No agent auto-applies changes. The deliverable is always a memo to a human reviewer.
@@ -1,21 +1,21 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) — `vertical:legal` template.
6
-
7
- ## ⚠️ Not legal advice
8
-
9
- This software does not provide legal advice. It produces advisory memos that must be reviewed by qualified counsel.
10
-
11
- ## Install
12
-
13
- ```bash
14
- npm install -g {{name}}
15
- {{name}} init
16
- {{name}} review path/to/contract.docx
17
- ```
18
-
19
- ## License
20
-
21
- MIT
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) — `vertical:legal` template.
6
+
7
+ ## ⚠️ Not legal advice
8
+
9
+ This software does not provide legal advice. It produces advisory memos that must be reviewed by qualified counsel.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm install -g {{name}}
15
+ {{name}} init
16
+ {{name}} review path/to/contract.docx
17
+ ```
18
+
19
+ ## License
20
+
21
+ MIT
@@ -1,37 +1,37 @@
1
- // SPDX-License-Identifier: MIT
2
- // Generated by metaharness — a real smoke test for {{name}}.
3
- //
4
- // This is NOT a placeholder: it boots the actual kernel + host adapter the
5
- // harness depends on, so `npm test` fails loudly if @metaharness/kernel or
6
- // @metaharness/host-{{host}} is missing, broken, or version-skewed. It is the
7
- // fastest signal that `npm install` produced a runnable harness.
8
-
9
- import { describe, it, expect } from 'vitest';
10
- import { loadKernel } from '@metaharness/kernel';
11
- import adapter from '@metaharness/host-{{host}}';
12
- import { run } from '../bin/cli.js';
13
-
14
- describe('{{name}} — install smoke test', () => {
15
- it('loads the kernel and reports a version + a known backend', async () => {
16
- const kernel = await loadKernel();
17
- const info = kernel.kernelInfo();
18
- expect(typeof info.version).toBe('string');
19
- expect(info.version.length).toBeGreaterThan(0);
20
- expect(['native', 'wasm', 'js']).toContain(kernel.backend);
21
- });
22
-
23
- it('resolves the host adapter with a name', () => {
24
- expect(typeof adapter.name).toBe('string');
25
- expect(adapter.name.length).toBeGreaterThan(0);
26
- });
27
-
28
- it('the CLI doctor command succeeds (exit 0)', async () => {
29
- const code = await run(['doctor']);
30
- expect(code).toBe(0);
31
- });
32
-
33
- it('an unknown CLI command exits non-zero', async () => {
34
- const code = await run(['definitely-not-a-command']);
35
- expect(code).not.toBe(0);
36
- });
37
- });
1
+ // SPDX-License-Identifier: MIT
2
+ // Generated by metaharness — a real smoke test for {{name}}.
3
+ //
4
+ // This is NOT a placeholder: it boots the actual kernel + host adapter the
5
+ // harness depends on, so `npm test` fails loudly if @metaharness/kernel or
6
+ // @metaharness/host-{{host}} is missing, broken, or version-skewed. It is the
7
+ // fastest signal that `npm install` produced a runnable harness.
8
+
9
+ import { describe, it, expect } from 'vitest';
10
+ import { loadKernel } from '@metaharness/kernel';
11
+ import adapter from '@metaharness/host-{{host}}';
12
+ import { run } from '../bin/cli.js';
13
+
14
+ describe('{{name}} — install smoke test', () => {
15
+ it('loads the kernel and reports a version + a known backend', async () => {
16
+ const kernel = await loadKernel();
17
+ const info = kernel.kernelInfo();
18
+ expect(typeof info.version).toBe('string');
19
+ expect(info.version.length).toBeGreaterThan(0);
20
+ expect(['native', 'wasm', 'js']).toContain(kernel.backend);
21
+ });
22
+
23
+ it('resolves the host adapter with a name', () => {
24
+ expect(typeof adapter.name).toBe('string');
25
+ expect(adapter.name.length).toBeGreaterThan(0);
26
+ });
27
+
28
+ it('the CLI doctor command succeeds (exit 0)', async () => {
29
+ const code = await run(['doctor']);
30
+ expect(code).toBe(0);
31
+ });
32
+
33
+ it('an unknown CLI command exits non-zero', async () => {
34
+ const code = await run(['definitely-not-a-command']);
35
+ expect(code).not.toBe(0);
36
+ });
37
+ });