metaharness 0.1.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 (383) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/analyze-repo.d.ts +74 -0
  4. package/dist/analyze-repo.d.ts.map +1 -0
  5. package/dist/analyze-repo.js +329 -0
  6. package/dist/analyze-repo.js.map +1 -0
  7. package/dist/audit-cmd.d.ts +6 -0
  8. package/dist/audit-cmd.d.ts.map +1 -0
  9. package/dist/audit-cmd.js +139 -0
  10. package/dist/audit-cmd.js.map +1 -0
  11. package/dist/bin.d.ts +3 -0
  12. package/dist/bin.d.ts.map +1 -0
  13. package/dist/bin.js +8 -0
  14. package/dist/bin.js.map +1 -0
  15. package/dist/compare-cmd.d.ts +56 -0
  16. package/dist/compare-cmd.d.ts.map +1 -0
  17. package/dist/compare-cmd.js +173 -0
  18. package/dist/compare-cmd.js.map +1 -0
  19. package/dist/completions-cmd.d.ts +6 -0
  20. package/dist/completions-cmd.d.ts.map +1 -0
  21. package/dist/completions-cmd.js +171 -0
  22. package/dist/completions-cmd.js.map +1 -0
  23. package/dist/diag.d.ts +76 -0
  24. package/dist/diag.d.ts.map +1 -0
  25. package/dist/diag.js +349 -0
  26. package/dist/diag.js.map +1 -0
  27. package/dist/eject.d.ts +33 -0
  28. package/dist/eject.d.ts.map +1 -0
  29. package/dist/eject.js +147 -0
  30. package/dist/eject.js.map +1 -0
  31. package/dist/export-config.d.ts +25 -0
  32. package/dist/export-config.d.ts.map +1 -0
  33. package/dist/export-config.js +134 -0
  34. package/dist/export-config.js.map +1 -0
  35. package/dist/external-template.d.ts +19 -0
  36. package/dist/external-template.d.ts.map +1 -0
  37. package/dist/external-template.js +37 -0
  38. package/dist/external-template.js.map +1 -0
  39. package/dist/federate.d.ts +37 -0
  40. package/dist/federate.d.ts.map +1 -0
  41. package/dist/federate.js +167 -0
  42. package/dist/federate.js.map +1 -0
  43. package/dist/genome-scorers.d.ts +33 -0
  44. package/dist/genome-scorers.d.ts.map +1 -0
  45. package/dist/genome-scorers.js +115 -0
  46. package/dist/genome-scorers.js.map +1 -0
  47. package/dist/genome.d.ts +28 -0
  48. package/dist/genome.d.ts.map +1 -0
  49. package/dist/genome.js +219 -0
  50. package/dist/genome.js.map +1 -0
  51. package/dist/harness-bin.d.ts +3 -0
  52. package/dist/harness-bin.d.ts.map +1 -0
  53. package/dist/harness-bin.js +17 -0
  54. package/dist/harness-bin.js.map +1 -0
  55. package/dist/index.d.ts +79 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +409 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/manifest.d.ts +55 -0
  60. package/dist/manifest.d.ts.map +1 -0
  61. package/dist/manifest.js +62 -0
  62. package/dist/manifest.js.map +1 -0
  63. package/dist/mcp-cmd.d.ts +19 -0
  64. package/dist/mcp-cmd.d.ts.map +1 -0
  65. package/dist/mcp-cmd.js +179 -0
  66. package/dist/mcp-cmd.js.map +1 -0
  67. package/dist/mcp-scan.d.ts +25 -0
  68. package/dist/mcp-scan.d.ts.map +1 -0
  69. package/dist/mcp-scan.js +132 -0
  70. package/dist/mcp-scan.js.map +1 -0
  71. package/dist/oia-manifest.d.ts +97 -0
  72. package/dist/oia-manifest.d.ts.map +1 -0
  73. package/dist/oia-manifest.js +241 -0
  74. package/dist/oia-manifest.js.map +1 -0
  75. package/dist/publish-cmd.d.ts +9 -0
  76. package/dist/publish-cmd.d.ts.map +1 -0
  77. package/dist/publish-cmd.js +56 -0
  78. package/dist/publish-cmd.js.map +1 -0
  79. package/dist/publish.d.ts +55 -0
  80. package/dist/publish.d.ts.map +1 -0
  81. package/dist/publish.js +104 -0
  82. package/dist/publish.js.map +1 -0
  83. package/dist/registry.d.ts +60 -0
  84. package/dist/registry.d.ts.map +1 -0
  85. package/dist/registry.js +67 -0
  86. package/dist/registry.js.map +1 -0
  87. package/dist/rename.d.ts +26 -0
  88. package/dist/rename.d.ts.map +1 -0
  89. package/dist/rename.js +86 -0
  90. package/dist/rename.js.map +1 -0
  91. package/dist/renderer.d.ts +39 -0
  92. package/dist/renderer.d.ts.map +1 -0
  93. package/dist/renderer.js +75 -0
  94. package/dist/renderer.js.map +1 -0
  95. package/dist/sbom-cmd.d.ts +6 -0
  96. package/dist/sbom-cmd.d.ts.map +1 -0
  97. package/dist/sbom-cmd.js +125 -0
  98. package/dist/sbom-cmd.js.map +1 -0
  99. package/dist/score.d.ts +32 -0
  100. package/dist/score.d.ts.map +1 -0
  101. package/dist/score.js +381 -0
  102. package/dist/score.js.map +1 -0
  103. package/dist/secrets.d.ts +27 -0
  104. package/dist/secrets.d.ts.map +1 -0
  105. package/dist/secrets.js +228 -0
  106. package/dist/secrets.js.map +1 -0
  107. package/dist/subcommands.d.ts +32 -0
  108. package/dist/subcommands.d.ts.map +1 -0
  109. package/dist/subcommands.js +335 -0
  110. package/dist/subcommands.js.map +1 -0
  111. package/dist/tarball.d.ts +14 -0
  112. package/dist/tarball.d.ts.map +1 -0
  113. package/dist/tarball.js +121 -0
  114. package/dist/tarball.js.map +1 -0
  115. package/dist/threat-model.d.ts +32 -0
  116. package/dist/threat-model.d.ts.map +1 -0
  117. package/dist/threat-model.js +236 -0
  118. package/dist/threat-model.js.map +1 -0
  119. package/dist/upgrade-cmd.d.ts +9 -0
  120. package/dist/upgrade-cmd.d.ts.map +1 -0
  121. package/dist/upgrade-cmd.js +90 -0
  122. package/dist/upgrade-cmd.js.map +1 -0
  123. package/dist/upgrade.d.ts +37 -0
  124. package/dist/upgrade.d.ts.map +1 -0
  125. package/dist/upgrade.js +124 -0
  126. package/dist/upgrade.js.map +1 -0
  127. package/dist/validate.d.ts +7 -0
  128. package/dist/validate.d.ts.map +1 -0
  129. package/dist/validate.js +240 -0
  130. package/dist/validate.js.map +1 -0
  131. package/dist/walker.d.ts +24 -0
  132. package/dist/walker.d.ts.map +1 -0
  133. package/dist/walker.js +76 -0
  134. package/dist/walker.js.map +1 -0
  135. package/dist/witness-client.d.ts +40 -0
  136. package/dist/witness-client.d.ts.map +1 -0
  137. package/dist/witness-client.js +99 -0
  138. package/dist/witness-client.js.map +1 -0
  139. package/dist/wizard.d.ts +37 -0
  140. package/dist/wizard.d.ts.map +1 -0
  141. package/dist/wizard.js +137 -0
  142. package/dist/wizard.js.map +1 -0
  143. package/dist/writer.d.ts +13 -0
  144. package/dist/writer.d.ts.map +1 -0
  145. package/dist/writer.js +43 -0
  146. package/dist/writer.js.map +1 -0
  147. package/package.json +114 -0
  148. package/templates/catalog.def.mjs +542 -0
  149. package/templates/catalog.json +1274 -0
  150. package/templates/minimal/.claude/settings.json.tmpl +18 -0
  151. package/templates/minimal/CLAUDE.md.tmpl +23 -0
  152. package/templates/minimal/README.md.tmpl +20 -0
  153. package/templates/minimal/manifest.json +16 -0
  154. package/templates/minimal/package.json.tmpl +30 -0
  155. package/templates/minimal/src/init.ts.tmpl +21 -0
  156. package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -0
  157. package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -0
  158. package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -0
  159. package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -0
  160. package/templates/vertical_advertising/README.md.tmpl +29 -0
  161. package/templates/vertical_advertising/manifest.json +81 -0
  162. package/templates/vertical_advertising/package.json.tmpl +30 -0
  163. package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -0
  164. package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -0
  165. package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -0
  166. package/templates/vertical_advertising/src/init.ts.tmpl +21 -0
  167. package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -0
  168. package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -0
  169. package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  170. package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -0
  171. package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -0
  172. package/templates/vertical_agentics/README.md.tmpl +30 -0
  173. package/templates/vertical_agentics/manifest.json +91 -0
  174. package/templates/vertical_agentics/package.json.tmpl +30 -0
  175. package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -0
  176. package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -0
  177. package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -0
  178. package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -0
  179. package/templates/vertical_agentics/src/init.ts.tmpl +21 -0
  180. package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -0
  181. package/templates/vertical_ai/.claude/settings.json.tmpl +35 -0
  182. package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -0
  183. package/templates/vertical_ai/CLAUDE.md.tmpl +31 -0
  184. package/templates/vertical_ai/README.md.tmpl +30 -0
  185. package/templates/vertical_ai/manifest.json +86 -0
  186. package/templates/vertical_ai/package.json.tmpl +30 -0
  187. package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -0
  188. package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -0
  189. package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -0
  190. package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -0
  191. package/templates/vertical_ai/src/init.ts.tmpl +21 -0
  192. package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -0
  193. package/templates/vertical_business/.claude/settings.json.tmpl +33 -0
  194. package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -0
  195. package/templates/vertical_business/CLAUDE.md.tmpl +30 -0
  196. package/templates/vertical_business/README.md.tmpl +29 -0
  197. package/templates/vertical_business/manifest.json +81 -0
  198. package/templates/vertical_business/package.json.tmpl +30 -0
  199. package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -0
  200. package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -0
  201. package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -0
  202. package/templates/vertical_business/src/init.ts.tmpl +21 -0
  203. package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -0
  204. package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -0
  205. package/templates/vertical_coding/.claude/settings.json.tmpl +40 -0
  206. package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
  207. package/templates/vertical_coding/CLAUDE.md.tmpl +32 -0
  208. package/templates/vertical_coding/README.md.tmpl +30 -0
  209. package/templates/vertical_coding/manifest.json +91 -0
  210. package/templates/vertical_coding/package.json.tmpl +30 -0
  211. package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -0
  212. package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -0
  213. package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -0
  214. package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -0
  215. package/templates/vertical_coding/src/init.ts.tmpl +21 -0
  216. package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -0
  217. package/templates/vertical_crm/.claude/settings.json.tmpl +33 -0
  218. package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  219. package/templates/vertical_crm/CLAUDE.md.tmpl +30 -0
  220. package/templates/vertical_crm/README.md.tmpl +29 -0
  221. package/templates/vertical_crm/manifest.json +81 -0
  222. package/templates/vertical_crm/package.json.tmpl +30 -0
  223. package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -0
  224. package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -0
  225. package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -0
  226. package/templates/vertical_crm/src/init.ts.tmpl +21 -0
  227. package/templates/vertical_devops/.claude/settings.json.tmpl +36 -0
  228. package/templates/vertical_devops/CLAUDE.md.tmpl +34 -0
  229. package/templates/vertical_devops/README.md.tmpl +27 -0
  230. package/templates/vertical_devops/manifest.json +22 -0
  231. package/templates/vertical_devops/package.json.tmpl +26 -0
  232. package/templates/vertical_devops/runbooks/README.md.tmpl +32 -0
  233. package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -0
  234. package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -0
  235. package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -0
  236. package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -0
  237. package/templates/vertical_devops/src/init.ts.tmpl +23 -0
  238. package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -0
  239. package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -0
  240. package/templates/vertical_education/.claude/settings.json.tmpl +45 -0
  241. package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  242. package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -0
  243. package/templates/vertical_education/CLAUDE.md.tmpl +33 -0
  244. package/templates/vertical_education/README.md.tmpl +30 -0
  245. package/templates/vertical_education/manifest.json +96 -0
  246. package/templates/vertical_education/package.json.tmpl +30 -0
  247. package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -0
  248. package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -0
  249. package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -0
  250. package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -0
  251. package/templates/vertical_education/src/init.ts.tmpl +21 -0
  252. package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -0
  253. package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -0
  254. package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -0
  255. package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  256. package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -0
  257. package/templates/vertical_exotic/README.md.tmpl +29 -0
  258. package/templates/vertical_exotic/manifest.json +86 -0
  259. package/templates/vertical_exotic/package.json.tmpl +30 -0
  260. package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -0
  261. package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -0
  262. package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -0
  263. package/templates/vertical_exotic/src/init.ts.tmpl +21 -0
  264. package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -0
  265. package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -0
  266. package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -0
  267. package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  268. package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -0
  269. package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -0
  270. package/templates/vertical_gaming/README.md.tmpl +30 -0
  271. package/templates/vertical_gaming/manifest.json +96 -0
  272. package/templates/vertical_gaming/package.json.tmpl +30 -0
  273. package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -0
  274. package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -0
  275. package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -0
  276. package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -0
  277. package/templates/vertical_gaming/src/init.ts.tmpl +21 -0
  278. package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -0
  279. package/templates/vertical_health/.claude/settings.json.tmpl +33 -0
  280. package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -0
  281. package/templates/vertical_health/CLAUDE.md.tmpl +30 -0
  282. package/templates/vertical_health/README.md.tmpl +29 -0
  283. package/templates/vertical_health/manifest.json +81 -0
  284. package/templates/vertical_health/package.json.tmpl +30 -0
  285. package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -0
  286. package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -0
  287. package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -0
  288. package/templates/vertical_health/src/init.ts.tmpl +21 -0
  289. package/templates/vertical_legal/.claude/settings.json.tmpl +10 -0
  290. package/templates/vertical_legal/CLAUDE.md.tmpl +24 -0
  291. package/templates/vertical_legal/README.md.tmpl +21 -0
  292. package/templates/vertical_legal/manifest.json +20 -0
  293. package/templates/vertical_legal/package.json.tmpl +13 -0
  294. package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -0
  295. package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -0
  296. package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -0
  297. package/templates/vertical_legal/src/init.ts.tmpl +13 -0
  298. package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -0
  299. package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -0
  300. package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -0
  301. package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -0
  302. package/templates/vertical_marketing/README.md.tmpl +29 -0
  303. package/templates/vertical_marketing/manifest.json +81 -0
  304. package/templates/vertical_marketing/package.json.tmpl +30 -0
  305. package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -0
  306. package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -0
  307. package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -0
  308. package/templates/vertical_marketing/src/init.ts.tmpl +21 -0
  309. package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -0
  310. package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -0
  311. package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -0
  312. package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -0
  313. package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  314. package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
  315. package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -0
  316. package/templates/vertical_repo-maintainer/README.md.tmpl +30 -0
  317. package/templates/vertical_repo-maintainer/manifest.json +101 -0
  318. package/templates/vertical_repo-maintainer/package.json.tmpl +30 -0
  319. package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -0
  320. package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -0
  321. package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -0
  322. package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -0
  323. package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -0
  324. package/templates/vertical_research/.claude/settings.json.tmpl +9 -0
  325. package/templates/vertical_research/CLAUDE.md.tmpl +33 -0
  326. package/templates/vertical_research/README.md.tmpl +17 -0
  327. package/templates/vertical_research/manifest.json +23 -0
  328. package/templates/vertical_research/package.json.tmpl +13 -0
  329. package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -0
  330. package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -0
  331. package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -0
  332. package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -0
  333. package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -0
  334. package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -0
  335. package/templates/vertical_research/src/init.ts.tmpl +13 -0
  336. package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -0
  337. package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -0
  338. package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -0
  339. package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  340. package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -0
  341. package/templates/vertical_ruview/README.md.tmpl +29 -0
  342. package/templates/vertical_ruview/manifest.json +86 -0
  343. package/templates/vertical_ruview/package.json.tmpl +30 -0
  344. package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -0
  345. package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -0
  346. package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -0
  347. package/templates/vertical_ruview/src/init.ts.tmpl +21 -0
  348. package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -0
  349. package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -0
  350. package/templates/vertical_sales/.claude/settings.json.tmpl +45 -0
  351. package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  352. package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -0
  353. package/templates/vertical_sales/CLAUDE.md.tmpl +33 -0
  354. package/templates/vertical_sales/README.md.tmpl +30 -0
  355. package/templates/vertical_sales/manifest.json +96 -0
  356. package/templates/vertical_sales/package.json.tmpl +30 -0
  357. package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -0
  358. package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -0
  359. package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -0
  360. package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -0
  361. package/templates/vertical_sales/src/init.ts.tmpl +21 -0
  362. package/templates/vertical_support/.claude/settings.json.tmpl +25 -0
  363. package/templates/vertical_support/CLAUDE.md.tmpl +34 -0
  364. package/templates/vertical_support/README.md.tmpl +16 -0
  365. package/templates/vertical_support/kb/README.md.tmpl +23 -0
  366. package/templates/vertical_support/manifest.json +22 -0
  367. package/templates/vertical_support/package.json.tmpl +24 -0
  368. package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -0
  369. package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -0
  370. package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -0
  371. package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -0
  372. package/templates/vertical_support/src/init.ts.tmpl +16 -0
  373. package/templates/vertical_trading/.claude/settings.json.tmpl +20 -0
  374. package/templates/vertical_trading/CLAUDE.md.tmpl +24 -0
  375. package/templates/vertical_trading/README.md.tmpl +17 -0
  376. package/templates/vertical_trading/manifest.json +22 -0
  377. package/templates/vertical_trading/package.json.tmpl +13 -0
  378. package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -0
  379. package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -0
  380. package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -0
  381. package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -0
  382. package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -0
  383. package/templates/vertical_trading/src/init.ts.tmpl +20 -0
@@ -0,0 +1,25 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npx {{name}}*)",
5
+ "mcp__{{name}}__*",
6
+ "mcp__kb__*"
7
+ ],
8
+ "deny": [
9
+ "Bash(rm *)",
10
+ "Read(./.env)",
11
+ "Read(./.env.*)",
12
+ "WebFetch"
13
+ ]
14
+ },
15
+ "mcpServers": {
16
+ "{{name}}": {
17
+ "command": "npx",
18
+ "args": ["-y", "{{name}}@latest", "mcp", "start"]
19
+ },
20
+ "kb": {
21
+ "command": "npx",
22
+ "args": ["-y", "{{name}}@latest", "mcp", "kb"]
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,34 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ ## What this harness does
6
+
7
+ Handles inbound support tickets: triage by category, retrieve relevant KB articles, draft a customer reply, and escalate when needed.
8
+
9
+ ## Agents
10
+
11
+ | Agent | Role | Tier |
12
+ |---|---|---|
13
+ | `triager` | Classify ticket (billing/technical/general/urgent), score severity | Haiku |
14
+ | `kb-searcher` | Semantic search the KB for relevant articles | Codemod (cheap retriever) |
15
+ | `responder` | Draft the customer reply, citing KB articles | Sonnet |
16
+ | `escalator` | Decide if a human is needed; draft the handoff note | Sonnet |
17
+
18
+ ## Routing rules
19
+
20
+ - Severity HIGH or URGENT → skip responder, go straight to escalator
21
+ - Billing tickets → always include the billing handoff team in cc
22
+ - Repeat tickets from the same user within 24h → auto-escalate
23
+
24
+ ## Slash commands
25
+
26
+ | Command | What it does |
27
+ |---|---|
28
+ | `/triage <ticket>` | Run triager only |
29
+ | `/reply <ticket>` | Full pipeline (triage → KB → respond) |
30
+ | `/escalate <ticket> <reason>` | Force escalation path |
31
+
32
+ ## Architecture
33
+
34
+ Built on `@ruflo/kernel`. KB articles live in `kb/` and are searched via the kernel memory bridge — no separate vector DB to provision.
@@ -0,0 +1,16 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) using the `vertical:support` template.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g {{name}}
11
+ {{name}} init
12
+ ```
13
+
14
+ ## License
15
+
16
+ MIT
@@ -0,0 +1,23 @@
1
+ # Knowledge Base for {{name}}
2
+
3
+ Drop articles in this directory as markdown files. The `kb-searcher` agent
4
+ finds them by semantic search via the kernel memory bridge — no schema
5
+ required, no registration step.
6
+
7
+ ## Convention
8
+
9
+ ```markdown
10
+ # <Article title>
11
+
12
+ Tags: billing, refund, plan-change
13
+
14
+ <Body of the article — be specific and direct.>
15
+ ```
16
+
17
+ The retriever indexes the title, tags, and first paragraph. Detail in the
18
+ body is searchable but ranked lower than tags.
19
+
20
+ ## Versioning
21
+
22
+ KB articles ship with the harness — when you `npm publish`, the KB bundle
23
+ ships too. Users get your latest articles on `npm update`.
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "vertical:support",
3
+ "description": "Customer support harness — 4 agents (triager, kb-searcher, responder, escalator), KB-RAG MCP server, escalation rules",
4
+ "domain": "customer-support",
5
+ "files": [
6
+ { "src": "package.json.tmpl", "dst": "package.json", "render": true },
7
+ { "src": "CLAUDE.md.tmpl", "dst": "CLAUDE.md", "render": true },
8
+ { "src": "README.md.tmpl", "dst": "README.md", "render": true },
9
+ { "src": ".claude/settings.json.tmpl", "dst": ".claude/settings.json", "render": true },
10
+ { "src": "src/init.ts.tmpl", "dst": "src/init.ts", "render": true },
11
+ { "src": "src/agents/triager.ts.tmpl", "dst": "src/agents/triager.ts", "render": true },
12
+ { "src": "src/agents/kb-searcher.ts.tmpl", "dst": "src/agents/kb-searcher.ts", "render": true },
13
+ { "src": "src/agents/responder.ts.tmpl", "dst": "src/agents/responder.ts", "render": true },
14
+ { "src": "src/agents/escalator.ts.tmpl", "dst": "src/agents/escalator.ts", "render": true },
15
+ { "src": "kb/README.md.tmpl", "dst": "kb/README.md", "render": true }
16
+ ],
17
+ "vars": [
18
+ { "name": "name", "prompt": "Harness name (kebab-case)", "validate": "^[a-z0-9-]+$" },
19
+ { "name": "description", "prompt": "One-line description", "default": "Customer support with KB-RAG and escalation" },
20
+ { "name": "host", "prompt": "Host adapter", "default": "claude-code", "choices": ["claude-code", "codex", "pi-dev", "hermes"] }
21
+ ]
22
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": { "{{name}}": "./bin/{{name}}.js" },
7
+ "files": ["bin/**", "dist/**", "kb/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "test": "vitest run --passWithNoTests",
11
+ "init": "node ./dist/init.js"
12
+ },
13
+ "dependencies": {
14
+ "@ruflo/kernel": "^0.1.0",
15
+ "@ruflo/host-{{host}}": "^0.1.0"
16
+ },
17
+ "devDependencies": {
18
+ "@types/node": "^20.0.0",
19
+ "typescript": "^5.4.0",
20
+ "vitest": "^2.0.0"
21
+ },
22
+ "keywords": ["customer-support", "kb-rag", "ticket-triage", "agent-harness"],
23
+ "engines": { "node": ">=20.0.0" }
24
+ }
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { loadKernel } from '@ruflo/kernel';
3
+ import adapter from '@ruflo/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); });
@@ -0,0 +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
+ }
@@ -0,0 +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
@@ -0,0 +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.
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "vertical:trading",
3
+ "description": "Trading harness — market-watcher, signal-gen, risk-checker, executor (paper by default), postmortem. Includes circuit-breaker safety patterns.",
4
+ "domain": "trading/quantitative",
5
+ "files": [
6
+ { "src": "package.json.tmpl", "dst": "package.json", "render": true },
7
+ { "src": "CLAUDE.md.tmpl", "dst": "CLAUDE.md", "render": true },
8
+ { "src": "README.md.tmpl", "dst": "README.md", "render": true },
9
+ { "src": ".claude/settings.json.tmpl", "dst": ".claude/settings.json", "render": true },
10
+ { "src": "src/init.ts.tmpl", "dst": "src/init.ts", "render": true },
11
+ { "src": "src/agents/market-watcher.ts.tmpl", "dst": "src/agents/market-watcher.ts", "render": true },
12
+ { "src": "src/agents/signal-gen.ts.tmpl", "dst": "src/agents/signal-gen.ts", "render": true },
13
+ { "src": "src/agents/risk-checker.ts.tmpl", "dst": "src/agents/risk-checker.ts", "render": true },
14
+ { "src": "src/agents/executor.ts.tmpl", "dst": "src/agents/executor.ts", "render": true },
15
+ { "src": "src/agents/postmortem.ts.tmpl", "dst": "src/agents/postmortem.ts", "render": true }
16
+ ],
17
+ "vars": [
18
+ { "name": "name", "prompt": "Harness name (kebab-case)", "validate": "^[a-z0-9-]+$" },
19
+ { "name": "description", "prompt": "One-line description", "default": "Quant trading with paper-default and circuit-breakers" },
20
+ { "name": "host", "prompt": "Host adapter", "default": "claude-code", "choices": ["claude-code", "codex", "pi-dev", "hermes"] }
21
+ ]
22
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": { "{{name}}": "./bin/{{name}}.js" },
7
+ "files": ["bin/**", "dist/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
8
+ "scripts": { "build": "tsc", "test": "vitest run --passWithNoTests", "init": "node ./dist/init.js" },
9
+ "dependencies": { "@ruflo/kernel": "^0.1.0", "@ruflo/host-{{host}}": "^0.1.0" },
10
+ "devDependencies": { "@types/node": "^20.0.0", "typescript": "^5.4.0", "vitest": "^2.0.0" },
11
+ "keywords": ["trading", "quant", "agent-harness", "backtesting"],
12
+ "engines": { "node": ">=20.0.0" }
13
+ }
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the executor for {{name}}.
3
+ ONLY runs on signals that risk-checker APPROVED. In paper mode, simulate
4
+ the fill at the current bid/ask spread and log to the paper book. In live
5
+ mode, submit via the broker MCP (which itself respects the circuit-breaker
6
+ state). Emit a fill report.`;
7
+ export const NAME = 'executor';
8
+ export const TIER = 'codemod' as const;
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the market watcher for {{name}}.
3
+ Poll the market_data MCP for the configured tickers. Detect regime shifts
4
+ (trending vs ranging, high-vol vs low-vol). Emit a regime classification
5
+ every tick. Do NOT generate signals — that's signal-gen's job.`;
6
+ export const NAME = 'market-watcher';
7
+ export const TIER = 'haiku' as const;
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the daily P&L postmortem author for {{name}}.
3
+ At end of session: summarise P&L, list winning + losing trades, identify
4
+ patterns. Honesty matters — name the strategy that lost money even if it
5
+ won yesterday. Recommend one parameter to revisit tomorrow. Blameless;
6
+ strategies fail, not authors.`;
7
+ export const NAME = 'postmortem';
8
+ export const TIER = 'sonnet' as const;
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Deterministic risk checker. Codemod tier — no LLM call, just rules.
3
+
4
+ export const SYSTEM_PROMPT = `You are the risk gate for {{name}}.
5
+ For each incoming signal, check:
6
+ 1. Circuit-breaker state (daily P&L > -2%, < 5 consecutive losses, latency < 500ms)
7
+ 2. Position-sizing rule (fractional-Kelly with 0.25 multiplier)
8
+ 3. Concentration limits (no single position > 10% equity)
9
+ Output: APPROVE or REJECT with a single-sentence reason.`;
10
+ export const NAME = 'risk-checker';
11
+ export const TIER = 'codemod' as const;
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the signal generator for {{name}}.
3
+ Read the regime from market-watcher and emit BUY/SELL/HOLD signals with
4
+ a confidence score and an entry/exit price. Cite the indicator(s) the
5
+ signal is based on. NEVER submit to executor directly — risk-checker
6
+ must vet every signal first.`;
7
+ export const NAME = 'signal-gen';
8
+ export const TIER = 'sonnet' as const;
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { loadKernel } from '@ruflo/kernel';
3
+ import adapter from '@ruflo/host-{{host}}';
4
+
5
+ const HARNESS_NAME = '{{name}}';
6
+ const PAPER_BY_DEFAULT = process.env.RUFLO_TRADE_CONFIRM !== 'YES_LIVE';
7
+
8
+ async function main(): Promise<number> {
9
+ const kernel = await loadKernel();
10
+ const info = kernel.kernelInfo();
11
+ console.log(`${HARNESS_NAME} — quant trading harness`);
12
+ console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
13
+ console.log(`Mode: ${PAPER_BY_DEFAULT ? 'PAPER (safe)' : 'LIVE'}`);
14
+ if (!PAPER_BY_DEFAULT) {
15
+ console.log('WARNING: live trading enabled. Circuit breakers are still active.');
16
+ }
17
+ return 0;
18
+ }
19
+
20
+ main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });