@metaharness/education 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 +71 -0
- package/bin/scaffold.mjs +29 -0
- package/package.json +41 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rUv
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# MetaHarness: education vertical
|
|
2
|
+
|
|
3
|
+
A ready-made Claude Code scaffold for a multi-agent tutoring pod. You get a planner that sequences a curriculum, a tutor that delivers lessons and answers questions, and a grader that checks understanding with rubric-backed feedback — all wired into Claude Code with sensible model tiers, memory, and slash commands. This is a starting template for educators, EdTech prototypers, and self-learners building a focused study companion. It is not a full LMS, not a content library, and does not ship pre-built curricula — you bring the syllabus, the pod runs the lessons.
|
|
4
|
+
|
|
5
|
+
## Quickstart
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @metaharness/education@latest my-bot
|
|
9
|
+
cd my-bot && npm install && harness doctor
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
That produces a `my-bot/` directory containing a Claude Code plugin: agents under `.claude/agents/`, slash commands under `.claude/commands/`, MCP wiring under `.mcp.json`, and a `harness.config.json` describing the pod.
|
|
13
|
+
|
|
14
|
+
## What you get
|
|
15
|
+
|
|
16
|
+
- `planner` agent (sonnet) — parses a syllabus, builds a lesson sequence, tracks where each learner is in the curriculum.
|
|
17
|
+
- `tutor` agent (sonnet) — runs the actual lesson turn: explains concepts, answers follow-ups, adapts depth to the learner's level.
|
|
18
|
+
- `grader` agent (opus) — scores free-response answers against a rubric and produces actionable feedback.
|
|
19
|
+
- `drill` agent (haiku) — generates flashcards, quick-check questions, and spaced-repetition prompts. Cheap, high-volume.
|
|
20
|
+
- `/lesson`, `/quiz`, `/review` slash commands wired to the pod.
|
|
21
|
+
- `.mcp.json` registering the curriculum store and progress-tracking MCP servers.
|
|
22
|
+
- `harness.config.json` describing tiers, routing rules, and the agent graph.
|
|
23
|
+
|
|
24
|
+
## Advanced
|
|
25
|
+
|
|
26
|
+
Verify the scaffold:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
harness doctor
|
|
30
|
+
# ✓ node >= 20
|
|
31
|
+
# ✓ .claude/agents (4 agents)
|
|
32
|
+
# ✓ .claude/commands (3 commands)
|
|
33
|
+
# ✓ .mcp.json valid
|
|
34
|
+
# ✓ harness.config.json schema OK
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Validate the agent graph and routing rules:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
harness validate
|
|
41
|
+
# planner -> tutor -> grader OK
|
|
42
|
+
# drill (parallel) OK
|
|
43
|
+
# no orphan agents OK
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Smoke-test the pod headlessly without launching the interactive UI:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
claude -p --plugin-dir my-bot "Teach me the chain rule, then quiz me."
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Swap a tier — for example, demote the tutor to haiku for cost-sensitive deployments — by editing `harness.config.json` and re-running `harness validate`.
|
|
53
|
+
|
|
54
|
+
## FAQ
|
|
55
|
+
|
|
56
|
+
**Q: Do I need a curriculum file to start?**
|
|
57
|
+
A: No. The planner will accept a topic ("teach me linear algebra") and synthesize a working sequence. Drop a `curriculum.md` in the project root to override.
|
|
58
|
+
|
|
59
|
+
**Q: Can I use it with a model other than Claude?**
|
|
60
|
+
A: The scaffold targets `claude-code` as the host. You can re-point individual agents at other providers via the agent frontmatter, but slash commands and MCP wiring assume Claude Code.
|
|
61
|
+
|
|
62
|
+
**Q: How is learner state persisted?**
|
|
63
|
+
A: Progress goes through the MCP server defined in `.mcp.json` — by default a local SQLite-backed store under `.harness/`. Replace it with your own server if you want server-side state.
|
|
64
|
+
|
|
65
|
+
## License
|
|
66
|
+
|
|
67
|
+
MIT. Built on metaharness (https://www.npmjs.com/package/metaharness).
|
|
68
|
+
|
|
69
|
+
## Deep-dive
|
|
70
|
+
|
|
71
|
+
Full explainer gist: https://gist.github.com/ruvnet/c459b1590580a91bee8cc879140196c6
|
package/bin/scaffold.mjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
|
|
5
|
+
const name = process.argv[2] || 'my-bot';
|
|
6
|
+
const extra = process.argv.slice(3);
|
|
7
|
+
|
|
8
|
+
const args = [
|
|
9
|
+
'--yes',
|
|
10
|
+
'metaharness@latest',
|
|
11
|
+
name,
|
|
12
|
+
'--template', 'vertical:education',
|
|
13
|
+
'--host', 'claude-code',
|
|
14
|
+
'--force',
|
|
15
|
+
...extra,
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
execSync(`npx ${args.map(a => (a.includes(' ') ? JSON.stringify(a) : a)).join(' ')}`, {
|
|
20
|
+
stdio: 'inherit',
|
|
21
|
+
});
|
|
22
|
+
} catch (err) {
|
|
23
|
+
process.exit(typeof err?.status === 'number' ? err.status : 1);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
console.log('');
|
|
27
|
+
console.log(`Next steps:`);
|
|
28
|
+
console.log(` cd ${name} && npm install`);
|
|
29
|
+
console.log(` harness doctor && claude -p --plugin-dir . "Teach me the chain rule"`);
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@metaharness/education",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MetaHarness example — tutor pod that teaches over a curriculum with planner, tutor, and grader agents (npx @metaharness/education my-bot)",
|
|
5
|
+
"homepage": "https://github.com/ruvnet/agent-harness-generator/tree/main/examples-packages/education",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/ruvnet/agent-harness-generator.git",
|
|
9
|
+
"directory": "examples-packages/education"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"author": "rUv <ruv@ruv.net>",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"bin": "./bin/scaffold.mjs",
|
|
15
|
+
"files": [
|
|
16
|
+
"bin/**",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"smoke": "node --check bin/scaffold.mjs"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"metaharness",
|
|
25
|
+
"agent-harness",
|
|
26
|
+
"agent-harness-generator",
|
|
27
|
+
"education",
|
|
28
|
+
"vertical",
|
|
29
|
+
"claude-code",
|
|
30
|
+
"ai-agent",
|
|
31
|
+
"mcp",
|
|
32
|
+
"npx",
|
|
33
|
+
"scaffold"
|
|
34
|
+
],
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=20.0.0"
|
|
40
|
+
}
|
|
41
|
+
}
|