Parallel sprints with /conductor

Three agents. Three phases. One sprint. No daemon.

The idea

After the build phase finishes, /review, /qa, and /security can run at the same time. They read the same code, they produce independent artifacts, and they do not modify files during analysis. There is no reason to run them sequentially.

                    ┌─── Agent 1: /review ───┐
                    │                        │
/think → /nano → build ─── Agent 2: /qa ──────┼─→ /ship
                    │                        │
                    └─── Agent 3: /security ──┘

The sequential part (think, plan, build) runs in a single agent. The parallel part (review, qa, security) fans out to multiple agents. The final part (ship) waits for all three to finish, then aggregates.

How it works

/conductor coordinates through bin/sprint.sh, a shell script that manages phase state using the filesystem. No database, no message queue, no daemon process.

sprint.sh commands

sprint.sh start <sprint-id>      # initialize sprint state
sprint.sh claim <phase>          # claim a phase for this agent
sprint.sh complete <phase>       # mark phase done, save artifact
sprint.sh status                 # show all phases and their state
sprint.sh batch                  # auto-assign unclaimed phases

Phase states

Each phase moves through four states:

  • pending — not yet started
  • claimed — an agent is working on it
  • complete — artifact saved, ready for aggregation
  • failed — agent reported an error

Atomic locking

When an agent claims a phase, sprint.sh creates a lock directory at .nanostack/sprint/locks/<phase>/. The key insight: mkdir is atomic on POSIX systems. If two agents try to claim the same phase at the same instant, one succeeds and the other gets an error. No race conditions, no external lock service.

# Agent 1:
$ sprint.sh claim review
Claimed: review (agent: claude-code, pid: 42381)

# Agent 2 (simultaneous):
$ sprint.sh claim review
Error: review already claimed by claude-code (pid: 42381)

Auto-batching

If you have three terminal windows open, you do not need to manually assign phases. Run sprint.sh batch in each, and it claims the next unclaimed phase automatically:

# Terminal 1:
$ sprint.sh batch
Auto-claimed: review

# Terminal 2:
$ sprint.sh batch
Auto-claimed: qa

# Terminal 3:
$ sprint.sh batch
Auto-claimed: security

The assignment order follows the default priority: review, qa, security. If all parallel phases are claimed, batch returns a message saying there is nothing to claim.

Stale lock detection

If an agent crashes mid-phase, its lock directory stays on disk. sprint.sh status checks the PID recorded in the lock file. If the process is no longer running, the lock is marked stale and can be reclaimed:

$ sprint.sh status
review:   complete (artifact saved)
qa:       stale (pid 42399 not running, claimable)
security: complete (artifact saved)

$ sprint.sh claim qa
Reclaimed stale lock: qa

The stale detection checks every 30 seconds during active sprints. You can also force-reclaim with sprint.sh claim --force <phase>.

When /ship runs

/ship waits until all parallel phases are complete. It reads every artifact, resolves conflicts using the precedent framework, and produces the final sprint summary. If any phase is failed, /ship reports the failure and asks whether to ship without that phase's sign-off.

PreviousSecret scanningNextMulti-agent