metaharness 0.4.0 → 0.4.2

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 (346) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +96 -96
  3. package/dist/completions-cmd.js +94 -94
  4. package/dist/index.js +74 -74
  5. package/dist/meta-proxy.d.ts +1 -1
  6. package/dist/meta-proxy.js +1 -1
  7. package/dist/with-wasm.js +43 -43
  8. package/genomes/README.md +23 -23
  9. package/genomes/genome-promoted-cand6-edit-by-midpoint.json +26 -26
  10. package/package.json +126 -126
  11. package/templates/catalog.def.mjs +542 -542
  12. package/templates/catalog.json +1274 -1274
  13. package/templates/minimal/.claude/settings.json.tmpl +18 -18
  14. package/templates/minimal/.claude-plugin/plugin.json.tmpl +13 -13
  15. package/templates/minimal/CLAUDE.md.tmpl +26 -26
  16. package/templates/minimal/README.md.tmpl +20 -20
  17. package/templates/minimal/__tests__/smoke.test.ts.tmpl +37 -37
  18. package/templates/minimal/bin/cli.js.tmpl +100 -100
  19. package/templates/minimal/manifest.json +20 -20
  20. package/templates/minimal/package.json.tmpl +31 -31
  21. package/templates/minimal/src/init.ts.tmpl +21 -21
  22. package/templates/minimal/tsconfig.json.tmpl +19 -19
  23. package/templates/minimal/vitest.config.ts.tmpl +23 -23
  24. package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -12
  25. package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -33
  26. package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -13
  27. package/templates/vertical_advertising/.claude-plugin/plugin.json.tmpl +23 -23
  28. package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -30
  29. package/templates/vertical_advertising/README.md.tmpl +29 -29
  30. package/templates/vertical_advertising/__tests__/smoke.test.ts.tmpl +37 -37
  31. package/templates/vertical_advertising/bin/cli.js.tmpl +100 -100
  32. package/templates/vertical_advertising/manifest.json +101 -101
  33. package/templates/vertical_advertising/package.json.tmpl +30 -30
  34. package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -7
  35. package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -7
  36. package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -7
  37. package/templates/vertical_advertising/src/init.ts.tmpl +21 -21
  38. package/templates/vertical_advertising/tsconfig.json.tmpl +19 -19
  39. package/templates/vertical_advertising/vitest.config.ts.tmpl +23 -23
  40. package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -12
  41. package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -33
  42. package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  43. package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -14
  44. package/templates/vertical_agentics/.claude-plugin/plugin.json.tmpl +23 -23
  45. package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -32
  46. package/templates/vertical_agentics/README.md.tmpl +30 -30
  47. package/templates/vertical_agentics/__tests__/smoke.test.ts.tmpl +37 -37
  48. package/templates/vertical_agentics/bin/cli.js.tmpl +100 -100
  49. package/templates/vertical_agentics/manifest.json +111 -111
  50. package/templates/vertical_agentics/package.json.tmpl +30 -30
  51. package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -7
  52. package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -7
  53. package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -7
  54. package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -7
  55. package/templates/vertical_agentics/src/init.ts.tmpl +21 -21
  56. package/templates/vertical_agentics/tsconfig.json.tmpl +19 -19
  57. package/templates/vertical_agentics/vitest.config.ts.tmpl +23 -23
  58. package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -12
  59. package/templates/vertical_ai/.claude/settings.json.tmpl +35 -35
  60. package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -13
  61. package/templates/vertical_ai/.claude-plugin/plugin.json.tmpl +23 -23
  62. package/templates/vertical_ai/CLAUDE.md.tmpl +31 -31
  63. package/templates/vertical_ai/README.md.tmpl +30 -30
  64. package/templates/vertical_ai/__tests__/smoke.test.ts.tmpl +37 -37
  65. package/templates/vertical_ai/bin/cli.js.tmpl +100 -100
  66. package/templates/vertical_ai/manifest.json +106 -106
  67. package/templates/vertical_ai/package.json.tmpl +30 -30
  68. package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -7
  69. package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -7
  70. package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -7
  71. package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -7
  72. package/templates/vertical_ai/src/init.ts.tmpl +21 -21
  73. package/templates/vertical_ai/tsconfig.json.tmpl +19 -19
  74. package/templates/vertical_ai/vitest.config.ts.tmpl +23 -23
  75. package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -12
  76. package/templates/vertical_business/.claude/settings.json.tmpl +33 -33
  77. package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -13
  78. package/templates/vertical_business/.claude-plugin/plugin.json.tmpl +23 -23
  79. package/templates/vertical_business/CLAUDE.md.tmpl +30 -30
  80. package/templates/vertical_business/README.md.tmpl +29 -29
  81. package/templates/vertical_business/__tests__/smoke.test.ts.tmpl +37 -37
  82. package/templates/vertical_business/bin/cli.js.tmpl +100 -100
  83. package/templates/vertical_business/manifest.json +101 -101
  84. package/templates/vertical_business/package.json.tmpl +30 -30
  85. package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -7
  86. package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -7
  87. package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -7
  88. package/templates/vertical_business/src/init.ts.tmpl +21 -21
  89. package/templates/vertical_business/tsconfig.json.tmpl +19 -19
  90. package/templates/vertical_business/vitest.config.ts.tmpl +23 -23
  91. package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -12
  92. package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -10
  93. package/templates/vertical_coding/.claude/settings.json.tmpl +40 -40
  94. package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  95. package/templates/vertical_coding/.claude-plugin/plugin.json.tmpl +23 -23
  96. package/templates/vertical_coding/CLAUDE.md.tmpl +32 -32
  97. package/templates/vertical_coding/README.md.tmpl +30 -30
  98. package/templates/vertical_coding/__tests__/smoke.test.ts.tmpl +37 -37
  99. package/templates/vertical_coding/bin/cli.js.tmpl +100 -100
  100. package/templates/vertical_coding/manifest.json +111 -111
  101. package/templates/vertical_coding/package.json.tmpl +30 -30
  102. package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -7
  103. package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -7
  104. package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -7
  105. package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -7
  106. package/templates/vertical_coding/src/init.ts.tmpl +21 -21
  107. package/templates/vertical_coding/tsconfig.json.tmpl +19 -19
  108. package/templates/vertical_coding/vitest.config.ts.tmpl +23 -23
  109. package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -12
  110. package/templates/vertical_crm/.claude/settings.json.tmpl +33 -33
  111. package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  112. package/templates/vertical_crm/.claude-plugin/plugin.json.tmpl +23 -23
  113. package/templates/vertical_crm/CLAUDE.md.tmpl +30 -30
  114. package/templates/vertical_crm/README.md.tmpl +29 -29
  115. package/templates/vertical_crm/__tests__/smoke.test.ts.tmpl +37 -37
  116. package/templates/vertical_crm/bin/cli.js.tmpl +100 -100
  117. package/templates/vertical_crm/manifest.json +101 -101
  118. package/templates/vertical_crm/package.json.tmpl +30 -30
  119. package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -7
  120. package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -7
  121. package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -7
  122. package/templates/vertical_crm/src/init.ts.tmpl +21 -21
  123. package/templates/vertical_crm/tsconfig.json.tmpl +19 -19
  124. package/templates/vertical_crm/vitest.config.ts.tmpl +23 -23
  125. package/templates/vertical_devops/.claude/settings.json.tmpl +36 -36
  126. package/templates/vertical_devops/.claude-plugin/plugin.json.tmpl +23 -23
  127. package/templates/vertical_devops/CLAUDE.md.tmpl +34 -34
  128. package/templates/vertical_devops/README.md.tmpl +27 -27
  129. package/templates/vertical_devops/__tests__/smoke.test.ts.tmpl +37 -37
  130. package/templates/vertical_devops/bin/cli.js.tmpl +100 -100
  131. package/templates/vertical_devops/manifest.json +100 -100
  132. package/templates/vertical_devops/package.json.tmpl +27 -27
  133. package/templates/vertical_devops/runbooks/README.md.tmpl +32 -32
  134. package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -19
  135. package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -23
  136. package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -14
  137. package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -17
  138. package/templates/vertical_devops/src/init.ts.tmpl +23 -23
  139. package/templates/vertical_devops/tsconfig.json.tmpl +19 -19
  140. package/templates/vertical_devops/vitest.config.ts.tmpl +23 -23
  141. package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -12
  142. package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -12
  143. package/templates/vertical_education/.claude/settings.json.tmpl +45 -45
  144. package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  145. package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -16
  146. package/templates/vertical_education/.claude-plugin/plugin.json.tmpl +23 -23
  147. package/templates/vertical_education/CLAUDE.md.tmpl +33 -33
  148. package/templates/vertical_education/README.md.tmpl +30 -30
  149. package/templates/vertical_education/__tests__/smoke.test.ts.tmpl +37 -37
  150. package/templates/vertical_education/bin/cli.js.tmpl +100 -100
  151. package/templates/vertical_education/manifest.json +116 -116
  152. package/templates/vertical_education/package.json.tmpl +30 -30
  153. package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -7
  154. package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -7
  155. package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -7
  156. package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -7
  157. package/templates/vertical_education/src/init.ts.tmpl +21 -21
  158. package/templates/vertical_education/tsconfig.json.tmpl +19 -19
  159. package/templates/vertical_education/vitest.config.ts.tmpl +23 -23
  160. package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -12
  161. package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -44
  162. package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -14
  163. package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  164. package/templates/vertical_exotic/.claude-plugin/plugin.json.tmpl +23 -23
  165. package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -31
  166. package/templates/vertical_exotic/README.md.tmpl +29 -29
  167. package/templates/vertical_exotic/__tests__/smoke.test.ts.tmpl +37 -37
  168. package/templates/vertical_exotic/bin/cli.js.tmpl +100 -100
  169. package/templates/vertical_exotic/manifest.json +106 -106
  170. package/templates/vertical_exotic/package.json.tmpl +30 -30
  171. package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -7
  172. package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -7
  173. package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -7
  174. package/templates/vertical_exotic/src/init.ts.tmpl +21 -21
  175. package/templates/vertical_exotic/tsconfig.json.tmpl +19 -19
  176. package/templates/vertical_exotic/vitest.config.ts.tmpl +23 -23
  177. package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -13
  178. package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -12
  179. package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -45
  180. package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  181. package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -16
  182. package/templates/vertical_gaming/.claude-plugin/plugin.json.tmpl +23 -23
  183. package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -33
  184. package/templates/vertical_gaming/README.md.tmpl +30 -30
  185. package/templates/vertical_gaming/__tests__/smoke.test.ts.tmpl +37 -37
  186. package/templates/vertical_gaming/bin/cli.js.tmpl +100 -100
  187. package/templates/vertical_gaming/manifest.json +116 -116
  188. package/templates/vertical_gaming/package.json.tmpl +30 -30
  189. package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -7
  190. package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -7
  191. package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -7
  192. package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -7
  193. package/templates/vertical_gaming/src/init.ts.tmpl +21 -21
  194. package/templates/vertical_gaming/tsconfig.json.tmpl +19 -19
  195. package/templates/vertical_gaming/vitest.config.ts.tmpl +23 -23
  196. package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -12
  197. package/templates/vertical_health/.claude/settings.json.tmpl +33 -33
  198. package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -15
  199. package/templates/vertical_health/.claude-plugin/plugin.json.tmpl +23 -23
  200. package/templates/vertical_health/CLAUDE.md.tmpl +30 -30
  201. package/templates/vertical_health/README.md.tmpl +29 -29
  202. package/templates/vertical_health/__tests__/smoke.test.ts.tmpl +37 -37
  203. package/templates/vertical_health/bin/cli.js.tmpl +100 -100
  204. package/templates/vertical_health/manifest.json +101 -101
  205. package/templates/vertical_health/package.json.tmpl +30 -30
  206. package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -7
  207. package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -7
  208. package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -7
  209. package/templates/vertical_health/src/init.ts.tmpl +21 -21
  210. package/templates/vertical_health/tsconfig.json.tmpl +19 -19
  211. package/templates/vertical_health/vitest.config.ts.tmpl +23 -23
  212. package/templates/vertical_legal/.claude/settings.json.tmpl +10 -10
  213. package/templates/vertical_legal/.claude-plugin/plugin.json.tmpl +23 -23
  214. package/templates/vertical_legal/CLAUDE.md.tmpl +24 -24
  215. package/templates/vertical_legal/README.md.tmpl +21 -21
  216. package/templates/vertical_legal/__tests__/smoke.test.ts.tmpl +37 -37
  217. package/templates/vertical_legal/bin/cli.js.tmpl +100 -100
  218. package/templates/vertical_legal/manifest.json +90 -90
  219. package/templates/vertical_legal/package.json.tmpl +14 -14
  220. package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -7
  221. package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -7
  222. package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -8
  223. package/templates/vertical_legal/src/init.ts.tmpl +13 -13
  224. package/templates/vertical_legal/tsconfig.json.tmpl +19 -19
  225. package/templates/vertical_legal/vitest.config.ts.tmpl +23 -23
  226. package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -12
  227. package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -33
  228. package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -13
  229. package/templates/vertical_marketing/.claude-plugin/plugin.json.tmpl +23 -23
  230. package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -30
  231. package/templates/vertical_marketing/README.md.tmpl +29 -29
  232. package/templates/vertical_marketing/__tests__/smoke.test.ts.tmpl +37 -37
  233. package/templates/vertical_marketing/bin/cli.js.tmpl +100 -100
  234. package/templates/vertical_marketing/manifest.json +101 -101
  235. package/templates/vertical_marketing/package.json.tmpl +30 -30
  236. package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -7
  237. package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -7
  238. package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -7
  239. package/templates/vertical_marketing/src/init.ts.tmpl +21 -21
  240. package/templates/vertical_marketing/tsconfig.json.tmpl +19 -19
  241. package/templates/vertical_marketing/vitest.config.ts.tmpl +23 -23
  242. package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -12
  243. package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -13
  244. package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -16
  245. package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -44
  246. package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  247. package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  248. package/templates/vertical_repo-maintainer/.claude-plugin/plugin.json.tmpl +23 -23
  249. package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -34
  250. package/templates/vertical_repo-maintainer/README.md.tmpl +30 -30
  251. package/templates/vertical_repo-maintainer/__tests__/smoke.test.ts.tmpl +37 -37
  252. package/templates/vertical_repo-maintainer/bin/cli.js.tmpl +100 -100
  253. package/templates/vertical_repo-maintainer/manifest.json +121 -121
  254. package/templates/vertical_repo-maintainer/package.json.tmpl +30 -30
  255. package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -7
  256. package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -7
  257. package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -7
  258. package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -7
  259. package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -21
  260. package/templates/vertical_repo-maintainer/tsconfig.json.tmpl +19 -19
  261. package/templates/vertical_repo-maintainer/vitest.config.ts.tmpl +23 -23
  262. package/templates/vertical_research/.claude/settings.json.tmpl +9 -9
  263. package/templates/vertical_research/.claude-plugin/plugin.json.tmpl +23 -23
  264. package/templates/vertical_research/CLAUDE.md.tmpl +33 -33
  265. package/templates/vertical_research/README.md.tmpl +17 -17
  266. package/templates/vertical_research/__tests__/smoke.test.ts.tmpl +37 -37
  267. package/templates/vertical_research/bin/cli.js.tmpl +100 -100
  268. package/templates/vertical_research/manifest.json +105 -105
  269. package/templates/vertical_research/package.json.tmpl +14 -14
  270. package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -8
  271. package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -8
  272. package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -7
  273. package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -10
  274. package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -8
  275. package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -6
  276. package/templates/vertical_research/src/init.ts.tmpl +13 -13
  277. package/templates/vertical_research/tsconfig.json.tmpl +19 -19
  278. package/templates/vertical_research/vitest.config.ts.tmpl +23 -23
  279. package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -12
  280. package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -33
  281. package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -15
  282. package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  283. package/templates/vertical_ruview/.claude-plugin/plugin.json.tmpl +23 -23
  284. package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -31
  285. package/templates/vertical_ruview/README.md.tmpl +29 -29
  286. package/templates/vertical_ruview/__tests__/smoke.test.ts.tmpl +37 -37
  287. package/templates/vertical_ruview/bin/cli.js.tmpl +100 -100
  288. package/templates/vertical_ruview/manifest.json +106 -106
  289. package/templates/vertical_ruview/package.json.tmpl +30 -30
  290. package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -7
  291. package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -7
  292. package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -7
  293. package/templates/vertical_ruview/src/init.ts.tmpl +21 -21
  294. package/templates/vertical_ruview/tsconfig.json.tmpl +19 -19
  295. package/templates/vertical_ruview/vitest.config.ts.tmpl +23 -23
  296. package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -12
  297. package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -13
  298. package/templates/vertical_sales/.claude/settings.json.tmpl +45 -45
  299. package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  300. package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -15
  301. package/templates/vertical_sales/.claude-plugin/plugin.json.tmpl +23 -23
  302. package/templates/vertical_sales/CLAUDE.md.tmpl +33 -33
  303. package/templates/vertical_sales/README.md.tmpl +30 -30
  304. package/templates/vertical_sales/__tests__/smoke.test.ts.tmpl +37 -37
  305. package/templates/vertical_sales/bin/cli.js.tmpl +100 -100
  306. package/templates/vertical_sales/manifest.json +116 -116
  307. package/templates/vertical_sales/package.json.tmpl +30 -30
  308. package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -7
  309. package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -7
  310. package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -7
  311. package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -7
  312. package/templates/vertical_sales/src/init.ts.tmpl +21 -21
  313. package/templates/vertical_sales/tsconfig.json.tmpl +19 -19
  314. package/templates/vertical_sales/vitest.config.ts.tmpl +23 -23
  315. package/templates/vertical_support/.claude/settings.json.tmpl +25 -25
  316. package/templates/vertical_support/.claude-plugin/plugin.json.tmpl +23 -23
  317. package/templates/vertical_support/CLAUDE.md.tmpl +34 -34
  318. package/templates/vertical_support/README.md.tmpl +16 -16
  319. package/templates/vertical_support/__tests__/smoke.test.ts.tmpl +37 -37
  320. package/templates/vertical_support/bin/cli.js.tmpl +100 -100
  321. package/templates/vertical_support/kb/README.md.tmpl +23 -23
  322. package/templates/vertical_support/manifest.json +100 -100
  323. package/templates/vertical_support/package.json.tmpl +25 -25
  324. package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -6
  325. package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -6
  326. package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -7
  327. package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -6
  328. package/templates/vertical_support/src/init.ts.tmpl +16 -16
  329. package/templates/vertical_support/tsconfig.json.tmpl +19 -19
  330. package/templates/vertical_support/vitest.config.ts.tmpl +23 -23
  331. package/templates/vertical_trading/.claude/settings.json.tmpl +20 -20
  332. package/templates/vertical_trading/.claude-plugin/plugin.json.tmpl +23 -23
  333. package/templates/vertical_trading/CLAUDE.md.tmpl +24 -24
  334. package/templates/vertical_trading/README.md.tmpl +17 -17
  335. package/templates/vertical_trading/__tests__/smoke.test.ts.tmpl +37 -37
  336. package/templates/vertical_trading/bin/cli.js.tmpl +100 -100
  337. package/templates/vertical_trading/manifest.json +100 -100
  338. package/templates/vertical_trading/package.json.tmpl +14 -14
  339. package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -8
  340. package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -7
  341. package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -8
  342. package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -11
  343. package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -8
  344. package/templates/vertical_trading/src/init.ts.tmpl +20 -20
  345. package/templates/vertical_trading/tsconfig.json.tmpl +19 -19
  346. package/templates/vertical_trading/vitest.config.ts.tmpl +23 -23
@@ -1,25 +1,25 @@
1
- {
2
- "name": "{{name}}",
3
- "version": "0.1.0",
4
- "description": "{{description}}",
5
- "type": "module",
6
- "bin": { "{{name}}": "bin/cli.js" },
7
- "files": ["bin/**", "dist/**", "src/**", "tsconfig.json", "kb/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
8
- "scripts": {
9
- "build": "tsc",
10
- "test": "vitest run",
11
- "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor"
12
- },
13
- "dependencies": {
14
- "@metaharness/kernel": "^0.1.0",
15
- "@metaharness/host-{{host}}": "^0.1.0"
16
- },
17
- "devDependencies": {
18
- "@types/node": "^20.0.0",
19
- "typescript": "^5.4.0",
20
- "vitest": "^3.0.0"
21
- },
22
- "keywords": ["customer-support", "kb-rag", "ticket-triage", "agent-harness"],
23
- "publishConfig": { "access": "public" },
24
- "engines": { "node": ">=20.0.0" }
25
- }
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": { "{{name}}": "bin/cli.js" },
7
+ "files": ["bin/**", "dist/**", "src/**", "tsconfig.json", "kb/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "test": "vitest run",
11
+ "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor"
12
+ },
13
+ "dependencies": {
14
+ "@metaharness/kernel": "^0.1.0",
15
+ "@metaharness/host-{{host}}": "^0.1.0"
16
+ },
17
+ "devDependencies": {
18
+ "@types/node": "^20.0.0",
19
+ "typescript": "^5.4.0",
20
+ "vitest": "^3.0.0"
21
+ },
22
+ "keywords": ["customer-support", "kb-rag", "ticket-triage", "agent-harness"],
23
+ "publishConfig": { "access": "public" },
24
+ "engines": { "node": ">=20.0.0" }
25
+ }
@@ -1,6 +1,6 @@
1
- // SPDX-License-Identifier: MIT
2
- export const SYSTEM_PROMPT = `You are the escalator for {{name}}.
3
- Triggered when severity >= HIGH or when the responder can't compose a reply with KB confidence > 0.6.
4
- Draft a handoff note: what the customer needs, what we know, what's unresolved, who should pick it up.`;
5
- export const NAME = 'escalator';
6
- export const TIER = 'sonnet' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the escalator for {{name}}.
3
+ Triggered when severity >= HIGH or when the responder can't compose a reply with KB confidence > 0.6.
4
+ Draft a handoff note: what the customer needs, what we know, what's unresolved, who should pick it up.`;
5
+ export const NAME = 'escalator';
6
+ export const TIER = 'sonnet' as const;
@@ -1,6 +1,6 @@
1
- // SPDX-License-Identifier: MIT
2
- export const SYSTEM_PROMPT = `You are the KB retriever for {{name}}.
3
- Take the triaged ticket and return the top 3 KB articles via semantic search.
4
- Use the kernel memory bridge — never invent article ids. If no good match, return an empty array.`;
5
- export const NAME = 'kb-searcher';
6
- export const TIER = 'codemod' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the KB retriever for {{name}}.
3
+ Take the triaged ticket and return the top 3 KB articles via semantic search.
4
+ Use the kernel memory bridge — never invent article ids. If no good match, return an empty array.`;
5
+ export const NAME = 'kb-searcher';
6
+ export const TIER = 'codemod' as const;
@@ -1,7 +1,7 @@
1
- // SPDX-License-Identifier: MIT
2
- export const SYSTEM_PROMPT = `You are the customer responder for {{name}}.
3
- Draft a customer-facing reply that cites the KB articles the searcher found.
4
- Match the customer's tone. Always end with "Let me know if this helps."
5
- NEVER promise refunds or credits — that's the billing team's call.`;
6
- export const NAME = 'responder';
7
- export const TIER = 'sonnet' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the customer responder for {{name}}.
3
+ Draft a customer-facing reply that cites the KB articles the searcher found.
4
+ Match the customer's tone. Always end with "Let me know if this helps."
5
+ NEVER promise refunds or credits — that's the billing team's call.`;
6
+ export const NAME = 'responder';
7
+ export const TIER = 'sonnet' as const;
@@ -1,6 +1,6 @@
1
- // SPDX-License-Identifier: MIT
2
- export const SYSTEM_PROMPT = `You are the support triager for {{name}}.
3
- Classify each ticket: category (billing|technical|general|urgent), severity (low|medium|high|urgent).
4
- Output JSON: {category, severity, summary}. Be terse. Never apologise.`;
5
- export const NAME = 'triager';
6
- export const TIER = 'haiku' as const;
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the support triager for {{name}}.
3
+ Classify each ticket: category (billing|technical|general|urgent), severity (low|medium|high|urgent).
4
+ Output JSON: {category, severity, summary}. Be terse. Never apologise.`;
5
+ export const NAME = 'triager';
6
+ export const TIER = 'haiku' as const;
@@ -1,16 +1,16 @@
1
- // SPDX-License-Identifier: MIT
2
- import { loadKernel } from '@metaharness/kernel';
3
- import adapter from '@metaharness/host-{{host}}';
4
-
5
- const HARNESS_NAME = '{{name}}';
6
-
7
- async function main(): Promise<number> {
8
- const kernel = await loadKernel();
9
- const info = kernel.kernelInfo();
10
- console.log(`${HARNESS_NAME} — customer support harness`);
11
- console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
12
- console.log('Drop KB articles in kb/ and they will be indexed automatically.');
13
- return 0;
14
- }
15
-
16
- main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });
1
+ // SPDX-License-Identifier: MIT
2
+ import { loadKernel } from '@metaharness/kernel';
3
+ import adapter from '@metaharness/host-{{host}}';
4
+
5
+ const HARNESS_NAME = '{{name}}';
6
+
7
+ async function main(): Promise<number> {
8
+ const kernel = await loadKernel();
9
+ const info = kernel.kernelInfo();
10
+ console.log(`${HARNESS_NAME} — customer support harness`);
11
+ console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
12
+ console.log('Drop KB articles in kb/ and they will be indexed automatically.');
13
+ return 0;
14
+ }
15
+
16
+ main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });
@@ -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,20 +1,20 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(npx {{name}}*)",
5
- "mcp__{{name}}__*",
6
- "mcp__market_data__read*"
7
- ],
8
- "deny": [
9
- "Bash(rm *)",
10
- "mcp__broker__live_order*",
11
- "Read(./.env)",
12
- "Read(./.env.*)",
13
- "Read(./.creds*)"
14
- ]
15
- },
16
- "mcpServers": {
17
- "{{name}}": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "start"] },
18
- "market_data": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "market-data"] }
19
- }
20
- }
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npx {{name}}*)",
5
+ "mcp__{{name}}__*",
6
+ "mcp__market_data__read*"
7
+ ],
8
+ "deny": [
9
+ "Bash(rm *)",
10
+ "mcp__broker__live_order*",
11
+ "Read(./.env)",
12
+ "Read(./.env.*)",
13
+ "Read(./.creds*)"
14
+ ]
15
+ },
16
+ "mcpServers": {
17
+ "{{name}}": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "start"] },
18
+ "market_data": { "command": "npx", "args": ["-y", "{{name}}@latest", "mcp", "market-data"] }
19
+ }
20
+ }
@@ -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
- "trading/quantitative"
15
- ],
16
- "tags": [
17
- "metaharness",
18
- "agent-harness",
19
- "vertical:trading",
20
- "trading/quantitative"
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
+ "trading/quantitative"
15
+ ],
16
+ "tags": [
17
+ "metaharness",
18
+ "agent-harness",
19
+ "vertical:trading",
20
+ "trading/quantitative"
21
+ ],
22
+ "homepage": "https://github.com/ruvnet/agent-harness-generator"
23
+ }
@@ -1,24 +1,24 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- ## Safety defaults
6
-
7
- - **Paper mode is the default.** Live trading requires explicit `--live` AND a non-empty `RUFLO_TRADE_CONFIRM` env var.
8
- - **Circuit breakers**: trade halts when daily P&L drops below `-2%` of equity OR when more than 5 consecutive losses occur OR when latency > 500ms.
9
- - **Position sizing** uses fractional-Kelly with a 0.25 multiplier — never bet full Kelly.
10
-
11
- ## Agents
12
-
13
- | Agent | Role | Tier |
14
- |---|---|---|
15
- | `market-watcher` | Polls market data, detects regime shifts | Haiku |
16
- | `signal-gen` | Generates entry/exit signals from indicators | Sonnet |
17
- | `risk-checker` | Vets every signal against position-sizing rules + circuit-breaker state | Codemod (deterministic) |
18
- | `executor` | Submits orders (or simulates in paper mode) | Codemod (deterministic) |
19
- | `postmortem` | Daily P&L review + lessons learned | Sonnet |
20
-
21
- ## Routing rules
22
-
23
- - `signal-gen` MUST always go through `risk-checker` before `executor`
24
- - Circuit-breaker state is checked on EVERY tick — not periodically
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ ## Safety defaults
6
+
7
+ - **Paper mode is the default.** Live trading requires explicit `--live` AND a non-empty `RUFLO_TRADE_CONFIRM` env var.
8
+ - **Circuit breakers**: trade halts when daily P&L drops below `-2%` of equity OR when more than 5 consecutive losses occur OR when latency > 500ms.
9
+ - **Position sizing** uses fractional-Kelly with a 0.25 multiplier — never bet full Kelly.
10
+
11
+ ## Agents
12
+
13
+ | Agent | Role | Tier |
14
+ |---|---|---|
15
+ | `market-watcher` | Polls market data, detects regime shifts | Haiku |
16
+ | `signal-gen` | Generates entry/exit signals from indicators | Sonnet |
17
+ | `risk-checker` | Vets every signal against position-sizing rules + circuit-breaker state | Codemod (deterministic) |
18
+ | `executor` | Submits orders (or simulates in paper mode) | Codemod (deterministic) |
19
+ | `postmortem` | Daily P&L review + lessons learned | Sonnet |
20
+
21
+ ## Routing rules
22
+
23
+ - `signal-gen` MUST always go through `risk-checker` before `executor`
24
+ - Circuit-breaker state is checked on EVERY tick — not periodically
@@ -1,17 +1,17 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) — `vertical:trading` template. **Paper mode by default.** Run `{{name}} backtest` to evaluate before going live.
6
-
7
- ## Install
8
-
9
- ```bash
10
- npm install -g {{name}}
11
- {{name}} init
12
- {{name}} backtest --strategy default --period 2025-01-01:2025-12-31
13
- ```
14
-
15
- ## License
16
-
17
- MIT — but **trading carries risk**. Past backtest performance does not predict future results. You're responsible for any losses.
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) — `vertical:trading` template. **Paper mode by default.** Run `{{name}} backtest` to evaluate before going live.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g {{name}}
11
+ {{name}} init
12
+ {{name}} backtest --strategy default --period 2025-01-01:2025-12-31
13
+ ```
14
+
15
+ ## License
16
+
17
+ MIT — but **trading carries risk**. Past backtest performance does not predict future results. You're responsible for any losses.
@@ -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
+ });