From claude-overnight
Understand, install, and inspect claude-overnight runs — a CLI that launches parallel Claude agents in git worktrees with thinking waves, multi-wave steering, and crash-safe resume. Use when the user mentions claude-overnight, a `.claude-overnight/` folder, an "overnight" or "swarm" run, or asks to check status / resume / continue a multi-phase plan. Not for Vercel Workflow DevKit.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-overnight:claude-overnightThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`claude-overnight` is a CLI (npm: `claude-overnight`, bin: `claude-overnight`) that takes an objective + budget and runs many Claude agents in parallel, each in an isolated git worktree. It plans with a "thinking wave" of architect agents, orchestrates concrete tasks, executes waves, and uses steering to decide between more execution, reflection, or declaring done. Rate limits, crashes, and usa...
claude-overnight is a CLI (npm: claude-overnight, bin: claude-overnight) that takes an objective + budget and runs many Claude agents in parallel, each in an isolated git worktree. It plans with a "thinking wave" of architect agents, orchestrates concrete tasks, executes waves, and uses steering to decide between more execution, reflection, or declaring done. Rate limits, crashes, and usage caps are all resumable — nothing is lost.
Repo: https://github.com/Fornace/claude-overnight
npm install -g claude-overnight # Node >= 20; needs Claude auth or ANTHROPIC_API_KEY
claude-overnight # interactive in cwd
claude-overnight tasks.json # task file mode
claude-overnight "task a" "task b" # inline
Common flags: --budget=N, --concurrency=N, --model=<name>, --usage-cap=N, --allow-extra-usage, --extra-usage-budget=N, --timeout=SECONDS, --no-flex, --dry-run.
Live keys while running: b change budget · t change usage cap · q graceful stop (twice = force).
Exit codes: 0 all ok · 1 some failed · 2 all/none.
Every run lives at <repo>/.claude-overnight/runs/<ISO-timestamp>/:
| File / dir | What it tells you |
|---|---|
run.json | Machine state: objective, model, budget, cost, waves done, branches, done flag. |
status.md | Living project snapshot, rewritten by steering every wave. First line = short status. |
goal.md | Evolving "north star" — what the run currently thinks "amazing" means. |
milestones/*.md | Strategic snapshots archived ~every 5 waves. Long-term memory of the run. |
designs/*.md | Architect outputs from the thinking wave. Deleted once the objective is complete. |
sessions/wave-N.json | Per-wave agent records: prompt, status, cost, files changed, branch, error. |
The newest subfolder under runs/ is the current/last run. A run that never reached "done" is resumable — run.json will not be marked complete and designs/ may still be present.
To assess status of a run from scratch, read in this order: goal.md → status.md → newest file in milestones/ → newest sessions/wave-*.json → run.json. Five reads and you know exactly where it stands.
Durable run history (committed, survives cleanup): claude-overnight.log.md at the repo root is updated on every run with a block per run ID — original objective, start/finish times, cost, outcome, branch. If the user asks "what was my prompt" or "what did last night's run do" and .claude-overnight/runs/ is empty, this file is the canonical recovery path.
Just run claude-overnight again in the same repo. It auto-detects the unfinished run and shows a Resume / Fresh / Quit prompt. On resume: unmerged swarm/task-* branches auto-merge, the wave loop continues, status/goal/milestones/designs are preserved. If orchestration crashed after the thinking wave, surviving designs/*.md are reused — no re-paying for architects.
For multi-phase plans (task file with objective + flexiblePlan: true), resuming picks up at the next wave with full steering context. Don't hand-edit run.json to "fix" a stuck run unless something is demonstrably corrupt — prefer re-running and letting steering re-assess.
Merged branches from prior runs are not re-run. Knowledge carries forward across runs: new runs see what completed runs built.
status.md (living snapshot) and the newest sessions/wave-*.json.swarm/task-* branches left behind (git branch --list 'swarm/*') — these are unmerged worktree outputs, usually from a conflict or crash.run.json for done, lastError, usage/cost fields.designs/ will still contain the architect docs — a resume will reuse them.claude-overnight in the repo"..claude-overnight/ to "clean up" — it holds the only record of what the run learned. It should be in .gitignore.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub fornace/claude-overnight --plugin claude-overnight