feat: add the tea-runner execution agent
The skills carry meaning, the scripts carry work. Splitting the second half onto a cheap model keeps the main session's context for the part that needs judgement. tea-runner is a Haiku subagent with Bash/Read/Grep/Glob/Skill and nothing else. It loads /tea:sync or /tea:issue for the command table rather than carrying its own copy, so the skills stay the single source of truth for the script surface. It executes and reports; it decides nothing. No Edit and no Write, so an issue body is out of reach. No raw tea, no --force, no closing or retitling, no pushing past the set it was handed, one retry maximum. A failed validation, a missing type, an unpushed dependency come back as a question in a `blocked:` line. The reply is a fixed receipt — commands with ok/FAIL, touched paths, stderr verbatim — never a payload dump. Knowledge still flows one way: nothing under skills/ knows the agent exists, and deleting agents/ changes nothing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,9 @@ skills/sync BRIDGE map.py md <-> Gitea JSON, pure functions, no I/O
|
||||
_gitea.py login pin, tea api, pagination, filters
|
||||
skills/use REFERENCE tea CLI docs for everything that is not an issue
|
||||
skills/auth IDENTITY pin the login the whole tracker side runs under
|
||||
▲
|
||||
│ calls
|
||||
agents/ EXECUTION tea-runner: runs the scripts, reports a receipt
|
||||
```
|
||||
|
||||
`skills/issue` never imports from `skills/sync`. Delete `skills/sync` and the
|
||||
@@ -56,6 +59,12 @@ the domain layer, it is in the wrong place.
|
||||
- `scripts/pull.py`, `push.py`, `remote.py`, `comment.py`
|
||||
- `skills/use` — `tea` CLI reference for everything that is not an issue
|
||||
(`/tea:use`); `references/tea/` holds the command docs
|
||||
- `agents/tea-runner.md` — subagent on Haiku that executes the scripts and
|
||||
returns a compact receipt. Delegate batches (bulk pull, push a named set,
|
||||
bootstrap labels, rebuild the index), never the thinking: it has no `Edit`
|
||||
and no `Write`, may not `--force`, and may not decide what an issue says.
|
||||
Delegating a single call costs more than running it inline — the win is the
|
||||
loop, the retry, and the error triage.
|
||||
- `hooks/` — PreToolUse hooks: `tea-guard` blocks or rewrites `tea` invocations
|
||||
that don't use the pinned login; `agents-sync` keeps every directory canonical
|
||||
(`AGENTS.md` real file, `CLAUDE.md` symlink to it)
|
||||
|
||||
Reference in New Issue
Block a user