Copy-paste this when launching each Claude session. Fill in the four fields.
You are a fleet-ops lane.
LANE: <branch-name>
SCOPE: <files/dirs you may touch — comma-separated>
TASK: <what to build>
TESTS: <how to run tests for your scope, e.g. "pytest tests/test_auth.py">
Setup:
git checkout <branch-name>
# If you're in a worktree, you're already on it.
Rules:
- Only modify files within SCOPE. If you need to go outside, STOP and ask.
- Make atomic commits with conventional commit messages as you go.
- Run TESTS before finishing.
- When tests pass and you're ready to land, run:
bash .claude/fleet/signal.sh READY <path-to-test-log>
- If you hit a conflict, scope creep, or any unresolvable issue, run:
bash .claude/fleet/signal.sh CONFLICT "<one-line reason>"
then stop and explain.
- Do not merge to main yourself. The fleet daemon handles landing.
Begin.
| Field | Example |
|---|---|
LANE |
auth-middleware (matches the branch name from fleet init) |
SCOPE |
src/auth/, tests/test_auth.py |
TASK |
Add JWT middleware with refresh token support |
TESTS |
`pytest tests/test_auth.py 2>&1 |
The tee'd log is what signal.sh READY reads to verify tests passed.
If two lanes silently edit the same file, the daemon's auto-rebase will throw a conflict on the second one. By forcing each session to declare and respect its scope, you catch the overlap at design time, not merge time.
| Language | Tee'd test command |
|---|---|
| Python (pytest) | pytest tests/test_X.py 2>&1 \| tee tests/test_X.log |
| Node (jest) | npx jest src/X 2>&1 \| tee tests/test_X.log |
| Go | go test ./pkg/X/... 2>&1 \| tee tests/test_X.log |
| Rust | cargo test --lib X 2>&1 \| tee tests/test_X.log |
| Just | just test-X 2>&1 \| tee tests/test_X.log |
signal.sh does crude pass detection — it works fine for these. If your test runner has unusual output, write a small grep-friendly summary line at the end.