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.
- package/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/analyze-repo.d.ts +74 -0
- package/dist/analyze-repo.d.ts.map +1 -0
- package/dist/analyze-repo.js +329 -0
- package/dist/analyze-repo.js.map +1 -0
- package/dist/audit-cmd.d.ts +6 -0
- package/dist/audit-cmd.d.ts.map +1 -0
- package/dist/audit-cmd.js +139 -0
- package/dist/audit-cmd.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +8 -0
- package/dist/bin.js.map +1 -0
- package/dist/compare-cmd.d.ts +56 -0
- package/dist/compare-cmd.d.ts.map +1 -0
- package/dist/compare-cmd.js +173 -0
- package/dist/compare-cmd.js.map +1 -0
- package/dist/completions-cmd.d.ts +6 -0
- package/dist/completions-cmd.d.ts.map +1 -0
- package/dist/completions-cmd.js +171 -0
- package/dist/completions-cmd.js.map +1 -0
- package/dist/diag.d.ts +76 -0
- package/dist/diag.d.ts.map +1 -0
- package/dist/diag.js +349 -0
- package/dist/diag.js.map +1 -0
- package/dist/eject.d.ts +33 -0
- package/dist/eject.d.ts.map +1 -0
- package/dist/eject.js +147 -0
- package/dist/eject.js.map +1 -0
- package/dist/export-config.d.ts +25 -0
- package/dist/export-config.d.ts.map +1 -0
- package/dist/export-config.js +134 -0
- package/dist/export-config.js.map +1 -0
- package/dist/external-template.d.ts +19 -0
- package/dist/external-template.d.ts.map +1 -0
- package/dist/external-template.js +37 -0
- package/dist/external-template.js.map +1 -0
- package/dist/federate.d.ts +37 -0
- package/dist/federate.d.ts.map +1 -0
- package/dist/federate.js +167 -0
- package/dist/federate.js.map +1 -0
- package/dist/genome-scorers.d.ts +33 -0
- package/dist/genome-scorers.d.ts.map +1 -0
- package/dist/genome-scorers.js +115 -0
- package/dist/genome-scorers.js.map +1 -0
- package/dist/genome.d.ts +28 -0
- package/dist/genome.d.ts.map +1 -0
- package/dist/genome.js +219 -0
- package/dist/genome.js.map +1 -0
- package/dist/harness-bin.d.ts +3 -0
- package/dist/harness-bin.d.ts.map +1 -0
- package/dist/harness-bin.js +17 -0
- package/dist/harness-bin.js.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +409 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +55 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +62 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mcp-cmd.d.ts +19 -0
- package/dist/mcp-cmd.d.ts.map +1 -0
- package/dist/mcp-cmd.js +179 -0
- package/dist/mcp-cmd.js.map +1 -0
- package/dist/mcp-scan.d.ts +25 -0
- package/dist/mcp-scan.d.ts.map +1 -0
- package/dist/mcp-scan.js +132 -0
- package/dist/mcp-scan.js.map +1 -0
- package/dist/oia-manifest.d.ts +97 -0
- package/dist/oia-manifest.d.ts.map +1 -0
- package/dist/oia-manifest.js +241 -0
- package/dist/oia-manifest.js.map +1 -0
- package/dist/publish-cmd.d.ts +9 -0
- package/dist/publish-cmd.d.ts.map +1 -0
- package/dist/publish-cmd.js +56 -0
- package/dist/publish-cmd.js.map +1 -0
- package/dist/publish.d.ts +55 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +104 -0
- package/dist/publish.js.map +1 -0
- package/dist/registry.d.ts +60 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +67 -0
- package/dist/registry.js.map +1 -0
- package/dist/rename.d.ts +26 -0
- package/dist/rename.d.ts.map +1 -0
- package/dist/rename.js +86 -0
- package/dist/rename.js.map +1 -0
- package/dist/renderer.d.ts +39 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +75 -0
- package/dist/renderer.js.map +1 -0
- package/dist/sbom-cmd.d.ts +6 -0
- package/dist/sbom-cmd.d.ts.map +1 -0
- package/dist/sbom-cmd.js +125 -0
- package/dist/sbom-cmd.js.map +1 -0
- package/dist/score.d.ts +32 -0
- package/dist/score.d.ts.map +1 -0
- package/dist/score.js +381 -0
- package/dist/score.js.map +1 -0
- package/dist/secrets.d.ts +27 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +228 -0
- package/dist/secrets.js.map +1 -0
- package/dist/subcommands.d.ts +32 -0
- package/dist/subcommands.d.ts.map +1 -0
- package/dist/subcommands.js +335 -0
- package/dist/subcommands.js.map +1 -0
- package/dist/tarball.d.ts +14 -0
- package/dist/tarball.d.ts.map +1 -0
- package/dist/tarball.js +121 -0
- package/dist/tarball.js.map +1 -0
- package/dist/threat-model.d.ts +32 -0
- package/dist/threat-model.d.ts.map +1 -0
- package/dist/threat-model.js +236 -0
- package/dist/threat-model.js.map +1 -0
- package/dist/upgrade-cmd.d.ts +9 -0
- package/dist/upgrade-cmd.d.ts.map +1 -0
- package/dist/upgrade-cmd.js +90 -0
- package/dist/upgrade-cmd.js.map +1 -0
- package/dist/upgrade.d.ts +37 -0
- package/dist/upgrade.d.ts.map +1 -0
- package/dist/upgrade.js +124 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validate.d.ts +7 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +240 -0
- package/dist/validate.js.map +1 -0
- package/dist/walker.d.ts +24 -0
- package/dist/walker.d.ts.map +1 -0
- package/dist/walker.js +76 -0
- package/dist/walker.js.map +1 -0
- package/dist/witness-client.d.ts +40 -0
- package/dist/witness-client.d.ts.map +1 -0
- package/dist/witness-client.js +99 -0
- package/dist/witness-client.js.map +1 -0
- package/dist/wizard.d.ts +37 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +137 -0
- package/dist/wizard.js.map +1 -0
- package/dist/writer.d.ts +13 -0
- package/dist/writer.d.ts.map +1 -0
- package/dist/writer.js +43 -0
- package/dist/writer.js.map +1 -0
- package/package.json +114 -0
- package/templates/catalog.def.mjs +542 -0
- package/templates/catalog.json +1274 -0
- package/templates/minimal/.claude/settings.json.tmpl +18 -0
- package/templates/minimal/CLAUDE.md.tmpl +23 -0
- package/templates/minimal/README.md.tmpl +20 -0
- package/templates/minimal/manifest.json +16 -0
- package/templates/minimal/package.json.tmpl +30 -0
- package/templates/minimal/src/init.ts.tmpl +21 -0
- package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -0
- package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -0
- package/templates/vertical_advertising/README.md.tmpl +29 -0
- package/templates/vertical_advertising/manifest.json +81 -0
- package/templates/vertical_advertising/package.json.tmpl +30 -0
- package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -0
- package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -0
- package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -0
- package/templates/vertical_advertising/src/init.ts.tmpl +21 -0
- package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -0
- package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -0
- package/templates/vertical_agentics/README.md.tmpl +30 -0
- package/templates/vertical_agentics/manifest.json +91 -0
- package/templates/vertical_agentics/package.json.tmpl +30 -0
- package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -0
- package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -0
- package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -0
- package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -0
- package/templates/vertical_agentics/src/init.ts.tmpl +21 -0
- package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_ai/.claude/settings.json.tmpl +35 -0
- package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -0
- package/templates/vertical_ai/CLAUDE.md.tmpl +31 -0
- package/templates/vertical_ai/README.md.tmpl +30 -0
- package/templates/vertical_ai/manifest.json +86 -0
- package/templates/vertical_ai/package.json.tmpl +30 -0
- package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -0
- package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -0
- package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -0
- package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -0
- package/templates/vertical_ai/src/init.ts.tmpl +21 -0
- package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_business/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -0
- package/templates/vertical_business/CLAUDE.md.tmpl +30 -0
- package/templates/vertical_business/README.md.tmpl +29 -0
- package/templates/vertical_business/manifest.json +81 -0
- package/templates/vertical_business/package.json.tmpl +30 -0
- package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -0
- package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -0
- package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -0
- package/templates/vertical_business/src/init.ts.tmpl +21 -0
- package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -0
- package/templates/vertical_coding/.claude/settings.json.tmpl +40 -0
- package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
- package/templates/vertical_coding/CLAUDE.md.tmpl +32 -0
- package/templates/vertical_coding/README.md.tmpl +30 -0
- package/templates/vertical_coding/manifest.json +91 -0
- package/templates/vertical_coding/package.json.tmpl +30 -0
- package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -0
- package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -0
- package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -0
- package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -0
- package/templates/vertical_coding/src/init.ts.tmpl +21 -0
- package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_crm/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_crm/CLAUDE.md.tmpl +30 -0
- package/templates/vertical_crm/README.md.tmpl +29 -0
- package/templates/vertical_crm/manifest.json +81 -0
- package/templates/vertical_crm/package.json.tmpl +30 -0
- package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -0
- package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -0
- package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -0
- package/templates/vertical_crm/src/init.ts.tmpl +21 -0
- package/templates/vertical_devops/.claude/settings.json.tmpl +36 -0
- package/templates/vertical_devops/CLAUDE.md.tmpl +34 -0
- package/templates/vertical_devops/README.md.tmpl +27 -0
- package/templates/vertical_devops/manifest.json +22 -0
- package/templates/vertical_devops/package.json.tmpl +26 -0
- package/templates/vertical_devops/runbooks/README.md.tmpl +32 -0
- package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -0
- package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -0
- package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -0
- package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -0
- package/templates/vertical_devops/src/init.ts.tmpl +23 -0
- package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -0
- package/templates/vertical_education/.claude/settings.json.tmpl +45 -0
- package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -0
- package/templates/vertical_education/CLAUDE.md.tmpl +33 -0
- package/templates/vertical_education/README.md.tmpl +30 -0
- package/templates/vertical_education/manifest.json +96 -0
- package/templates/vertical_education/package.json.tmpl +30 -0
- package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -0
- package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -0
- package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -0
- package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -0
- package/templates/vertical_education/src/init.ts.tmpl +21 -0
- package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -0
- package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -0
- package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -0
- package/templates/vertical_exotic/README.md.tmpl +29 -0
- package/templates/vertical_exotic/manifest.json +86 -0
- package/templates/vertical_exotic/package.json.tmpl +30 -0
- package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -0
- package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -0
- package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -0
- package/templates/vertical_exotic/src/init.ts.tmpl +21 -0
- package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -0
- package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -0
- package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -0
- package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -0
- package/templates/vertical_gaming/README.md.tmpl +30 -0
- package/templates/vertical_gaming/manifest.json +96 -0
- package/templates/vertical_gaming/package.json.tmpl +30 -0
- package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -0
- package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -0
- package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -0
- package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -0
- package/templates/vertical_gaming/src/init.ts.tmpl +21 -0
- package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_health/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -0
- package/templates/vertical_health/CLAUDE.md.tmpl +30 -0
- package/templates/vertical_health/README.md.tmpl +29 -0
- package/templates/vertical_health/manifest.json +81 -0
- package/templates/vertical_health/package.json.tmpl +30 -0
- package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -0
- package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -0
- package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -0
- package/templates/vertical_health/src/init.ts.tmpl +21 -0
- package/templates/vertical_legal/.claude/settings.json.tmpl +10 -0
- package/templates/vertical_legal/CLAUDE.md.tmpl +24 -0
- package/templates/vertical_legal/README.md.tmpl +21 -0
- package/templates/vertical_legal/manifest.json +20 -0
- package/templates/vertical_legal/package.json.tmpl +13 -0
- package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -0
- package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -0
- package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -0
- package/templates/vertical_legal/src/init.ts.tmpl +13 -0
- package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -0
- package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -0
- package/templates/vertical_marketing/README.md.tmpl +29 -0
- package/templates/vertical_marketing/manifest.json +81 -0
- package/templates/vertical_marketing/package.json.tmpl +30 -0
- package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -0
- package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -0
- package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -0
- package/templates/vertical_marketing/src/init.ts.tmpl +21 -0
- package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -0
- package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -0
- package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -0
- package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
- package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -0
- package/templates/vertical_repo-maintainer/README.md.tmpl +30 -0
- package/templates/vertical_repo-maintainer/manifest.json +101 -0
- package/templates/vertical_repo-maintainer/package.json.tmpl +30 -0
- package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -0
- package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -0
- package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -0
- package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -0
- package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -0
- package/templates/vertical_research/.claude/settings.json.tmpl +9 -0
- package/templates/vertical_research/CLAUDE.md.tmpl +33 -0
- package/templates/vertical_research/README.md.tmpl +17 -0
- package/templates/vertical_research/manifest.json +23 -0
- package/templates/vertical_research/package.json.tmpl +13 -0
- package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -0
- package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -0
- package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -0
- package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -0
- package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -0
- package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -0
- package/templates/vertical_research/src/init.ts.tmpl +13 -0
- package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -0
- package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -0
- package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -0
- package/templates/vertical_ruview/README.md.tmpl +29 -0
- package/templates/vertical_ruview/manifest.json +86 -0
- package/templates/vertical_ruview/package.json.tmpl +30 -0
- package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -0
- package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -0
- package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -0
- package/templates/vertical_ruview/src/init.ts.tmpl +21 -0
- package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -0
- package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -0
- package/templates/vertical_sales/.claude/settings.json.tmpl +45 -0
- package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
- package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -0
- package/templates/vertical_sales/CLAUDE.md.tmpl +33 -0
- package/templates/vertical_sales/README.md.tmpl +30 -0
- package/templates/vertical_sales/manifest.json +96 -0
- package/templates/vertical_sales/package.json.tmpl +30 -0
- package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -0
- package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -0
- package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -0
- package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -0
- package/templates/vertical_sales/src/init.ts.tmpl +21 -0
- package/templates/vertical_support/.claude/settings.json.tmpl +25 -0
- package/templates/vertical_support/CLAUDE.md.tmpl +34 -0
- package/templates/vertical_support/README.md.tmpl +16 -0
- package/templates/vertical_support/kb/README.md.tmpl +23 -0
- package/templates/vertical_support/manifest.json +22 -0
- package/templates/vertical_support/package.json.tmpl +24 -0
- package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -0
- package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -0
- package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -0
- package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -0
- package/templates/vertical_support/src/init.ts.tmpl +16 -0
- package/templates/vertical_trading/.claude/settings.json.tmpl +20 -0
- package/templates/vertical_trading/CLAUDE.md.tmpl +24 -0
- package/templates/vertical_trading/README.md.tmpl +17 -0
- package/templates/vertical_trading/manifest.json +22 -0
- package/templates/vertical_trading/package.json.tmpl +13 -0
- package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -0
- package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -0
- package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -0
- package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -0
- package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -0
- package/templates/vertical_trading/src/init.ts.tmpl +20 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
## What this harness does
|
|
6
|
+
|
|
7
|
+
Coordinates on-call incident response: alert ingestion, runbook lookup, escalation logic, and postmortem authoring. 4 agents work in a hierarchical pipeline; the kernel routes between them.
|
|
8
|
+
|
|
9
|
+
## Agents
|
|
10
|
+
|
|
11
|
+
| Agent | Role | Typical model tier |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `responder` | Triages incoming alerts, identifies playbook | Haiku |
|
|
14
|
+
| `runbook-runner` | Executes known runbooks step by step | Haiku |
|
|
15
|
+
| `escalator` | Decides when to page humans + who | Sonnet |
|
|
16
|
+
| `postmortem` | Drafts incident postmortems from session transcript | Sonnet |
|
|
17
|
+
|
|
18
|
+
## Behavioral rules
|
|
19
|
+
|
|
20
|
+
- ALWAYS run `runbook-runner` before `escalator` — escalation requires runbook context
|
|
21
|
+
- NEVER auto-execute destructive commands; runbook-runner deliberates, doesn't `rm`
|
|
22
|
+
- `escalator` may invoke a human via the `notify` MCP tool — that's the only side-effect agent
|
|
23
|
+
|
|
24
|
+
## Slash commands
|
|
25
|
+
|
|
26
|
+
| Command | What it does |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `/triage <alert>` | Run responder + runbook-runner |
|
|
29
|
+
| `/escalate <reason>` | Force escalation path |
|
|
30
|
+
| `/postmortem` | Generate postmortem from current session |
|
|
31
|
+
|
|
32
|
+
## Architecture
|
|
33
|
+
|
|
34
|
+
Built on `@ruflo/kernel` (Rust + WASM). Multi-host: ships with the **{{host}}** adapter; other hosts available via `harness add-host <name>`.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
> Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator) using the `vertical:devops` template. WASM kernel, multi-host, witness-signed.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g {{name}}
|
|
11
|
+
{{name}} init
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## What's in the box
|
|
15
|
+
|
|
16
|
+
- 4 specialized agents (responder, runbook-runner, escalator, postmortem)
|
|
17
|
+
- `runbooks/` directory for your team's runbooks (markdown)
|
|
18
|
+
- Pre-configured routing: Haiku for triage/runbook execution, Sonnet for escalation + postmortem
|
|
19
|
+
- `.claude/settings.json` with sensible permissions and the kernel MCP server registered
|
|
20
|
+
|
|
21
|
+
## Adding your own runbooks
|
|
22
|
+
|
|
23
|
+
Drop markdown files into `runbooks/`. The runbook-runner agent finds them by semantic search via the kernel's memory bridge — no schema required.
|
|
24
|
+
|
|
25
|
+
## License
|
|
26
|
+
|
|
27
|
+
MIT
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "vertical:devops",
|
|
3
|
+
"description": "DevOps incident response harness — 4 agents (responder, runbook, escalator, postmortem), 3 MCP servers (kernel + alerts + runbook-store), opinionated routing rules for on-call workflows",
|
|
4
|
+
"domain": "devops/incident-response",
|
|
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/responder.ts.tmpl", "dst": "src/agents/responder.ts", "render": true },
|
|
12
|
+
{ "src": "src/agents/runbook-runner.ts.tmpl", "dst": "src/agents/runbook-runner.ts", "render": true },
|
|
13
|
+
{ "src": "src/agents/escalator.ts.tmpl", "dst": "src/agents/escalator.ts", "render": true },
|
|
14
|
+
{ "src": "src/agents/postmortem.ts.tmpl", "dst": "src/agents/postmortem.ts", "render": true },
|
|
15
|
+
{ "src": "runbooks/README.md.tmpl", "dst": "runbooks/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": "Incident response with on-call workflows" },
|
|
20
|
+
{ "name": "host", "prompt": "Host adapter", "default": "claude-code", "choices": ["claude-code", "codex", "pi-dev", "hermes"] }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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/**", "runbooks/**", ".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
|
+
"keywords": ["devops", "incident-response", "on-call", "runbooks", "agent-harness"],
|
|
25
|
+
"engines": { "node": ">=20.0.0" }
|
|
26
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Runbooks for {{name}}
|
|
2
|
+
|
|
3
|
+
Drop your team's runbooks in this directory as markdown files. The
|
|
4
|
+
`runbook-runner` agent finds them by semantic search via the kernel's
|
|
5
|
+
memory bridge — no schema required, no registration step.
|
|
6
|
+
|
|
7
|
+
## Convention
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# <Incident name>
|
|
11
|
+
|
|
12
|
+
## Symptoms
|
|
13
|
+
- What you see
|
|
14
|
+
- What metric triggers this
|
|
15
|
+
|
|
16
|
+
## Runbook
|
|
17
|
+
1. First step
|
|
18
|
+
2. Second step
|
|
19
|
+
3. ...
|
|
20
|
+
|
|
21
|
+
## When to escalate
|
|
22
|
+
- Conditions under which the runbook gives up and pages a human
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The semantic-search retriever looks at the `# title`, the `## Symptoms`,
|
|
26
|
+
and the first paragraph of `## Runbook`. Keep those expressive; the
|
|
27
|
+
narrative below can be as detailed as you like.
|
|
28
|
+
|
|
29
|
+
## Versioning
|
|
30
|
+
|
|
31
|
+
Runbooks are versioned with the harness — when you `npm publish`, the
|
|
32
|
+
runbook bundle ships too. Users get your latest runbooks on `npm update`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Escalator agent — decides when to page humans and who.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You are the escalator for {{name}}.
|
|
5
|
+
|
|
6
|
+
You're invoked when the runbook runner can't resolve the incident, or when
|
|
7
|
+
the responder's triage indicates an unknown failure mode. Your job:
|
|
8
|
+
|
|
9
|
+
1. Summarise what's been tried (from session context)
|
|
10
|
+
2. State the blast radius (just one service? multiple? customer-facing?)
|
|
11
|
+
3. Recommend a specific human or team to page, with reasoning
|
|
12
|
+
4. Draft the notification text
|
|
13
|
+
|
|
14
|
+
Don't actually page yet — emit a NOTIFY_INTENT block the kernel routes
|
|
15
|
+
to the notify MCP tool. Wait for human confirmation before the page goes
|
|
16
|
+
out.`;
|
|
17
|
+
|
|
18
|
+
export const NAME = 'escalator';
|
|
19
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Postmortem agent — drafts blameless incident postmortems from the
|
|
3
|
+
// session transcript.
|
|
4
|
+
|
|
5
|
+
export const SYSTEM_PROMPT = `You are the postmortem author for {{name}}.
|
|
6
|
+
|
|
7
|
+
After an incident resolves, you draft a blameless postmortem from the
|
|
8
|
+
session transcript. Required sections:
|
|
9
|
+
|
|
10
|
+
1. Summary (1-2 sentences)
|
|
11
|
+
2. Timeline (UTC, terse)
|
|
12
|
+
3. Impact (users / services / duration)
|
|
13
|
+
4. Root cause (technical)
|
|
14
|
+
5. Contributing factors (process, tooling, communication)
|
|
15
|
+
6. What went well
|
|
16
|
+
7. Action items (each with an owner and a due date)
|
|
17
|
+
|
|
18
|
+
Stay blameless. Name systems, not people. Pull facts from the session
|
|
19
|
+
transcript via the kernel memory bridge — do not invent dates or impact
|
|
20
|
+
numbers.`;
|
|
21
|
+
|
|
22
|
+
export const NAME = 'postmortem';
|
|
23
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Responder agent — first to receive alerts. Triages and identifies the
|
|
3
|
+
// appropriate runbook for the next agent.
|
|
4
|
+
|
|
5
|
+
export const SYSTEM_PROMPT = `You are the on-call responder for {{name}}.
|
|
6
|
+
|
|
7
|
+
Your job: when an alert comes in, identify what's broken, find the matching
|
|
8
|
+
runbook, and hand off to runbook-runner. Do NOT execute remediation
|
|
9
|
+
yourself; you triage and delegate.
|
|
10
|
+
|
|
11
|
+
Stay terse. State: what's broken, what runbook, what to escalate later.`;
|
|
12
|
+
|
|
13
|
+
export const NAME = 'responder';
|
|
14
|
+
export const TIER = 'haiku' as const;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Runbook runner agent — executes runbook steps in order, deliberates
|
|
3
|
+
// (does not auto-execute destructive operations).
|
|
4
|
+
|
|
5
|
+
export const SYSTEM_PROMPT = `You are the runbook runner for {{name}}.
|
|
6
|
+
|
|
7
|
+
The responder handed you a runbook. Execute it step by step. For each step:
|
|
8
|
+
1. State what you'll do
|
|
9
|
+
2. Show the exact command (do not run it yet)
|
|
10
|
+
3. Ask for confirmation if the step is destructive
|
|
11
|
+
4. After execution, report the outcome before moving on
|
|
12
|
+
|
|
13
|
+
NEVER auto-execute: rm, kubectl delete, systemctl stop, drop table.
|
|
14
|
+
Defer to escalator if the runbook doesn't cover what you're seeing.`;
|
|
15
|
+
|
|
16
|
+
export const NAME = 'runbook-runner';
|
|
17
|
+
export const TIER = 'haiku' as const;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// {{name}} init — DevOps incident response harness entry point.
|
|
3
|
+
|
|
4
|
+
import { loadKernel } from '@ruflo/kernel';
|
|
5
|
+
import adapter from '@ruflo/host-{{host}}';
|
|
6
|
+
|
|
7
|
+
const HARNESS_NAME = '{{name}}';
|
|
8
|
+
const ROLE_AGENTS = ['responder', 'runbook-runner', 'escalator', 'postmortem'];
|
|
9
|
+
|
|
10
|
+
async function main(): Promise<number> {
|
|
11
|
+
const kernel = await loadKernel();
|
|
12
|
+
const info = kernel.kernelInfo();
|
|
13
|
+
console.log(`${HARNESS_NAME} — DevOps incident response harness`);
|
|
14
|
+
console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
|
|
15
|
+
console.log(`Agents available: ${ROLE_AGENTS.join(', ')}`);
|
|
16
|
+
console.log('Run `' + HARNESS_NAME + ' doctor` to verify the install.');
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
main().then(c => process.exit(c)).catch(err => {
|
|
21
|
+
console.error(err);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
});
|
|
@@ -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,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Summarise the learner's current mastery map and recommend the next session's focus."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Generate the mastery report.
|
|
6
|
+
|
|
7
|
+
1. Read the full mastery map from memory.
|
|
8
|
+
2. Group concepts as: mastered (>0.85), in-progress (0.5-0.85), shaky (<0.5), and locked (prereq not mastered).
|
|
9
|
+
3. Recommend 1-3 concepts for the next session, with the rationale ("X is in-progress and unlocks 4 downstream concepts").
|
|
10
|
+
4. Flag any concepts where the miss-pattern suggests a deeper conceptual gap rather than rehearsal noise.
|
|
11
|
+
|
|
12
|
+
Write the report; do not start teaching in this command.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npx {{name}}*)",
|
|
5
|
+
"mcp__{{name}}__*",
|
|
6
|
+
"mcp__mastery_log__*",
|
|
7
|
+
"mcp__curriculum__*"
|
|
8
|
+
],
|
|
9
|
+
"deny": [
|
|
10
|
+
"Read(./.env)",
|
|
11
|
+
"Read(./.env.*)",
|
|
12
|
+
"Bash(rm -rf*)",
|
|
13
|
+
"Bash(git push*)"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"mcpServers": {
|
|
17
|
+
"{{name}}": {
|
|
18
|
+
"command": "npx",
|
|
19
|
+
"args": [
|
|
20
|
+
"-y",
|
|
21
|
+
"{{name}}@latest",
|
|
22
|
+
"mcp",
|
|
23
|
+
"start"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"mastery_log": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": [
|
|
29
|
+
"-y",
|
|
30
|
+
"{{name}}@latest",
|
|
31
|
+
"mcp",
|
|
32
|
+
"mastery"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"curriculum": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": [
|
|
38
|
+
"-y",
|
|
39
|
+
"{{name}}@latest",
|
|
40
|
+
"mcp",
|
|
41
|
+
"curriculum"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memory-inspect
|
|
3
|
+
description: Search and inspect the harness memory namespace (HNSW + emergent-time decay).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# memory-inspect
|
|
7
|
+
|
|
8
|
+
Inspect what the harness has learned.
|
|
9
|
+
|
|
10
|
+
- `search <query>` — semantic nearest-neighbour over the namespace
|
|
11
|
+
- `list` — recent patterns with decay weight
|
|
12
|
+
- `forget <id>` — evict a pattern
|
|
13
|
+
|
|
14
|
+
Use this before planning so the harness reuses prior trajectories instead of starting cold.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teach-next
|
|
3
|
+
description: "Run one teaching cycle: pick next concept → explain → quiz → grade → update mastery."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# teach-next
|
|
7
|
+
|
|
8
|
+
Run one complete teaching cycle.
|
|
9
|
+
|
|
10
|
+
1. Tutor reads the mastery map and picks the next concept whose prereqs are mastered.
|
|
11
|
+
2. Explainer teaches it in 3 layers, pausing for "ready to go deeper?" between layers.
|
|
12
|
+
3. Quiz-master generates 3-5 calibrated items mixing recall/apply/transfer.
|
|
13
|
+
4. Grader scores the responses against the hidden rubric and writes mastery memory.
|
|
14
|
+
5. Surface the smallest re-explanation needed for any item the learner missed.
|
|
15
|
+
|
|
16
|
+
Always respect the abstain floor — never invent supporting facts to fill in for a concept the harness doesn't actually know.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
> Education / Tutoring harness · domain: `learning`. 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
|
+
| `tutor` | sonnet | Picks the next concept to teach from the learner's mastery map. |
|
|
18
|
+
| `explainer` | sonnet | Explains the picked concept at the right depth. |
|
|
19
|
+
| `quiz-master` | haiku | Generates calibrated quiz items. |
|
|
20
|
+
| `grader` | sonnet | Grades open-ended responses against the hidden rubric. |
|
|
21
|
+
## Skills
|
|
22
|
+
|
|
23
|
+
- `/memory-inspect` — Search and inspect the harness memory namespace (HNSW + emergent-time decay).
|
|
24
|
+
- `/teach-next` — Run one teaching cycle: pick next concept → explain → quiz → grade → update mastery.
|
|
25
|
+
|
|
26
|
+
## Commands
|
|
27
|
+
|
|
28
|
+
- `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
|
|
29
|
+
- `mastery-report` — Summarise the learner's current mastery map and recommend the next session's focus.
|
|
30
|
+
|
|
31
|
+
## Architecture
|
|
32
|
+
|
|
33
|
+
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,30 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
> **Education / Tutoring** — Tutor → explain → quiz → grade, over per-learner mastery memory with an abstain-not-hallucinate policy.
|
|
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
|
+
| `tutor` | Picks the next concept to teach from the learner's mastery map. |
|
|
22
|
+
| `explainer` | Explains the picked concept at the right depth. |
|
|
23
|
+
| `quiz-master` | Generates calibrated quiz items. |
|
|
24
|
+
| `grader` | Grades open-ended responses against the hidden rubric. |
|
|
25
|
+
|
|
26
|
+
This harness ships with the **{{host}}** adapter.
|
|
27
|
+
|
|
28
|
+
## License
|
|
29
|
+
|
|
30
|
+
MIT
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "vertical:education",
|
|
3
|
+
"description": "A tutoring pod — tutor, explainer, quiz-master, grader over a per-learner mastery memory.",
|
|
4
|
+
"domain": "learning",
|
|
5
|
+
"category": "Knowledge",
|
|
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/tutor.ts.tmpl",
|
|
34
|
+
"dst": "src/agents/tutor.ts",
|
|
35
|
+
"render": true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"src": "src/agents/explainer.ts.tmpl",
|
|
39
|
+
"dst": "src/agents/explainer.ts",
|
|
40
|
+
"render": true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"src": "src/agents/quiz-master.ts.tmpl",
|
|
44
|
+
"dst": "src/agents/quiz-master.ts",
|
|
45
|
+
"render": true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"src": "src/agents/grader.ts.tmpl",
|
|
49
|
+
"dst": "src/agents/grader.ts",
|
|
50
|
+
"render": true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"src": ".claude/skills/memory-inspect/SKILL.md.tmpl",
|
|
54
|
+
"dst": ".claude/skills/memory-inspect/SKILL.md",
|
|
55
|
+
"render": true
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"src": ".claude/skills/teach-next/SKILL.md.tmpl",
|
|
59
|
+
"dst": ".claude/skills/teach-next/SKILL.md",
|
|
60
|
+
"render": true
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"src": ".claude/commands/doctor.md.tmpl",
|
|
64
|
+
"dst": ".claude/commands/doctor.md",
|
|
65
|
+
"render": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"src": ".claude/commands/mastery-report.md.tmpl",
|
|
69
|
+
"dst": ".claude/commands/mastery-report.md",
|
|
70
|
+
"render": true
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"vars": [
|
|
74
|
+
{
|
|
75
|
+
"name": "name",
|
|
76
|
+
"prompt": "Harness name (kebab-case)",
|
|
77
|
+
"validate": "^[a-z0-9-]+$"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "description",
|
|
81
|
+
"prompt": "One-line description",
|
|
82
|
+
"default": "Tutor → explain → quiz → grade with adaptive depth and a \"say I do not know\" floor"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "host",
|
|
86
|
+
"prompt": "Host adapter",
|
|
87
|
+
"default": "claude-code",
|
|
88
|
+
"choices": [
|
|
89
|
+
"claude-code",
|
|
90
|
+
"codex",
|
|
91
|
+
"pi-dev",
|
|
92
|
+
"hermes"
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
@@ -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
|
+
// Explainer agent — Explains the picked concept at the right depth.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You explain the concept the tutor picked. Start from the analogy or example most likely to land given the learner's prior masteries. Build the new concept in three layers: the one-line intuition, the worked example, then the formal statement. Stop after each layer and ask if the learner is ready to go deeper — never dump all three at once. If you do not know, say so; do not invent supporting "facts". You operate inside the {{name}} harness; defer destructive actions to the user.`;
|
|
5
|
+
|
|
6
|
+
export const NAME = 'explainer';
|
|
7
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Grader agent — Grades open-ended responses against the hidden rubric.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You grade the learner's response against the rubric the quiz-master attached. Award partial credit for correct reasoning that misses the bottom line; deduct for the answer-by-pattern-match without the reasoning. Write to mastery memory: concept, item id, score, miss pattern, and the smallest re-explanation the explainer would give to close the gap. Be the encouraging-but-honest voice. You operate inside the {{name}} harness; defer destructive actions to the user.`;
|
|
5
|
+
|
|
6
|
+
export const NAME = 'grader';
|
|
7
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Quiz Master agent — Generates calibrated quiz items.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You generate quiz items targeted at the concept just taught. One concept per item; mix recall, application, and transfer in 1:2:1 ratio. Calibrate difficulty using the learner's previous miss rate in memory — too easy is noise, too hard is demoralising. Every item carries a hidden rubric the grader will use; never reveal the rubric to the learner. You operate inside the {{name}} harness; defer destructive actions to the user.`;
|
|
5
|
+
|
|
6
|
+
export const NAME = 'quiz-master';
|
|
7
|
+
export const TIER = 'haiku' as const;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Tutor agent — Picks the next concept to teach from the learner's mastery map.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You are the tutor. Read the learner's mastery map from memory and pick the next concept whose prerequisites are mastered but the concept itself is not. State the goal in one sentence the learner can hold in their head. Never teach something whose prerequisite is unmastered — fix the prerequisite first. Adapt depth to the learner's grade level and stated style preferences in memory. You operate inside the {{name}} harness; defer destructive actions to the user.`;
|
|
5
|
+
|
|
6
|
+
export const NAME = 'tutor';
|
|
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,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.
|