@katyella/legio 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/CHANGELOG.md +422 -0
- package/LICENSE +21 -0
- package/README.md +555 -0
- package/agents/builder.md +141 -0
- package/agents/coordinator.md +351 -0
- package/agents/cto.md +196 -0
- package/agents/gateway.md +276 -0
- package/agents/lead.md +281 -0
- package/agents/merger.md +156 -0
- package/agents/monitor.md +212 -0
- package/agents/reviewer.md +142 -0
- package/agents/scout.md +131 -0
- package/agents/supervisor.md +416 -0
- package/bin/legio.mjs +38 -0
- package/package.json +77 -0
- package/src/agents/checkpoint.test.ts +88 -0
- package/src/agents/checkpoint.ts +102 -0
- package/src/agents/hooks-deployer.test.ts +1820 -0
- package/src/agents/hooks-deployer.ts +574 -0
- package/src/agents/identity.test.ts +614 -0
- package/src/agents/identity.ts +385 -0
- package/src/agents/lifecycle.test.ts +202 -0
- package/src/agents/lifecycle.ts +184 -0
- package/src/agents/manifest.test.ts +558 -0
- package/src/agents/manifest.ts +297 -0
- package/src/agents/overlay.test.ts +592 -0
- package/src/agents/overlay.ts +316 -0
- package/src/beads/client.test.ts +210 -0
- package/src/beads/client.ts +227 -0
- package/src/beads/molecules.test.ts +320 -0
- package/src/beads/molecules.ts +209 -0
- package/src/commands/agents.test.ts +325 -0
- package/src/commands/agents.ts +286 -0
- package/src/commands/clean.test.ts +730 -0
- package/src/commands/clean.ts +653 -0
- package/src/commands/completions.test.ts +346 -0
- package/src/commands/completions.ts +950 -0
- package/src/commands/coordinator.test.ts +1524 -0
- package/src/commands/coordinator.ts +880 -0
- package/src/commands/costs.test.ts +1015 -0
- package/src/commands/costs.ts +473 -0
- package/src/commands/dashboard.test.ts +94 -0
- package/src/commands/dashboard.ts +607 -0
- package/src/commands/doctor.test.ts +295 -0
- package/src/commands/doctor.ts +213 -0
- package/src/commands/down.test.ts +308 -0
- package/src/commands/down.ts +124 -0
- package/src/commands/errors.test.ts +648 -0
- package/src/commands/errors.ts +255 -0
- package/src/commands/feed.test.ts +579 -0
- package/src/commands/feed.ts +368 -0
- package/src/commands/gateway.test.ts +698 -0
- package/src/commands/gateway.ts +419 -0
- package/src/commands/group.test.ts +262 -0
- package/src/commands/group.ts +539 -0
- package/src/commands/hooks.test.ts +292 -0
- package/src/commands/hooks.ts +210 -0
- package/src/commands/init.test.ts +211 -0
- package/src/commands/init.ts +622 -0
- package/src/commands/inspect.test.ts +670 -0
- package/src/commands/inspect.ts +455 -0
- package/src/commands/log.test.ts +1556 -0
- package/src/commands/log.ts +752 -0
- package/src/commands/logs.test.ts +379 -0
- package/src/commands/logs.ts +544 -0
- package/src/commands/mail.test.ts +1726 -0
- package/src/commands/mail.ts +926 -0
- package/src/commands/merge.test.ts +676 -0
- package/src/commands/merge.ts +374 -0
- package/src/commands/metrics.test.ts +444 -0
- package/src/commands/metrics.ts +150 -0
- package/src/commands/monitor.test.ts +151 -0
- package/src/commands/monitor.ts +394 -0
- package/src/commands/nudge.test.ts +230 -0
- package/src/commands/nudge.ts +373 -0
- package/src/commands/prime.test.ts +467 -0
- package/src/commands/prime.ts +386 -0
- package/src/commands/replay.test.ts +742 -0
- package/src/commands/replay.ts +367 -0
- package/src/commands/run.test.ts +443 -0
- package/src/commands/run.ts +365 -0
- package/src/commands/server.test.ts +626 -0
- package/src/commands/server.ts +298 -0
- package/src/commands/sling.test.ts +810 -0
- package/src/commands/sling.ts +700 -0
- package/src/commands/spec.test.ts +206 -0
- package/src/commands/spec.ts +171 -0
- package/src/commands/status.test.ts +276 -0
- package/src/commands/status.ts +339 -0
- package/src/commands/stop.test.ts +357 -0
- package/src/commands/stop.ts +119 -0
- package/src/commands/supervisor.test.ts +186 -0
- package/src/commands/supervisor.ts +544 -0
- package/src/commands/trace.test.ts +746 -0
- package/src/commands/trace.ts +332 -0
- package/src/commands/up.test.ts +597 -0
- package/src/commands/up.ts +275 -0
- package/src/commands/watch.test.ts +152 -0
- package/src/commands/watch.ts +238 -0
- package/src/commands/worktree.test.ts +648 -0
- package/src/commands/worktree.ts +266 -0
- package/src/config.test.ts +496 -0
- package/src/config.ts +616 -0
- package/src/doctor/agents.test.ts +448 -0
- package/src/doctor/agents.ts +396 -0
- package/src/doctor/config-check.test.ts +184 -0
- package/src/doctor/config-check.ts +185 -0
- package/src/doctor/consistency.test.ts +645 -0
- package/src/doctor/consistency.ts +294 -0
- package/src/doctor/databases.test.ts +284 -0
- package/src/doctor/databases.ts +211 -0
- package/src/doctor/dependencies.test.ts +150 -0
- package/src/doctor/dependencies.ts +179 -0
- package/src/doctor/logs.test.ts +244 -0
- package/src/doctor/logs.ts +295 -0
- package/src/doctor/merge-queue.test.ts +210 -0
- package/src/doctor/merge-queue.ts +144 -0
- package/src/doctor/structure.test.ts +285 -0
- package/src/doctor/structure.ts +195 -0
- package/src/doctor/types.ts +37 -0
- package/src/doctor/version.test.ts +130 -0
- package/src/doctor/version.ts +131 -0
- package/src/e2e/chat-flow.test.ts +346 -0
- package/src/e2e/init-sling-lifecycle.test.ts +288 -0
- package/src/errors.test.ts +21 -0
- package/src/errors.ts +246 -0
- package/src/events/store.test.ts +660 -0
- package/src/events/store.ts +344 -0
- package/src/events/tool-filter.test.ts +330 -0
- package/src/events/tool-filter.ts +126 -0
- package/src/global-setup.ts +14 -0
- package/src/index.ts +339 -0
- package/src/insights/analyzer.test.ts +466 -0
- package/src/insights/analyzer.ts +203 -0
- package/src/logging/color.test.ts +118 -0
- package/src/logging/color.ts +71 -0
- package/src/logging/logger.test.ts +812 -0
- package/src/logging/logger.ts +266 -0
- package/src/logging/reporter.test.ts +258 -0
- package/src/logging/reporter.ts +109 -0
- package/src/logging/sanitizer.test.ts +190 -0
- package/src/logging/sanitizer.ts +57 -0
- package/src/mail/broadcast.test.ts +203 -0
- package/src/mail/broadcast.ts +92 -0
- package/src/mail/client.test.ts +873 -0
- package/src/mail/client.ts +236 -0
- package/src/mail/store.test.ts +815 -0
- package/src/mail/store.ts +402 -0
- package/src/merge/queue.test.ts +449 -0
- package/src/merge/queue.ts +262 -0
- package/src/merge/resolver.test.ts +1453 -0
- package/src/merge/resolver.ts +759 -0
- package/src/metrics/store.test.ts +1167 -0
- package/src/metrics/store.ts +511 -0
- package/src/metrics/summary.test.ts +397 -0
- package/src/metrics/summary.ts +178 -0
- package/src/metrics/transcript.test.ts +643 -0
- package/src/metrics/transcript.ts +351 -0
- package/src/mulch/client.test.ts +547 -0
- package/src/mulch/client.ts +416 -0
- package/src/server/audit-store.test.ts +384 -0
- package/src/server/audit-store.ts +257 -0
- package/src/server/headless.test.ts +180 -0
- package/src/server/headless.ts +151 -0
- package/src/server/index.test.ts +241 -0
- package/src/server/index.ts +317 -0
- package/src/server/public/app.js +187 -0
- package/src/server/public/apple-touch-icon.png +0 -0
- package/src/server/public/components/agent-badge.js +37 -0
- package/src/server/public/components/data-table.js +114 -0
- package/src/server/public/components/gateway-chat.js +256 -0
- package/src/server/public/components/issue-card.js +96 -0
- package/src/server/public/components/layout.js +88 -0
- package/src/server/public/components/message-bubble.js +120 -0
- package/src/server/public/components/stat-card.js +26 -0
- package/src/server/public/components/terminal-panel.js +140 -0
- package/src/server/public/favicon-16.png +0 -0
- package/src/server/public/favicon-32.png +0 -0
- package/src/server/public/favicon.ico +0 -0
- package/src/server/public/favicon.png +0 -0
- package/src/server/public/index.html +64 -0
- package/src/server/public/lib/api.js +35 -0
- package/src/server/public/lib/markdown.js +8 -0
- package/src/server/public/lib/preact-setup.js +8 -0
- package/src/server/public/lib/state.js +99 -0
- package/src/server/public/lib/utils.js +309 -0
- package/src/server/public/lib/ws.js +79 -0
- package/src/server/public/views/chat.js +983 -0
- package/src/server/public/views/costs.js +692 -0
- package/src/server/public/views/dashboard.js +781 -0
- package/src/server/public/views/gateway-chat.js +622 -0
- package/src/server/public/views/inspect.js +399 -0
- package/src/server/public/views/issues.js +470 -0
- package/src/server/public/views/setup.js +94 -0
- package/src/server/public/views/task-detail.js +422 -0
- package/src/server/routes.test.ts +3816 -0
- package/src/server/routes.ts +1964 -0
- package/src/server/websocket.test.ts +288 -0
- package/src/server/websocket.ts +196 -0
- package/src/sessions/compat.test.ts +109 -0
- package/src/sessions/compat.ts +17 -0
- package/src/sessions/store.test.ts +969 -0
- package/src/sessions/store.ts +480 -0
- package/src/test-helpers.test.ts +97 -0
- package/src/test-helpers.ts +143 -0
- package/src/types.ts +708 -0
- package/src/watchdog/daemon.test.ts +1233 -0
- package/src/watchdog/daemon.ts +533 -0
- package/src/watchdog/health.test.ts +371 -0
- package/src/watchdog/health.ts +248 -0
- package/src/watchdog/triage.test.ts +162 -0
- package/src/watchdog/triage.ts +193 -0
- package/src/worktree/manager.test.ts +444 -0
- package/src/worktree/manager.ts +224 -0
- package/src/worktree/tmux.test.ts +1238 -0
- package/src/worktree/tmux.ts +644 -0
- package/templates/CLAUDE.md.tmpl +89 -0
- package/templates/hooks.json.tmpl +132 -0
- package/templates/overlay.md.tmpl +79 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# {{PROJECT_NAME}} — Legio Orchestration
|
|
2
|
+
|
|
3
|
+
> Auto-generated by `legio init`. You may edit this file.
|
|
4
|
+
|
|
5
|
+
This project uses **legio** for Claude Code agent orchestration. Your session
|
|
6
|
+
acts as the orchestrator: you decide what work to delegate, spawn worker agents,
|
|
7
|
+
monitor progress, and merge results.
|
|
8
|
+
|
|
9
|
+
## Quick Reference
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Spawn a worker agent
|
|
13
|
+
legio sling <bead-id> --capability <type> --name <agent-name> \
|
|
14
|
+
[--spec <path>] [--files file1,file2] [--parent <agent>] [--depth <n>]
|
|
15
|
+
|
|
16
|
+
# Check system status
|
|
17
|
+
legio status # Overview of all agents, worktrees, beads
|
|
18
|
+
legio status --json # Machine-readable output
|
|
19
|
+
legio status --watch # Live updating
|
|
20
|
+
|
|
21
|
+
# Messaging (SQLite-backed, ~1-5ms per query)
|
|
22
|
+
legio mail send --to <agent> --subject "..." --body "..."
|
|
23
|
+
legio mail check # Your inbox
|
|
24
|
+
legio mail list --unread # All unread messages
|
|
25
|
+
legio mail reply <id> --body "..."
|
|
26
|
+
|
|
27
|
+
# Merge completed work
|
|
28
|
+
legio merge --branch <name> # Merge a specific branch
|
|
29
|
+
legio merge --all # Merge all completed branches
|
|
30
|
+
legio merge --dry-run --branch <name> # Preview conflicts
|
|
31
|
+
|
|
32
|
+
# Worktree management
|
|
33
|
+
legio worktree list # Show all worktrees with status
|
|
34
|
+
legio worktree clean --completed # Remove finished worktrees
|
|
35
|
+
|
|
36
|
+
# Context and monitoring
|
|
37
|
+
legio prime # Reload context (config, mulch, recent activity)
|
|
38
|
+
legio watch --background # Start watchdog daemon
|
|
39
|
+
legio metrics # Performance summary
|
|
40
|
+
legio log <event> --agent <name> # Hook-driven event logging
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## How to Spawn Agents
|
|
44
|
+
|
|
45
|
+
1. Identify the work using beads: `bd ready` or `bd create "task title"`
|
|
46
|
+
2. Choose a capability based on the task:
|
|
47
|
+
{{AGENT_DEFINITIONS}}
|
|
48
|
+
3. Assign exclusive file scope so agents do not conflict
|
|
49
|
+
4. Spawn: `legio sling <bead-id> --capability <type> --name <unique-name> --files src/foo.ts,src/bar.ts`
|
|
50
|
+
|
|
51
|
+
Each spawned agent gets its own git worktree, branch, CLAUDE.md overlay, and
|
|
52
|
+
tmux session. Agents communicate via `legio mail` and report completion
|
|
53
|
+
by closing their beads issue (`bd close <id> --reason "summary"`).
|
|
54
|
+
|
|
55
|
+
## Hierarchical Delegation
|
|
56
|
+
|
|
57
|
+
You can spawn **team leads** that themselves spawn sub-workers:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Orchestrator (this session)
|
|
61
|
+
└── legio sling bd-xyz --capability lead --name build-lead
|
|
62
|
+
├── legio sling bd-abc --capability builder --name auth-login
|
|
63
|
+
├── legio sling bd-def --capability builder --name auth-signup
|
|
64
|
+
└── legio sling bd-ghi --capability builder --name auth-reset
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Depth limit is configurable (default: 2). Leads use `--parent` and `--depth`
|
|
68
|
+
to track hierarchy.
|
|
69
|
+
|
|
70
|
+
## Checking Status
|
|
71
|
+
|
|
72
|
+
Run `legio status` to see:
|
|
73
|
+
- Active agents and their states (booting, working, stalled, zombie)
|
|
74
|
+
- Worktree locations and branches
|
|
75
|
+
- Beads issue progress
|
|
76
|
+
- Unread mail count
|
|
77
|
+
|
|
78
|
+
## Canonical Branch
|
|
79
|
+
|
|
80
|
+
All merges target **{{CANONICAL_BRANCH}}**. Agents work on branches named
|
|
81
|
+
`legio/<agent-name>/<bead-id>`. Never push directly to {{CANONICAL_BRANCH}}.
|
|
82
|
+
|
|
83
|
+
## Conventions
|
|
84
|
+
|
|
85
|
+
- Agents own files exclusively — no two agents modify the same file
|
|
86
|
+
- Use `legio mail` for all inter-agent communication (not beads)
|
|
87
|
+
- Use `bd close` to report task completion (not mail)
|
|
88
|
+
- Merge via `legio merge`, not raw `git merge`
|
|
89
|
+
- Logs live in `.legio/logs/` — never delete them manually
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio prime --agent {{AGENT_NAME}}"
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"UserPromptSubmit": [
|
|
15
|
+
{
|
|
16
|
+
"matcher": "",
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio mail check --inject --agent {{AGENT_NAME}}"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"PreToolUse": [
|
|
26
|
+
{
|
|
27
|
+
"matcher": "AskUserQuestion",
|
|
28
|
+
"hooks": [
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; echo '{\"decision\":\"block\",\"reason\":\"Legio agents run non-interactively — use legio mail send --type question to ask your parent instead\"}'"
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"matcher": "EnterPlanMode",
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; echo '{\"decision\":\"block\",\"reason\":\"Legio agents run non-interactively — execute immediately per the propulsion principle\"}'"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"matcher": "EnterWorktree",
|
|
46
|
+
"hooks": [
|
|
47
|
+
{
|
|
48
|
+
"type": "command",
|
|
49
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; echo '{\"decision\":\"block\",\"reason\":\"Legio agents already have assigned worktrees — nested worktrees are not allowed\"}'"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"matcher": "Bash",
|
|
55
|
+
"hooks": [
|
|
56
|
+
{
|
|
57
|
+
"type": "command",
|
|
58
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; read -r INPUT; CMD=$(echo \"$INPUT\" | sed 's/.*\"command\": *\"\\([^\"]*\\)\".*/\\1/'); if echo \"$CMD\" | grep -qE '\\bgit\\s+push\\b'; then echo '{\"decision\":\"block\",\"reason\":\"git push is blocked — use legio merge to integrate changes, push manually when ready\"}'; exit 0; fi;"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"matcher": "",
|
|
64
|
+
"hooks": [
|
|
65
|
+
{
|
|
66
|
+
"type": "command",
|
|
67
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio log tool-start --agent {{AGENT_NAME}} --stdin"
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"PostToolUse": [
|
|
73
|
+
{
|
|
74
|
+
"matcher": "",
|
|
75
|
+
"hooks": [
|
|
76
|
+
{
|
|
77
|
+
"type": "command",
|
|
78
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio log tool-end --agent {{AGENT_NAME}} --stdin"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "command",
|
|
82
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio mail check --inject --agent {{AGENT_NAME}} --debounce 500"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"matcher": "",
|
|
88
|
+
"hooks": [
|
|
89
|
+
{
|
|
90
|
+
"type": "command",
|
|
91
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio mail check --inject --agent {{AGENT_NAME}} --debounce 30000"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"matcher": "Bash",
|
|
97
|
+
"hooks": [
|
|
98
|
+
{
|
|
99
|
+
"type": "command",
|
|
100
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; read -r INPUT; CMD=$(echo \"$INPUT\" | sed 's/.*\"command\": *\"\\([^\"]*\\)\".*/\\1/'); if echo \"$CMD\" | grep -qE '\\bgit\\s+commit\\b'; then mulch diff HEAD~1; fi;"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"Stop": [
|
|
106
|
+
{
|
|
107
|
+
"matcher": "",
|
|
108
|
+
"hooks": [
|
|
109
|
+
{
|
|
110
|
+
"type": "command",
|
|
111
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio log session-end --agent {{AGENT_NAME}} --stdin"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"type": "command",
|
|
115
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; mulch learn"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"PreCompact": [
|
|
121
|
+
{
|
|
122
|
+
"matcher": "",
|
|
123
|
+
"hooks": [
|
|
124
|
+
{
|
|
125
|
+
"type": "command",
|
|
126
|
+
"command": "[ -z \"$LEGIO_AGENT_NAME\" ] && exit 0; legio prime --agent {{AGENT_NAME}} --compact"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# DO NOT EDIT — Auto-generated by legio
|
|
2
|
+
# This overlay was written by `legio sling`. Manual edits will be
|
|
3
|
+
# overwritten on the next spawn. Modify the template at
|
|
4
|
+
# templates/overlay.md.tmpl in the legio repo instead.
|
|
5
|
+
|
|
6
|
+
{{BASE_DEFINITION}}
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Your Assignment
|
|
11
|
+
|
|
12
|
+
- **Agent Name:** {{AGENT_NAME}}
|
|
13
|
+
- **Task ID:** {{BEAD_ID}}
|
|
14
|
+
- **Spec:** {{SPEC_PATH}}
|
|
15
|
+
- **Branch:** {{BRANCH_NAME}}
|
|
16
|
+
- **Worktree:** {{WORKTREE_PATH}}
|
|
17
|
+
- **Parent:** {{PARENT_AGENT}}
|
|
18
|
+
- **Depth:** {{DEPTH}}
|
|
19
|
+
|
|
20
|
+
{{SPEC_INSTRUCTION}}
|
|
21
|
+
|
|
22
|
+
## Working Directory
|
|
23
|
+
|
|
24
|
+
Your worktree root is: `{{WORKTREE_PATH}}`
|
|
25
|
+
|
|
26
|
+
**CRITICAL**: All file operations MUST use paths within this directory.
|
|
27
|
+
- Use paths relative to your worktree root, or absolute paths starting with `{{WORKTREE_PATH}}`
|
|
28
|
+
- Writing to the canonical repo root instead of your worktree is a critical error (PATH_BOUNDARY_VIOLATION)
|
|
29
|
+
- You may READ files from the canonical repo for context, but all WRITES go to your worktree
|
|
30
|
+
|
|
31
|
+
## File Scope (exclusive ownership)
|
|
32
|
+
|
|
33
|
+
These paths are relative to your worktree root: `{{WORKTREE_PATH}}`
|
|
34
|
+
|
|
35
|
+
You may ONLY modify the files listed below within your worktree. Do not touch any other files.
|
|
36
|
+
If you need changes outside your scope, send mail to your parent agent
|
|
37
|
+
requesting the modification.
|
|
38
|
+
|
|
39
|
+
{{FILE_SCOPE}}
|
|
40
|
+
|
|
41
|
+
## Expertise
|
|
42
|
+
|
|
43
|
+
Prime relevant domain knowledge before starting work:
|
|
44
|
+
|
|
45
|
+
{{MULCH_DOMAINS}}
|
|
46
|
+
|
|
47
|
+
{{MULCH_EXPERTISE}}
|
|
48
|
+
|
|
49
|
+
## Communication
|
|
50
|
+
|
|
51
|
+
Use `legio mail` for all communication. Your address is **{{AGENT_NAME}}**.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Check your inbox (mail arrives automatically via hooks — only use this if you suspect a missed delivery)
|
|
55
|
+
legio mail check --agent {{AGENT_NAME}}
|
|
56
|
+
|
|
57
|
+
# Send a status update to your parent
|
|
58
|
+
legio mail send --to {{PARENT_AGENT}} --subject "status" \
|
|
59
|
+
--body "Progress update here" --type status --agent {{AGENT_NAME}}
|
|
60
|
+
|
|
61
|
+
# Ask a question
|
|
62
|
+
legio mail send --to {{PARENT_AGENT}} --subject "question" \
|
|
63
|
+
--body "Your question here" --type question --priority high --agent {{AGENT_NAME}}
|
|
64
|
+
|
|
65
|
+
# Report completion
|
|
66
|
+
legio mail send --to {{PARENT_AGENT}} --subject "done" \
|
|
67
|
+
--body "Summary of what was done" --type result --agent {{AGENT_NAME}}
|
|
68
|
+
|
|
69
|
+
# Reply to a message
|
|
70
|
+
legio mail reply <message-id> --body "Your reply" --agent {{AGENT_NAME}}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Spawning Sub-Workers
|
|
74
|
+
|
|
75
|
+
{{CAN_SPAWN}}
|
|
76
|
+
|
|
77
|
+
{{QUALITY_GATES}}
|
|
78
|
+
|
|
79
|
+
{{CONSTRAINTS}}
|