A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Multi-agent sprint orchestration for Claude Code — /tickets plans, /sprint executes
A multi-agent sprint orchestration system for Claude Code that turns ideas into fully implemented, verified, and merged code, using Agent Teams (Context Agent + Worker Agent as live teammates) working in parallel isolated git worktrees.
Five slash commands. One pipeline.
/definecaptures intent./ticketsplans your work./sprint-dry-runvalidates readiness./sprintexecutes it./sprint-resumerecovers from crashes.
The system is built around three Claude Code custom slash commands that form an end-to-end pipeline:
Your idea
│
▼
/define
│
│ Quick codebase recon → structured dialogue (3-5 min) →
│ derives problem ID → creates .claude/sprints/{id}/ →
│ problem statement with success criteria, user journey,
│ testing strategy, and constraints
│
▼
/tickets "Build a notification system"
│
│ Reads problem statement → analyzes codebase → generates plan →
│ creates Linear tickets with edge cases, file context,
│ caller-callee contracts, test patterns, and rollback plans →
│ validates all success criteria have ticket coverage
│
▼
/sprint-dry-run (optional but recommended)
│
│ Validates Linear tickets still match plan → computes deployment
│ waves → predicts file conflicts → checks infrastructure →
│ produces go/no-go verdict. Read-only, changes nothing.
│
▼
/sprint
│
│ Reads problem statement → fetches tickets → deploys Agent Teams →
│ Context + Worker as live teammates → multi-layer verification →
│ conflict-aware merging → E2E behavioral testing (using user
│ journey as test scenarios) → auto-retrospective
│
├── (if interrupted) ──► /sprint-resume
│ │
│ │ Reconciles sprint-state.json against Linear →
│ │ classifies tickets via 8-cell matrix →
│ │ re-deploys agents only for incomplete work →
│ │ skips already-done tickets (zero cost)
│ │
│ ▼
▼ Recovered sprint
Merged, verified, tested code on your branch
/define — From Idea to Problem StatementThe intent capture command. Through a focused 3-5 minute dialogue (informed by a quick codebase scan), it produces a structured problem statement that becomes the contract for the entire pipeline.
notification-system). Confirms with the user..claude/sprints/{problem_id}/problem-statement.md with problem description, user journey, success criteria, testing strategy, constraints, and codebase snapshot. Sets .claude/active-problem marker./tickets immediately or save for later.| # | Question | Purpose | Always Asked? |
|---|---|---|---|
| Q1 | What problem are you solving? | Captures the why, not the what | Yes |
| Q2 | What does "done" look like? | User journey → E2E test scenarios + success criteria | Yes |
| Q3 | What level of testing? | Configures test expectations (adapts to existing test infra) | Yes |
| Q4 | Any constraints? | Libraries, deadlines, tech debt, external deps | Yes |
| Q5 | Database changes? | New tables vs extend existing (only if DB detected) | Conditional |
| Q6 | Auth/permissions? | Public vs authenticated vs role-based (only if auth detected) | Conditional |
| Q7 | External integrations? | Third-party APIs, webhooks, services | Conditional |
The problem statement flows through the entire pipeline:
| Consumer | What It Uses | How |
|---|---|---|
/tickets Explore Agent | Codebase snapshot + constraints | Focuses analysis on relevant areas, skips re-discovering stack basics |
/tickets Approval Gate | Success criteria + implied features | Validates every criterion has at least one ticket covering it |
/sprint Worker Agent | Constraints | Passed as hard constraints in Worker prompts |
/sprint Completion Agent (L4) | Success criteria | Checks tickets against relevant criteria from the problem statement |
/sprint E2E Test Agent (Phase 6) | User journey steps | Each step becomes an agent-browser verification scenario |
/sprint Retrospective (Phase 8) | Full problem statement | Compares actual output against original intent |
/tickets works without it; just prints a nudge: "Tip: Run /define first for better ticket quality"/tickets' job./tickets — From Idea to Linear TicketsThe planning command. Given a feature description (enriched by /define's problem statement if available), it analyzes your codebase, generates an implementation plan, breaks it into agent-sized tickets with rich context, and creates them on Linear.
/tickets Flow/tickets "{FEATURE}"
│
▼
┌─────────────────────────────────────────┐
│ PHASE 0: PRE-FLIGHT │
│ ├── Check Linear MCP connection │
│ ├── Verify git clean + pull base │
│ ├── Verify baseline BUILD passes │
│ └── Init support files (progress.txt, │
│ agent-memory dir, .gitignore) │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 1: BROAD CODEBASE ANALYSIS │
│ ├── Explore Agent (Sonnet) — broad │
│ │ ├── Architecture mapping │
│ │ ├── Types & schemas (FULL defs) │
│ │ ├── Test infrastructure │
│ │ ├── Error patterns │
│ │ └── ANTI-HALLUCINATION enforced │
│ ├── Step 1B: Validate unverified refs │
│ └── Output: ARCHITECTURE_REPORT │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 2: PLAN GENERATION │
│ ├── Size tickets (per-ticket limits) │
│ ├── Map dependencies │
│ ├── Tag tickets (migration/schema/etc) │
│ └── Output: Preliminary ticket list │
│ (edge cases + context = "TBD") │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 2.5: FILE-LEVEL CONTEXT AGENTS │
│ ├── Parallel Context Agents (Sonnet) │
│ │ ├── Deep file reads per ticket │
│ │ ├── Function signatures + types │
│ │ ├── Caller analysis (ghost deps) │
│ │ ├── Error patterns per file │
│ │ ├── Test patterns per module │
│ │ └── Suggested edge cases │
│ ├── Step 2.5B: Flag plan mismatches │
│ │ └── Loop back to Phase 2 if needed │
│ └── Output: TICKET_CONTEXT_REPORT[] │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 2.75: ENRICHMENT & VALIDATION │
│ ├── 2.75A: Generate explicit edge cases│
│ │ └── Type-driven, ≥4 per ticket │
│ ├── 2.75B: Validate dependencies │
│ │ └── Import graph analysis │
│ │ └── Circular dep detection │
│ ├── 2.75C: Complexity re-evaluation │
│ │ └── Auto-split oversized tickets │
│ ├── 2.75D: Rollback plans │
│ │ └── For schema/migration tickets │
│ └── Output: Enriched ticket list │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 3: APPROVAL GATE │
│ ├── Summary + ticket tree │
│ ├── Edge case coverage count │
│ ├── Dependency validation status │
│ ├── Complexity changes summary │
│ └── Options: create / modify / dry-run │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 4: CREATE ON LINEAR │
│ ├── Create project │
│ ├── Create tickets (enriched template) │
│ ├── Set "blocked by" relationships │
│ └── Add parent/child nesting │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PHASE 5: SAVE & OUTPUT │
│ ├── Save plan to .claude/plans/ │
│ ├── Tag codebase snapshot (staleness) │
│ ├── Display sprint config (all fields) │
│ ├── Save sprint hints (.json) │
│ ├── Recommend coordination mode │
│ ├── Update Explore agent memory │
│ └── Offer to kick off /sprint │
└─────────────────────────────────────────┘
/tickets runs.claude/problem-statement.md from /define if available. Enriches Explore Agent focus, validates all success criteria have ticket coverage at the Approval Gate, and passes constraints to Context Agents.Each ticket created on Linear includes:
| Section | Description |
|---|---|
| Description | What to implement, scoped to one worktree |
| Acceptance Criteria | Explicit, testable requirements |
| Edge Cases | ≥4 type-driven edge cases (mandatory) |
| Detailed File Context | Function signatures, type definitions, callers |
| Caller-Callee Contracts | Exact signatures to match |
| Test Patterns | Existing test conventions with example structure |
| Rollback Plan | How to undo if it breaks (schema/migration tickets) |
| Sizing | S/M/L with estimated files and tests |
/sprint-dry-run — Sprint Readiness AuditThe pre-validation command. Validates every prerequisite, predicts conflicts, and surfaces risks BEFORE agents spawn. Changes nothing — no files created, no commits, no state mutations.
/sprint-resume/sprint — Parallel Agent ExecutionThe execution command. Fetches tickets from Linear, deploys Agent Teams per ticket (Context Agent + Worker Agent as live teammates in a shared worktree), runs multi-layer verification, merges with conflict prediction, and runs E2E behavioral testing.
sprint-preflight.json, compacts, resumes), Proceed as-is, or Cancel. Invisible when context is healthy.agent-browser CLI for browser interactions. Orchestrator starts one shared dev server. Each E2E agent runs in isolated --session {TICKET_ID}. Snapshot → interact via @refs → verify behaviors → collect evidence./sprint Flow┌─────────────────────────────────────────────────────────────────────┐
│ STEP 0-PRE: CONTEXT PRE-FLIGHT │
│ Estimate remaining context window │
│ If <60%: prompt user → [Compact+Continue / Proceed / Cancel] │
│ Compact: save state to sprint-preflight.json → compact → reload │
│ If ≥60%: skip silently │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 0: PRE-FLIGHT │
│ Check Linear → Pull base → Build baseline → Tag snapshot │
│ Load failure patterns + sprint hints │
│ Choose coordination mode (Agent Teams recommended) │
│ Initialize sprint-state.json (checkpoint system) │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ STEP 0J: PERMISSION MODE SELECTION │
│ [Auto-approve / Skip all / Manual / Pre-configured] │
│ Auto-approve: generates allowedTools config from sprint commands │
│ Skip all: verifies --dangerously-skip-permissions flag │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 1: FETCH TICKETS │
│ Query Linear for all tickets matching LINEAR_FILTER │
│ Store: [{id, title, description, priority, labels}] │
└───────────────────────────────┬─────────────────────────────────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼ (one Agent Team per ticket)
┌──────────────────────────────────────────────────────────────────┐
│ PHASE 2: DEPLOY AGENT TEAMS (PARALLEL) │
│ │
│ Smart worktree strategy: dependency-aware branching │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ PER TICKET — SHARED WORKTREE (Agent Team) │ │
│ │ │ │
│ │ ┌─────────────────┐ ◄── messages ──► ┌────────────┐ │ │
│ │ │ CONTEXT AGENT │ (real-time) │ WORKER │ │ │
│ │ │ (Sonnet 4.6) │ │ (Opus 4.6)│ │ │
│ │ │ │ W: "signature?" │ │ │ │
│ │ │ • Read codebase │ C: "fn(x:T):R" │ • Implement│ │ │
│ │ │ • Map patterns │ W: "test mock?" │ • Write tests│ │ │
│ │ │ • Answer Qs │ C: "vi.mock(...)" │ • Lint/type│ │ │
│ │ │ • Warm-start │ │ • Commit │ │ │
│ │ │ templates │ │ │ │ │
│ │ └─────────────────┘ └────────────┘ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 2.5: CODE SIMPLIFIER (conditional, non-blocking) │
│ Skip: Agent Teams + clean code, bug fixes, small tickets │
│ Run: subagents mode, 5+ files. Auto-revert if tests break. │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 3: VERIFICATION LOOP (PER TICKET) │
│ │
│ Pre: STALE BASE CHECK (rebase if base branch moved) │
│ L0.5: PREFLIGHT CHECK (did worker run all 4 commands?) │
│ L0.7: CONTEXT EXHAUSTION CHECK (truncated output → fresh Worker) │
│ L1: EVIDENCE CHECK (orchestrator — no agent) │
│ L2+L3: PARALLEL VERIFICATION │
│ L2: MECHANICAL (exit codes, test count > 0, config) │
│ L3: CODE REVIEW (security, logic, patterns) │
│ L2.5: EDGE CASE VERIFICATION (grep tests for each case) │
│ ⚡ CIRCUIT BREAKER: same error 2x → fresh agent or flag STUCK │
│ L3.5: HUMAN REVIEW (optional, if HUMAN_IN_LOOP=true) │
│ L4: COMPLETION AGENT (verdict only, no Linear access) │
│ L5: ORCHESTRATOR POSTS PROOF (raw terminal output to Linear) │
│ L5.5: ORCHESTRATOR MARKS DONE (sets + verifies on Linear) │
│ │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 4: MERGE SCHEDULING │
│ Scheduler Agent: conflict prediction + merge ordering │
│ Conflict Agent: resolves with intent context + edge cases │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 4.5: PRE-MERGE INTEGRATION CHECK │
│ Temp branch → merge ALL tickets → npm install → full test suite │
│ Test fixture collision detection across tickets │
│ FAIL → isolate culprit → route to ORIGINAL Worker Agent │
│ PASS → proceed to real merges with confidence │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 4 (cont): MERGE EXECUTOR │
│ Sequential merges with pre-merge tags + dependency drift checks │
│ Post-merge verification: both tickets' tests must pass │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 5: BUILD GATE (with Bisection) │
│ Build + Lint + Typecheck + Unit tests — must all pass │
│ If fail → BISECT using pre-merge tags → isolate culprit │
│ Fix culprit or revert (PARTIAL_MERGE) → continue │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 6: E2E BEHAVIORAL VERIFICATION (agent-browser, PARALLEL) │
│ Orchestrator starts ONE shared dev server │
│ One E2E agent per ticket (--session {TICKET_ID} isolation): │
│ agent-browser snapshot → interact via @refs → verify behaviors │
│ Failure → create Linear ticket with evidence │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 7: REMAINING TICKET CHECK (LOOP) │
│ If tickets remain → loop back to Phase 2 │
│ Safety: MAX_LOOP_ITERATIONS cap │
└───────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 8: POST-SPRINT LEARNING LOOP │
│ Retrospective Agent: analyze sprint performance │
│ Update progress.txt, suggest CLAUDE.md changes │
│ Update failure pattern database (.claude/failure-patterns.json) │
│ Feed learnings back to /tickets memory │
│ Save to .claude/sprint-history/ │
└─────────────────────────────────────────────────────────────────────┘
| Agent | Model | Purpose |
|---|---|---|
| Context Agent | Sonnet | Codebase research + live follow-up answers (teammate) |
| Worker Agent | Opus | Implementation + edge cases + evidence (teammate) |
| Fresh Worker Agent | Opus | Circuit breaker escalation — clean context |
| Code Simplifier | Opus | Refine code clarity (non-blocking) |
| Verification Agent | Sonnet | Independent verification + cross-check |
| Code Review Agent | Sonnet | Security, logic, patterns |
| Fix Agent | Opus | Fix verification/review/human issues |
| Completion Agent | Sonnet | Requirement matching verdict only (no Linear access) |
| Scheduler Agent | Sonnet | Conflict prediction + merge ordering |
| Conflict Agent | Opus | Resolve merges with intent context |
| Build Gate Agent | Opus | Fix build failures (after bisection) |
| E2E Test Agent | Sonnet | Behavioral verification via agent-browser CLI |
| Retrospective Agent | Sonnet | Post-sprint analysis + learning |
sprint-preflight.json, compacts, reloads seamlessly), Proceed as-is, or Cancel. Invisible when context is healthy.allowedTools config from your BUILD_CMD/LINT_CMD/TEST_CMD), skip all permissions (--dangerously-skip-permissions), manual approval, or skip if already configured. Eliminates hundreds of "Allow?" prompts during sprint execution..claude/failure-patterns.json persists error→resolution mappings across sprints. High-frequency patterns (≥3 occurrences) are pre-injected into Worker prompts as warnings.--session {TICKET_ID} for parallel isolation..claude/sprint-dashboard.md for observability/sprint-resume — Sprint Crash RecoveryThe recovery command. When a terminal crashes, context window compacts, or a session expires mid-sprint, /sprint-resume picks up exactly where things left off. It reconciles local state against Linear, classifies every ticket's recovery action, and re-deploys agents only for incomplete work.
Every ticket is classified by two dimensions: sprint-state status (complete/stuck/other) and Linear reality (Done+evidence / Done-evidence / !Done+evidence / !Done-evidence):
| Linear=Done + evidence | Linear=Done - evidence | Linear!=Done + evidence | Linear!=Done - evidence | |
|---|---|---|---|---|
| state=complete | SKIP | RE_VERIFY | REPAIR_STATUS | RE_VERIFY |
| state=stuck | SKIP | SKIP | STUCK | STUCK |
| state=other | SKIP | SKIP | RE_IMPLEMENT | RE_IMPLEMENT |
All commands share a philosophy of evidence before assertion:
Injected into every agent prompt:
The system enforces a strict rule: no agent interacts with Linear. Only the orchestrator does.
Raw terminal output IS proof. Agent-written summaries are NOT proof. The orchestrator captures what the agents actually ran (build output, test output, lint output) and posts that as evidence, not a summary an agent wrote about it.
# Option A: Copy commands directly into your project
mkdir -p your-project/.claude/commands
cp .claude/commands/define-problem.md your-project/.claude/commands/
cp .claude/commands/orchestrate-parallel-sprint.md your-project/.claude/commands/
cp .claude/commands/sprint-dry-run.md your-project/.claude/commands/
cp .claude/commands/sprint-resume.md your-project/.claude/commands/
cp .claude/commands/tickets.md your-project/.claude/commands/
# Option B: Clone and symlink
git clone https://github.com/rakeshutekar/claude-sprint-orchestrator.git
ln -s $(pwd)/claude-sprint-orchestrator/.claude/commands/define-problem.md your-project/.claude/commands/
ln -s $(pwd)/claude-sprint-orchestrator/.claude/commands/orchestrate-parallel-sprint.md your-project/.claude/commands/
ln -s $(pwd)/claude-sprint-orchestrator/.claude/commands/sprint-dry-run.md your-project/.claude/commands/
ln -s $(pwd)/claude-sprint-orchestrator/.claude/commands/sprint-resume.md your-project/.claude/commands/
ln -s $(pwd)/claude-sprint-orchestrator/.claude/commands/tickets.md your-project/.claude/commands/
# In Claude Code, run:
/mcp
# Select the Linear server and complete OAuth
.claude/worktrees/ and .claude/sprints/ are in your .gitignore:echo ".claude/worktrees/" >> .gitignore
echo ".claude/sprints/" >> .gitignore
echo ".claude/active-problem" >> .gitignore
/define
This starts a 3-5 minute structured dialogue. It scans your codebase (quick recon), then asks 4-7 focused questions about what you're building, what "done" looks like, and how you want it tested. Derives a problem ID (e.g., notification-system) and produces .claude/sprints/{problem_id}/problem-statement.md. Sets the active problem marker so downstream commands auto-detect it.
/tickets "Build a real-time notification system with WebSocket support,
email fallback, and user preference management"
This will analyze your codebase (using the problem statement for focus if available), generate a plan, validate all success criteria have ticket coverage, and after your approval, create tickets on Linear with full context.
/sprint-dry-run
This validates all Linear tickets still match the plan, computes deployment waves, predicts file conflicts, checks infrastructure, and produces a go/no-go verdict. Takes ~30 seconds, changes nothing, and can save you from expensive surprises.
Copy the sprint config output from /tickets and run:
/sprint
## Sprint Config
BRANCH_BASE: develop
LINEAR_FILTER:
team: "ENG"
label: "sprint-notifications"
status: ["Todo", "In Progress"]
PROJECT_STANDARDS: "CLAUDE.md"
BUILD_CMD: "npm run build"
LINT_CMD: "npm run lint"
TEST_CMD: "npm run test:run"
TYPECHECK_CMD: "npx tsc --noEmit"
E2E_CMD: "agent-browser"
MAX_LOOP_ITERATIONS: 3
HUMAN_IN_LOOP: false
PARTIAL_MERGE: true
SPRINT_DASHBOARD: true
Now execute the orchestration.
| Parameter | Required | Default | Description |
|---|---|---|---|
BRANCH_BASE | Yes | — | Base branch to work from |
LINEAR_FILTER.team | Yes | — | Linear team key |
LINEAR_FILTER.label | No | — | Label filter for tickets |
LINEAR_FILTER.status | Yes | — | Statuses to pick up |
PROJECT_STANDARDS | Yes | — | Path to project standards (e.g., CLAUDE.md) |
BUILD_CMD | Yes | — | Build command |
LINT_CMD | Yes | — | Lint command |
TEST_CMD | Yes | — | Unit test command |
TYPECHECK_CMD | No | — | TypeScript type check command |
E2E_CMD | No | — | E2E test command |
COMMIT_PREFIX | No | feat | Conventional commit prefix |
MAX_LOOP_ITERATIONS | No | 3 | Safety cap on fix-up loops per ticket |
HUMAN_IN_LOOP | No | false | Pause for human review before marking Done |
PARTIAL_MERGE | No | true | Merge completed tickets even if some are stuck |
SPRINT_DASHBOARD | No | true | Write live sprint-dashboard.md |
If the terminal crashes or the session expires mid-sprint:
/sprint-resume
This reconciles sprint-state.json against Linear, classifies every ticket using the 8-cell matrix (SKIP/RE_VERIFY/RE_IMPLEMENT/STUCK/REPAIR_STATUS), and re-deploys agents only for incomplete work. Already-done tickets get zero agents.
At sprint start, you choose between two coordination modes:
Per ticket, the orchestrator (team lead) spawns a Context Agent (Sonnet) and Worker Agent (Opus) as teammates in the same worktree. Both agents are alive simultaneously and communicate directly.
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1Each agent runs independently. The orchestrator passes all context between them as a one-way handoff. The Context Agent runs first, returns a text summary, and dies. The Worker receives that static summary in its prompt and cannot ask follow-up questions.
your-project/
├── .claude/
│ ├── commands/
│ │ ├── define-problem.md # /define command (~600 lines)
│ │ ├── orchestrate-parallel-sprint.md # /sprint command (4600+ lines)
│ │ ├── sprint.md # /sprint thin wrapper (~140 lines)
│ │ ├── sprint-dry-run.md # /sprint-dry-run command (~500 lines)
│ │ ├── sprint-resume.md # /sprint-resume command (~920 lines)
│ │ └── tickets.md # /tickets command (1800+ lines)
│ ├── active-problem # Current problem ID (one line, e.g. "auth-system")
│ ├── worktrees/ # Auto-created, must be in .gitignore
│ ├── sprints/ # Per-problem state directories (auto-created)
│ │ └── {problem_id}/
│ │ ├── problem-statement.md # From /define — intent contract
│ │ ├── sprint-state.json # Sprint checkpoint
│ │ ├── sprint-hints.json # From /tickets — ticket metadata
│ │ ├── sprint-preflight.json # Context pre-flight checkpoint (temporary)
│ │ ├── sprint-dashboard.md # Live sprint status
│ │ ├── progress.txt # Per-problem sprint learnings
│ │ └── agent-memory/
│ │ └── tickets-explore/ # Persistent Explore agent memory
│ ├── sprint-config.yml # Global: shared build cmds, model policy
│ ├── sprint-history/ # Global: retrospective archive (auto-created)
│ │ └── sprint-{timestamp}.md
│ ├── failure-patterns.json # Global: cross-sprint error→resolution DB
│ └── plans/ # Saved ticket plans (auto-created)
├── progress.txt # Global: codebase patterns (Ralph Pattern)
├── scripts/
│ └── sprint-wave.sh # Optional: bash sprint launcher
└── .gitignore # Must include .claude/sprints/ and .claude/worktrees/
The orchestrator supports running /define → /tickets → /sprint pipelines for multiple features concurrently in the same project without file collisions.
Each feature gets its own problem directory under .claude/sprints/{problem_id}/ containing all sprint state files (problem statement, sprint state, hints, dashboard, progress). Global infrastructure (build commands, failure patterns, sprint history) stays shared.
Problem ID propagation uses a hybrid approach:
/define derives a problem ID from the feature description (e.g., notification-system) and writes it to .claude/active-problem/tickets, /sprint-dry-run, /sprint) auto-read the active problem markersprint-state.json — the running sprint never re-reads active-problem, making it safe to /define a new problem while a sprint is runningEvery command uses a 5-step resolution at startup:
.claude/active-problem exists → use its contents.claude/sprints/ → use it.claude/problem-statement.md etc.) → auto-migrate to .claude/sprints/default/progress.txt (repo root) — codebase patterns, build quirks, and conventions discovered across all sprints.claude/sprints/{id}/progress.txt — completed tickets and sprint-specific learnings for that featureAgents read both files: global patterns inform codebase navigation, per-problem progress prevents re-doing completed work.
# Terminal 1: Define and sprint feature A
/define # → derives "auth-system", creates .claude/sprints/auth-system/
/tickets "Build auth system" # → reads from .claude/sprints/auth-system/
/sprint # → locked to auth-system for its entire lifecycle
# Terminal 2: While sprint A is running, define feature B
/define # → derives "notification-system", updates active-problem marker
/tickets "Build notifications" # → reads from .claude/sprints/notification-system/
/sprint # → locked to notification-system, independent of sprint A
| Scenario | What Happens |
|---|---|
| Fresh repo, no state files | /define creates .claude/sprints/{id}/ from scratch |
| Existing singleton files (pre-migration) | Auto-migrated to .claude/sprints/default/ on first command run |
| Only one problem exists | Works exactly like before — no extra ceremony |
/sprint-resume with 2 interrupted sprints | Presents a list and asks which to resume |
This system is designed for serious feature development and will consume significant tokens.
| Sprint Size | Tickets | Estimated Cost | Context Windows |
|---|---|---|---|
| Small | 2-3 tickets | $5-15 | ~10-20 agent windows |
| Medium | 4-6 tickets | $15-40 | ~25-50 agent windows |
| Large | 7-10 tickets | $40-80+ | ~50-100+ agent windows |
Each ticket spawns multiple agents across the pipeline:
Plus global agents: Scheduler, Conflict Resolution, Build Gate, Retrospective.
A 5-ticket sprint could easily spawn 40-60 agent context windows.
HUMAN_IN_LOOP: true — Review each ticket before it consumes more loopsMAX_LOOP_ITERATIONS: 2 — Lower the retry cap.claude/sprint-dashboard.md to catch issues early/sprint-dry-run — Validate tickets, predict conflicts, and check infrastructure before committing to a full sprintnpm install -g agent-browserMIT
Contributions are welcome! If you have ideas for improving the orchestration flow, adding new verification layers, or optimizing token usage, please open an issue or PR.
Built with patterns inspired by:
npx CLI installing 100+ agents, commands, hooks, and integrations in one command
干净、强大、属于你的 AI Agent 平台 --AI agents, without the clutter.
Native macOS app to monitor Claude AI usage limits and watch your coding sessions live
Pocket Flow: Codebase to Tutorial