booth-deck

Installation
SKILL.md

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-check triggers)

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_NAME to 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

  1. Spawn sub-agent to review your changes (review only, no modifications)
  2. Read findings from sub-agent
  3. Fix issues found
  4. Complete pre-report steps (test, commit, progress)
  5. 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:

  1. Type-check: npx tsc --noEmit — always
  2. Compile: npx tsc (WITHOUT --noEmit) — always. Code loads from dist/, not src/
  3. E2E verification (if runtime behavior changed):
    • booth reload to pick up new code
    • Actually execute the affected flow and observe results
  4. Cannot auto-test: list concrete manual steps (last resort)

"Compilation passed" as only evidence for a runtime change = FAIL.

Git Commit

  • git add specific files — never git add . or git 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:

  1. Resolve conflicts in each file
  2. git add resolved files
  3. git rebase --continue
  4. If stuck, document in report and proceed

Idempotency

On receiving /booth-check:

  1. Check round number — if N > 1, this is a re-check, proceed with fresh review
  2. For round 1: check if you already submitted a report in this session. If yes, done.
  3. No memory of report → start review from beginning
Weekly Installs
1
First Seen
2 days ago