Autonomous deep-work sessions for OpenClaw. Set a topic, a duration, and walk away. Sprint spawns workers iteratively, detects stalls, tracks goals, and delivers a final synthesis report — all hands-off.
🟡 Status: Beta. Proven across 5+ production sprints including overnight autonomous runs. Ready for unsupervised use with the right goal structure — see Overnight Use below.
- Iterative worker spawning — Director runs every 20–30 min, spawns a worker subagent, waits for output
- Goal tracking — Define goals upfront via
goals.json; Sprint tracks completion across iterations - Stall detection — If a worker doesn't produce output in 610s, stall counter increments; 3 consecutive stalls triggers escalation
- Mutation support — Director can propose goal changes mid-sprint; mutations queue for operator ACK before acting
- Synthesis — When the sprint window closes, synthesis script reads all
iter-N.mdfiles and produces aSPRINT-REPORT.md - Discord thread — Sprint auto-creates a thread for live progress updates
# OpenClaw
git clone https://github.com/jeremyknows/sprint-openclaw ~/.openclaw/skills/sprint-openclawRequirements:
- OpenClaw runtime with
sessions_spawnsupport flock— director lock protocol (brew install util-linuxon macOS)jq— state JSON parsing (brew install jq)- Discord plugin configured (for thread creation + iteration updates)
Verify:
which flock && echo "✅ flock" || echo "❌ missing — brew install util-linux"
which jq && echo "✅ jq" || echo "❌ missing — brew install jq"Run a 2-hour sprint on: research OAuth 2.1 hybrid auth patterns for VeeFriends
Sprint on implementing Redis rate limiting — 4 hours, high autonomy
Start a sprint: analyze our top 10 Discord messages from last week
# Basic sprint
bash ${CLAUDE_SKILL_DIR}/scripts/sprint-init.sh \
--topic "Research React 19 performance patterns" \
--duration "2h"
# With goals file and autonomy level
bash ${CLAUDE_SKILL_DIR}/scripts/sprint-init.sh \
--topic "Implement Redis-backed API rate limiting" \
--duration "6h" \
--autonomy-level "high" \
--goals /path/to/goals.json| Script | Usage |
|---|---|
sprint-init.sh --topic <text> --duration <time> |
Initialize a new sprint |
sprint-director.sh --sprint-id <id> |
Run director manually (normally cron-driven) |
sprint-director.sh --sprint-id <id> --force-synthesis |
Skip to synthesis immediately |
sprint-director.sh --sprint-id <id> --check-only |
Status check without modifying state |
sprint-synthesize.sh --sprint-id <id> --manual |
Trigger synthesis manually |
| Level | Worker can | Worker cannot | Use when |
|---|---|---|---|
low |
Read, research, analyze, propose | Make decisions, commit, send messages | First sprint — review before acting |
medium |
Read, research, analyze, implement, commit (non-prod) | Deploy, send external messages | Standard — safety gate on externals |
high |
All of the above | Deploy to prod without final approval | Proven topic after successful medium sprints |
Start at low. Promote after 1 successful sprint at each level.
# Quick status
cat ~/.openclaw/data/sprints/<sprint-id>/state.json | jq '{status, iterationCount, consecutiveStalls}'
# Read latest iteration
cat ~/.openclaw/data/sprints/<sprint-id>/iter-$(ls ~/.openclaw/data/sprints/<sprint-id>/iter-*.md | wc -l | tr -d ' ').md
# Watch director log
tail -f ~/.openclaw/data/sprints/<sprint-id>/director.log~/.openclaw/
data/
sprints/
<sprint-id>/
state.json # Live state (status, goals, stalls, mutations)
goals.json # Initial goals
iter-1.md, ... # Worker outputs per iteration
director.log # Director run history
SPRINT-REPORT.md # Final synthesis (on completion)
skills/sprint/
SKILL.md
scripts/
sprint-init.sh # Initialize sprint
sprint-director.sh # Cron-driven iteration controller
sprint-synthesize.sh # Final report generation
sprint-worker-prompt.md # Worker subagent prompt template
sprint-runbook.md # Detailed operational procedures
docs/
GUIDE.md # Goals schema, autonomy details, monitoring
TROUBLESHOOTING.md # Failure modes and recovery procedures
Sprint has been validated for unsupervised overnight runs. Two conditions matter:
Goals must be specific, not thematic. Each goal/iteration should map to one concrete deliverable — a file, a fix, a research finding. Open-ended goals like "improve the analytics dashboard" cause Iter-1 to stall on scoping rather than producing output. If you wouldn't know whether a goal was "done" at a glance, rewrite it.
Set MAX_ITERATIONS. Without a cap, a sprint on a wide topic can run indefinitely. Set it in goals.json or pass --max-iterations to sprint-init.sh. 4–6 iterations is a good overnight window.
{
"maxIterations": 5,
"goals": [
"Audit /src/lib/metric-definitions.ts — list all missing Analytics/Retention entries",
"Add missing MetricHelpButton entries for the top 5 Analytics metrics",
"Fix HolderOverlapMatrix to respect the collections prop"
]
}- flock required — Lock protocol silently fails without it; concurrent directors corrupt state.json
- No cost ceiling — Long high-autonomy sprints can spawn many subagents. Monitor costs actively.
- 610s worker timeout — Hard-coded. Long research tasks (many URLs, large codebases) will stall.
- Manual archiving — Sprint data accumulates in
data/sprints/indefinitely. Archive manually. - Synthesis needs ≥1 iter — If all workers time out, synthesis produces an empty report.
- Thematic goals cause stalls — Workers spend Iter-1 scoping instead of producing. Write goals that are already scoped.
| Symptom | Likely cause | Fix |
|---|---|---|
Stuck in worker_spawned >15 min |
Worker crashed | Re-run sprint-director.sh --sprint-id <id> |
No iter-1.md after init |
Director cron not registered | Run director manually once |
flock: acquire timeout |
Stale lock file | rm -f ~/.openclaw/data/sprints/<id>/.*.lock |
consecutiveStalls rising |
Worker systemic timeout | Reduce scope or --force-synthesis |
| Synthesis empty report | No iter files | Check director.log — director may not have run |
Full procedures: docs/TROUBLESHOOTING.md
| Skill | When to use |
|---|---|
build-feature |
Guided 7-phase feature development with human checkpoints |
coding-agent |
Single focused coding task delegation |
skill-doctor |
Audit and improve this skill after production runs |
v0.3.0 · MIT · jeremyknows