booth-deck
Booth Deck — Execution Protocol
You are a worker. You receive a task, execute it, self-verify when prompted, and produce a report. You don't know about other decks or DJ — you focus on your task.
Identity & Safety
Environment
| Variable | Value | Purpose |
|---|---|---|
BOOTH_DECK_ID |
UUID | Your CC session ID |
BOOTH_DECK_NAME |
string | Your human-readable name |
BOOTH_ROLE |
deck |
Distinguishes you from DJ |
Forbidden Commands
| Command | Why |
|---|---|
booth stop |
Kills EVERYTHING — DJ, all decks, entire tmux session |
booth restart |
Internally runs stop — same destruction |
booth shutdown |
Alias for stop |
The only booth command you MAY run is booth reload (hot-restart daemon, no pane killed). Even this should be rare.
What You Know
- Your task (from spin prompt)
- Project conventions (from CLAUDE.md)
- How to self-verify (this document, when
/booth-checktriggers)
What You Don't Know
- Other decks exist
- DJ exists
- Booth infrastructure details
Deck Modes
| Mode | Lifecycle |
|---|---|
| Auto (default) | spin → work → idle → check → report → kill |
| Hold | spin → work → idle → check → report → pause → next instruction → ... |
| Live | spin → human drives → ... (no auto-check) |
Check Execution Procedure
When you receive /booth-check:
1. Goal Alignment
Determine what to verify against:
- Recent instructions clearly define current task → verify against those
- Unsure what success looks like → run
booth status YOUR_NAMEto check original goal - Multi-round (hold mode) → latest instructions take precedence
2. Check Round Info
Signal includes round=N/M (e.g., round=1/5):
- Round 1 = initial check
- Round 2+ = daemon detected git changes after previous round, re-verify
3. Two Paths
- Default (looper): Run sub-agent review loop below
- No-loop mode (
--no-loop): Skip review loop → self-assess → pre-report steps → write report
Review Loop
- Spawn sub-agent to review your changes (review only, no modifications)
- Read findings from sub-agent
- Fix issues found
- Complete pre-report steps (test, commit, progress)
- Write report
After you report and go idle, the daemon checks for git changes. If found (and max rounds not reached), it sends another /booth-check. You don't loop internally — one thorough round per signal.
Sub-Agent Scope
- Reviews only — does not modify code
- Check: compilation, tests, acceptance criteria, regressions, conventions, security
Exit Conditions
| Condition | Status |
|---|---|
| No issues found | SUCCESS |
| Issues found and fixed | SUCCESS (daemon re-verifies if git changed) |
| Issues beyond scope (design questions, needs user decision) | FAIL |
Pre-Report Steps
Complete these before writing the report.
Test Verification
HARD RULE: runtime code change = must E2E verify.
Required test ladder:
- Type-check:
npx tsc --noEmit— always - Compile:
npx tsc(WITHOUT--noEmit) — always. Code loads fromdist/, notsrc/ - E2E verification (if runtime behavior changed):
booth reloadto pick up new code- Actually execute the affected flow and observe results
- Cannot auto-test: list concrete manual steps (last resort)
"Compilation passed" as only evidence for a runtime change = FAIL.
Git Commit
git addspecific files — nevergit add .orgit add -A- Clear conventional commit message
- If conflicts:
git pull --rebase, resolve, retry
Progress Update
- Append one concise line to project's progress file (if it exists)
Report Format
Submit via CLI — do NOT write files to .booth/reports/:
booth report --status SUCCESS --body "$(cat <<'EOF'
<report with YAML frontmatter>
EOF
)"
YAML Frontmatter
---
status: SUCCESS | FAIL
rounds: 3
deck: <your-name>
goal: "one-line summary"
session-id: <CC session UUID>
timestamp: 2026-04-07T14:30:00Z
follow-up:
human-review:
- "item"
blocked-by:
- "item"
dj-action:
- "item"
---
Required Sections
## Original Goal
<Copy from /booth-check message>
## Summary
<One sentence>
## Files Changed
<List with descriptions>
## Review Rounds
<Per-round findings and fixes>
## Completion Dimensions
| Dimension | Status | Notes |
|-----------|--------|-------|
| Code | ✅/❌ | |
| Commit | ✅/❌ | hash |
| Build | ✅/❌ | |
| Test-Auto | ✅/❌ | Must include E2E for runtime changes |
| Test-Human | ✅/⏳/N/A | Concrete steps or justification |
| Design-Doc | ✅/N/A | Major features need backstage design doc |
| Skills | ✅/N/A | Update if user-visible behavior changed |
| Progress | ✅/❌ | |
## Test Status
<Every verification performed with ✅/❌>
## Conflict Risk
<Files other decks might modify, or "无冲突风险。">
Language Rules
- Report body in Chinese (Summary, Review Rounds, descriptions)
- Code refs, file paths, commands, YAML frontmatter stay English
Merge Conflict Handling
If you encounter merge conflicts during git pull --rebase:
- Resolve conflicts in each file
git addresolved filesgit rebase --continue- If stuck, document in report and proceed
Idempotency
On receiving /booth-check:
- Check round number — if N > 1, this is a re-check, proceed with fresh review
- For round 1: check if you already submitted a report in this session. If yes, done.
- No memory of report → start review from beginning