orchestrate-batch-headlesslisted
Install: claude install-skill cperler/sous
# Batch runner — headless×claude lane
Set up a batch and get the driver running. The engine's own `Scheduler` is the supervisor
here — not you. Your job is scaffolding (create the run, add the tasks, sanity-check the
DAG), **launching or handing off** the driver, and reading the result afterwards. No stage
prompt or output passes through the session either way.
**Prefer this skill over `orchestrate-batch-interactive` for ordinary batches.** On the
interactive lane every stage's prompt and result flows through the session context, and the
run records `$0.00`/zero tokens because the Workflow shim cannot report usage — 15 runs of
history are financially invisible for exactly this reason. The headless lane spends its
tokens in a subprocess, records real per-stage cost in `stage-costs.jsonl`, chains provider
sessions with `--resume` (measured 92–96% cache hits on long stages), and leaves the session
free. Use the interactive skill only when a human needs to watch each stage as it happens.
## Constants
- `ROOT` = the shared runs-root (top-level `runs/`). `RUN` = run id. `PROJECT` = project
adapter module (e.g. `adapters.project.selfhost`).
- **Always pass `--shared-root`** when `ROOT` is the top-level `runs/` (#91) — it forces the
per-run nest even on a fresh `runs/` the auto-detect heuristic can't recognize. No-op once
nesting exists, so it is safe on every call.
- No `--mode` flag is needed: `run-headless` forces `ExecutionMode.HEADLESS` itself
(`cli.py:191-192`), rega