perf(skill): make the codeman skill spawn workers instead of deliberating

Measured against a live 1.18.1 server, the API does the whole job in about ten
seconds: two cold claude workers spawned and ready in 6.3s, both tasked and both
answers read in 4.0s more. The slowness users reported was agent-side.

Three causes, all of them things the skill taught:

- It taught serial spawning. Nothing in the main document showed `&`/`wait`, so
  "spawn two workers" read as "do the readiness ladder twice", which is one model
  turn per worker.
- It had no spawn primitive. The happy path had to be reassembled on every run from
  where-to-spawn, a four-stage readiness ladder, send-and-wait, the fan-out caveats
  and a recipe with two variants. Each is a decision, and most carry a warning.
- It cost ~16k tokens before the first call, at 3.6:1 prose to code, with 25 warning
  glyphs and 55 occurrences of "never". A document that is mostly failure modes
  teaches caution, and caution bills as thinking tokens.

The preamble now defines the verbs rather than describing them: spawn_worker,
spawn_workers (concurrent), sendwait, last_text. Section 1 composes them into the
whole job in one Bash call and says to stop reading there.

Two ceremonies the measurements retired: the pid poll (one iteration, 33ms, and
wait-output already blocks on the composer) and reading settings.local.json to check
hooks for a case quick-start creates, which always has them. That check stays
required for linked cases and raw paths, where its absence silently breaks
send-and-wait.

The bootstrap's write condition now greps the version stamp, so a stale or truncated
preamble self-heals rather than failing and asking for a manual rm. The stamp line is
kept bare because the grep anchors on it with $; an inline comment there would rewrite
the file on every bootstrap.

Section 5 moved to reference/verbs.md behind an index, cutting the always-paid
SKILL.md from ~16.4k to ~7.6k tokens. Section numbers and anchor slugs are unchanged,
so existing references still resolve; all 201 anchors across the five files were
checked, with the checker positive-controlled against an injected bad link.

Verified by extracting the code blocks from the shipped file and running them against
the live server: bootstrap plus full fast path, two workers resolving on the
definitive stop signal, answers read and sessions deleted, in 6.8s.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-08-14 10:20:41 +02:00
parent 174976fc40
commit f18097cb23
4 changed files with 889 additions and 724 deletions
+24
View File
@@ -0,0 +1,24 @@
---
'aicodeman': patch
---
Make the `codeman` agent skill spawn workers fast instead of deliberating first.
Measured against a live server, the API does the whole job (spawn two claude workers,
task them, read both answers) in about 10 seconds, so the delay users saw was
agent-side: the skill taught serial spawning, made the happy path something to
reassemble from five sections on every run, and cost ~16k tokens of mostly failure
modes before the first call.
- The §0 preamble now defines the verbs instead of describing them: `spawn_worker`,
`spawn_workers` (concurrent), `sendwait` and `last_text`. §1 composes them into the
whole job in one Bash call, and says to stop reading there.
- Dropped two ceremonies the measurements retired: the pid-poll loop (`wait-output`
already blocks on the composer) and the hooks check for cases `quick-start` creates,
which always carry hooks. That check is still required for linked cases and raw paths,
where its absence silently breaks send-and-wait.
- The bootstrap's write condition now greps the version stamp, so a stale or truncated
preamble file self-heals instead of failing and asking you to `rm` it by hand.
- §5 moved to `reference/verbs.md`, leaving an index. SKILL.md is the only part paid on
every load and drops from ~16.4k to ~7.6k tokens; section numbers and anchors are
unchanged, so existing `§5.x` references still resolve.