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,12 @@
1
+ ---
2
+ description: "Health-check the harness: kernel load, MCP wiring, memory backend, host adapter."
3
+ ---
4
+
5
+ Run a full health check and print a PASS/FAIL table.
6
+
7
+ 1. Kernel loads and `kernelInfo().version` matches package.json.
8
+ 2. The MCP server starts and lists its tools.
9
+ 3. The memory backend is reachable.
10
+ 4. The configured host adapter is present.
11
+
12
+ Exit non-zero if any check fails.
@@ -0,0 +1,33 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npx {{name}}*)",
5
+ "mcp__{{name}}__*",
6
+ "mcp__health_kb__*"
7
+ ],
8
+ "deny": [
9
+ "Read(./.env)",
10
+ "Read(./.env.*)"
11
+ ]
12
+ },
13
+ "mcpServers": {
14
+ "{{name}}": {
15
+ "command": "npx",
16
+ "args": [
17
+ "-y",
18
+ "{{name}}@latest",
19
+ "mcp",
20
+ "start"
21
+ ]
22
+ },
23
+ "health_kb": {
24
+ "command": "npx",
25
+ "args": [
26
+ "-y",
27
+ "{{name}}@latest",
28
+ "mcp",
29
+ "health"
30
+ ]
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: wellness-intake
3
+ description: "Run a safe, structured wellness intake that escalates red flags to professionals."
4
+ ---
5
+
6
+ # wellness-intake
7
+
8
+ Run a wellness intake.
9
+
10
+ 1. Intake collects goals, volunteered history, and routine.
11
+ 2. On any red-flag symptom, STOP and direct to emergency/professional care.
12
+ 3. Triage routes to the right resource (clinician / dietitian / mental-health / info).
13
+ 4. Care-coordinator organises logistics and questions for a real clinician.
14
+
15
+ This harness is informational only and is not a substitute for professional medical advice.
@@ -0,0 +1,30 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Health & Wellness harness · domain: `health/coordination`. Generated with [create-agent-harness](https://github.com/ruvnet/agent-harness-generator).
6
+
7
+ ## Behavioral rules
8
+
9
+ - Use the harness's MCP tools (`mcp__{{name}}__*`) for orchestration
10
+ - Memory and routing are handled by the kernel — you don't need to learn them
11
+ - Defer destructive operations to the user
12
+
13
+ ## Agents
14
+
15
+ | Agent | Tier | Role |
16
+ |---|---|---|
17
+ | `intake` | haiku | Collects structured intake, flags red flags. |
18
+ | `triage` | sonnet | Routes to the right resource, not a diagnosis. |
19
+ | `care-coordinator` | sonnet | Organises logistics and reminders. |
20
+ ## Skills
21
+
22
+ - `/wellness-intake` — Run a safe, structured wellness intake that escalates red flags to professionals.
23
+
24
+ ## Commands
25
+
26
+ - `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
27
+
28
+ ## Architecture
29
+
30
+ This harness uses [@ruflo/kernel](https://www.npmjs.com/package/@ruflo/kernel) — a Rust-compiled WASM module with a NAPI-RS native fallback — so the same code runs identically on every platform.
@@ -0,0 +1,29 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > **Health & Wellness** — Intake → triage → coordinate, with a knowledge MCP. Hard-codes "see a clinician" for anything clinical.
6
+ >
7
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator). WASM kernel, multi-host support, witness-signed releases.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm install -g {{name}}
13
+ {{name}} init
14
+ {{name}} doctor
15
+ ```
16
+
17
+ ## Agents
18
+
19
+ | Agent | Role |
20
+ |---|---|
21
+ | `intake` | Collects structured intake, flags red flags. |
22
+ | `triage` | Routes to the right resource, not a diagnosis. |
23
+ | `care-coordinator` | Organises logistics and reminders. |
24
+
25
+ This harness ships with the **{{host}}** adapter.
26
+
27
+ ## License
28
+
29
+ MIT
@@ -0,0 +1,81 @@
1
+ {
2
+ "id": "vertical:health",
3
+ "description": "A wellness-coordination harness — intake, triage, and care-coordinator. Informational only; not medical advice.",
4
+ "domain": "health/coordination",
5
+ "category": "Professional",
6
+ "files": [
7
+ {
8
+ "src": "package.json.tmpl",
9
+ "dst": "package.json",
10
+ "render": true
11
+ },
12
+ {
13
+ "src": "CLAUDE.md.tmpl",
14
+ "dst": "CLAUDE.md",
15
+ "render": true
16
+ },
17
+ {
18
+ "src": "README.md.tmpl",
19
+ "dst": "README.md",
20
+ "render": true
21
+ },
22
+ {
23
+ "src": ".claude/settings.json.tmpl",
24
+ "dst": ".claude/settings.json",
25
+ "render": true
26
+ },
27
+ {
28
+ "src": "src/init.ts.tmpl",
29
+ "dst": "src/init.ts",
30
+ "render": true
31
+ },
32
+ {
33
+ "src": "src/agents/intake.ts.tmpl",
34
+ "dst": "src/agents/intake.ts",
35
+ "render": true
36
+ },
37
+ {
38
+ "src": "src/agents/triage.ts.tmpl",
39
+ "dst": "src/agents/triage.ts",
40
+ "render": true
41
+ },
42
+ {
43
+ "src": "src/agents/care-coordinator.ts.tmpl",
44
+ "dst": "src/agents/care-coordinator.ts",
45
+ "render": true
46
+ },
47
+ {
48
+ "src": ".claude/skills/wellness-intake/SKILL.md.tmpl",
49
+ "dst": ".claude/skills/wellness-intake/SKILL.md",
50
+ "render": true
51
+ },
52
+ {
53
+ "src": ".claude/commands/doctor.md.tmpl",
54
+ "dst": ".claude/commands/doctor.md",
55
+ "render": true
56
+ }
57
+ ],
58
+ "vars": [
59
+ {
60
+ "name": "name",
61
+ "prompt": "Harness name (kebab-case)",
62
+ "validate": "^[a-z0-9-]+$"
63
+ },
64
+ {
65
+ "name": "description",
66
+ "prompt": "One-line description",
67
+ "default": "Coordinate intake and wellness information (not medical advice)"
68
+ },
69
+ {
70
+ "name": "host",
71
+ "prompt": "Host adapter",
72
+ "default": "claude-code",
73
+ "choices": [
74
+ "claude-code",
75
+ "codex",
76
+ "pi-dev",
77
+ "hermes"
78
+ ]
79
+ }
80
+ ]
81
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": {
7
+ "{{name}}": "./bin/{{name}}.js"
8
+ },
9
+ "files": ["bin/**", "dist/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "vitest run --passWithNoTests",
13
+ "init": "node ./dist/init.js"
14
+ },
15
+ "dependencies": {
16
+ "@ruflo/kernel": "^0.1.0",
17
+ "@ruflo/host-{{host}}": "^0.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "typescript": "^5.4.0",
22
+ "vitest": "^2.0.0"
23
+ },
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ }
30
+ }
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +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;
@@ -0,0 +1,21 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Generated by create-agent-harness — your harness's `{{name}} init` entry.
3
+
4
+ import { loadKernel } from '@ruflo/kernel';
5
+ import adapter from '@ruflo/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
+ });
@@ -0,0 +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
+ }
@@ -0,0 +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.
@@ -0,0 +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
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "vertical:legal",
3
+ "description": "Legal review harness — 3 agents (redline, citation-checker, risk-rater), citation-search MCP, deliberation-first workflow",
4
+ "domain": "legal/contract-review",
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/redline.ts.tmpl", "dst": "src/agents/redline.ts", "render": true },
12
+ { "src": "src/agents/citation-checker.ts.tmpl", "dst": "src/agents/citation-checker.ts", "render": true },
13
+ { "src": "src/agents/risk-rater.ts.tmpl", "dst": "src/agents/risk-rater.ts", "render": true }
14
+ ],
15
+ "vars": [
16
+ { "name": "name", "prompt": "Harness name (kebab-case)", "validate": "^[a-z0-9-]+$" },
17
+ { "name": "description", "prompt": "One-line description", "default": "Contract redline + citation check + risk rating" },
18
+ { "name": "host", "prompt": "Host adapter", "default": "claude-code", "choices": ["claude-code", "codex", "pi-dev", "hermes"] }
19
+ ]
20
+ }
@@ -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": ["legal", "contract-review", "redline", "agent-harness"],
12
+ "engines": { "node": ">=20.0.0" }
13
+ }
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the citation checker for {{name}}.
3
+ For every citation in a redline rewrite: verify it via the citations MCP.
4
+ Reject hallucinated citations. Flag superseded / overruled cases. Output
5
+ per-citation: VERIFIED, SUPERSEDED, NOT_FOUND, or NEEDS_PINPOINT.`;
6
+ export const NAME = 'citation-checker';
7
+ export const TIER = 'sonnet' as const;
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the redline agent for {{name}}.
3
+ Compare the input document against the standard template (in {{name}}'s
4
+ memory store). Emit a deviation list: clause id, deviation summary,
5
+ proposed rewrite, citation. Do NOT auto-apply. Output is a memo.`;
6
+ export const NAME = 'redline';
7
+ export const TIER = 'sonnet' as const;
@@ -0,0 +1,8 @@
1
+ // SPDX-License-Identifier: MIT
2
+ export const SYSTEM_PROMPT = `You are the risk rater for {{name}}.
3
+ You see ONLY verified deviations (those that passed citation-checker).
4
+ Assign each: HIGH / MEDIUM / LOW with a one-sentence rationale. Order the
5
+ final memo by risk descending. Top of memo: total deviations + count by
6
+ risk tier.`;
7
+ export const NAME = 'risk-rater';
8
+ export const TIER = 'sonnet' as const;
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: MIT
2
+ import { loadKernel } from '@ruflo/kernel';
3
+ import adapter from '@ruflo/host-{{host}}';
4
+ const HARNESS_NAME = '{{name}}';
5
+ async function main(): Promise<number> {
6
+ const kernel = await loadKernel();
7
+ const info = kernel.kernelInfo();
8
+ console.log(`${HARNESS_NAME} — legal review harness`);
9
+ console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
10
+ console.log('REMINDER: output is advisory only — final review by qualified counsel.');
11
+ return 0;
12
+ }
13
+ main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: "Health-check the harness: kernel load, MCP wiring, memory backend, host adapter."
3
+ ---
4
+
5
+ Run a full health check and print a PASS/FAIL table.
6
+
7
+ 1. Kernel loads and `kernelInfo().version` matches package.json.
8
+ 2. The MCP server starts and lists its tools.
9
+ 3. The memory backend is reachable.
10
+ 4. The configured host adapter is present.
11
+
12
+ Exit non-zero if any check fails.
@@ -0,0 +1,33 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npx {{name}}*)",
5
+ "mcp__{{name}}__*",
6
+ "mcp__analytics__*"
7
+ ],
8
+ "deny": [
9
+ "Read(./.env)",
10
+ "Read(./.env.*)"
11
+ ]
12
+ },
13
+ "mcpServers": {
14
+ "{{name}}": {
15
+ "command": "npx",
16
+ "args": [
17
+ "-y",
18
+ "{{name}}@latest",
19
+ "mcp",
20
+ "start"
21
+ ]
22
+ },
23
+ "analytics": {
24
+ "command": "npx",
25
+ "args": [
26
+ "-y",
27
+ "{{name}}@latest",
28
+ "mcp",
29
+ "analytics"
30
+ ]
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: campaign-brief
3
+ description: "Produce a campaign brief: audience, message, channels, content plan, and the metric."
4
+ ---
5
+
6
+ # campaign-brief
7
+
8
+ Write a campaign brief.
9
+
10
+ 1. Strategist names the audience, the message, and the channels.
11
+ 2. SEO-analyst supplies the target queries and demand.
12
+ 3. Content-creator drafts the hero asset and variants.
13
+ 4. Output the brief with the single funnel metric the campaign moves.
@@ -0,0 +1,30 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Marketing harness · domain: `marketing/content`. Generated with [create-agent-harness](https://github.com/ruvnet/agent-harness-generator).
6
+
7
+ ## Behavioral rules
8
+
9
+ - Use the harness's MCP tools (`mcp__{{name}}__*`) for orchestration
10
+ - Memory and routing are handled by the kernel — you don't need to learn them
11
+ - Defer destructive operations to the user
12
+
13
+ ## Agents
14
+
15
+ | Agent | Tier | Role |
16
+ |---|---|---|
17
+ | `strategist` | opus | Sets the audience, message, and channel. |
18
+ | `content-creator` | sonnet | Writes on-brand content for the channel. |
19
+ | `seo-analyst` | sonnet | Grounds content in real search demand. |
20
+ ## Skills
21
+
22
+ - `/campaign-brief` — Produce a campaign brief: audience, message, channels, content plan, and the metric.
23
+
24
+ ## Commands
25
+
26
+ - `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
27
+
28
+ ## Architecture
29
+
30
+ This harness uses [@ruflo/kernel](https://www.npmjs.com/package/@ruflo/kernel) — a Rust-compiled WASM module with a NAPI-RS native fallback — so the same code runs identically on every platform.
@@ -0,0 +1,29 @@
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > **Marketing** — Strategy → content → SEO, with an analytics MCP for grounding claims in real traffic.
6
+ >
7
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator). WASM kernel, multi-host support, witness-signed releases.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm install -g {{name}}
13
+ {{name}} init
14
+ {{name}} doctor
15
+ ```
16
+
17
+ ## Agents
18
+
19
+ | Agent | Role |
20
+ |---|---|
21
+ | `strategist` | Sets the audience, message, and channel. |
22
+ | `content-creator` | Writes on-brand content for the channel. |
23
+ | `seo-analyst` | Grounds content in real search demand. |
24
+
25
+ This harness ships with the **{{host}}** adapter.
26
+
27
+ ## License
28
+
29
+ MIT
@@ -0,0 +1,81 @@
1
+ {
2
+ "id": "vertical:marketing",
3
+ "description": "A marketing pod — strategist, content-creator, and SEO-analyst for campaigns and content.",
4
+ "domain": "marketing/content",
5
+ "category": "Growth",
6
+ "files": [
7
+ {
8
+ "src": "package.json.tmpl",
9
+ "dst": "package.json",
10
+ "render": true
11
+ },
12
+ {
13
+ "src": "CLAUDE.md.tmpl",
14
+ "dst": "CLAUDE.md",
15
+ "render": true
16
+ },
17
+ {
18
+ "src": "README.md.tmpl",
19
+ "dst": "README.md",
20
+ "render": true
21
+ },
22
+ {
23
+ "src": ".claude/settings.json.tmpl",
24
+ "dst": ".claude/settings.json",
25
+ "render": true
26
+ },
27
+ {
28
+ "src": "src/init.ts.tmpl",
29
+ "dst": "src/init.ts",
30
+ "render": true
31
+ },
32
+ {
33
+ "src": "src/agents/strategist.ts.tmpl",
34
+ "dst": "src/agents/strategist.ts",
35
+ "render": true
36
+ },
37
+ {
38
+ "src": "src/agents/content-creator.ts.tmpl",
39
+ "dst": "src/agents/content-creator.ts",
40
+ "render": true
41
+ },
42
+ {
43
+ "src": "src/agents/seo-analyst.ts.tmpl",
44
+ "dst": "src/agents/seo-analyst.ts",
45
+ "render": true
46
+ },
47
+ {
48
+ "src": ".claude/skills/campaign-brief/SKILL.md.tmpl",
49
+ "dst": ".claude/skills/campaign-brief/SKILL.md",
50
+ "render": true
51
+ },
52
+ {
53
+ "src": ".claude/commands/doctor.md.tmpl",
54
+ "dst": ".claude/commands/doctor.md",
55
+ "render": true
56
+ }
57
+ ],
58
+ "vars": [
59
+ {
60
+ "name": "name",
61
+ "prompt": "Harness name (kebab-case)",
62
+ "validate": "^[a-z0-9-]+$"
63
+ },
64
+ {
65
+ "name": "description",
66
+ "prompt": "One-line description",
67
+ "default": "Plan campaigns, create content, optimise for SEO"
68
+ },
69
+ {
70
+ "name": "host",
71
+ "prompt": "Host adapter",
72
+ "default": "claude-code",
73
+ "choices": [
74
+ "claude-code",
75
+ "codex",
76
+ "pi-dev",
77
+ "hermes"
78
+ ]
79
+ }
80
+ ]
81
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "type": "module",
6
+ "bin": {
7
+ "{{name}}": "./bin/{{name}}.js"
8
+ },
9
+ "files": ["bin/**", "dist/**", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "vitest run --passWithNoTests",
13
+ "init": "node ./dist/init.js"
14
+ },
15
+ "dependencies": {
16
+ "@ruflo/kernel": "^0.1.0",
17
+ "@ruflo/host-{{host}}": "^0.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "typescript": "^5.4.0",
22
+ "vitest": "^2.0.0"
23
+ },
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ }
30
+ }