Files
Codeman/.changeset/skill-fast-path.md
T
Codeman maintainer bbc960a8ff fix(skill): harden the fast path against the review findings
Fifteen review findings on the fast-path rewrite plus one caught live, all
verified against a real 1.18.1 server before landing:

- sendwait picks a fresh seq (the epoch second) instead of a fixed 2, so a
  second prompt to the same worker is typed instead of silently swallowed as
  an already-applied duplicate; explicit seq remains for deliberate resends
- sendwait self-heals stranded delivery: an Ink repaint occasionally eats the
  Enter (observed live), so a timed-out short first wait sends one bare \r and
  re-waits by resending the identical frame as a tagged duplicate
- spawn_worker verifies the resolved casePath carries Codeman hooks (the same
  /api/hook-event marker the server checks), refusing names that resolve to
  linked or pre-existing hook-less directories instead of running the job in
  what may be the user's real repo
- spawn_worker probes the trust dialog after a short 5s composer wait, not the
  full 45s, restoring the ladder staging verbs.md documents; on a readiness
  miss it deletes the half-spawned session and returns 1 with empty stdout,
  so a prompt can never be typed blind into a trust dialog
- spawn_workers refuses duplicate case names and empty argument lists, and
  keys result files by index
- section 1 is bash 3.2 compatible (indexed arrays, no declare -A), prints the
  full delivered/timedOut/signal tuple per worker with an explicit line for a
  missing result, deletes only workers whose turn really ended (a timeout
  means still working), cleans up spawned siblings when any spawn fails, and
  guards its mktemp
- last_text takes the previous answer as an optional second argument for
  consecutive-turn reads (the transcript briefly serves the prior answer
  after a stop, observed live)
- the stale duplicate bullets in section 1's closing list are gone
- reference/verbs.md joins the mode-list drift guard's file list
- README's skill inventory covers verbs.md and the new SKILL.md shape
- the changeset is minor so the shipped release matches the 1.19.0 stamp

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 13:40:42 +02:00

2.0 KiB

aicodeman
aicodeman
minor

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 agent-driven hooks check, which is now folded into spawn_worker itself as a single local grep of the resolved casePath, so a name that resolves to a linked case or a hook-less pre-existing directory is refused instead of silently running the job there. Linked cases and raw paths still require the by-hand check, 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.
  • sendwait picks a fresh seq per call (a fixed default made every second prompt to the same worker a silently-swallowed duplicate) and self-heals stranded delivery: an Ink repaint occasionally eats the Enter, leaving the prompt typed but unsubmitted (observed live), so a timed-out first wait sends one bare \r and re-waits by resending the identical frame as a tagged duplicate.
  • §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 roughly 9k tokens (~35KB); section numbers and anchors are unchanged, so existing §5.x references still resolve.