hands-dev/hands
Hands — extra hands for your repo: an expo/station agent fleet for Claude Code on a per-repo coordination bus. Strict pass discipline (hub-and-spoke), wake-cost accounting, station provisioning with focus labels and self-managed prep books, a live SSE dashboard, and the books — an opt-in durable journal with browsable daily digests.
Open the live hands dashboard — boots hands serve in the background if it isn't already running, then opens the browser at the kitchen's single-page view (the rail, the line, questions, the menu, the book — live over SSE). Use when the principal says /hands:dashboard, "open the dashboard", "show me the board", or "show me the kitchen".
Run the hands expo (the expeditor at the pass) in the repo's MAIN checkout (agent id "expo"). Works the pass — fires tickets to stations against the principal's menu, adjudicates escalated questions, reviews everything that comes back, calls hands on finished dishes, and keeps the whole kitchen legible. Event-driven like a station — it arms a persistent Monitor on expo.notify so bus traffic wakes it instantly; run it via /loop /hands:expo, where the timer is NOT message polling but the time-based beat the Monitor can't provide (the ~15-minute utilization review + fallback heartbeat). Use when the principal says /hands:expo, "run the expo", "work the pass", or wants the command center processing the bus.
Send feedback about the hands plugin to its maintainer — collects the principal's note, stamps light context (handle, repo, date), and files it as a GitHub issue on hands-dev/hands, which lands in the maintainer's email via GitHub notifications. Use when the principal says /hands:feedback, "send feedback", "report a bug in hands", "this plugin is broken", or similar.
Print everything currently waiting on the principal — open to-do items and unanswered needs_human escalations, grouped by priority and terse. Invocable directly in any session, not routed through a running expo loop. Use when the principal says /hands:hands, "what needs my hands?", "what's waiting on me?", or wants the operator queue without opening the dashboard.
Set up hands for THIS repo from inside Claude Code — scaffolds hands.config.json (principal, optionally a shared books/durable-journal repo — books themselves are always on, local by default). Use when the principal says /hands:init, "set up hands here", "initialize the bus for this repo", or when a hands skill finds no config. Conversational wrapper over the hands init CLI (and hands books for attaching a shared books repo later).
Installs the standalone hands CLI into ~/.hands (lib + bin) by running the official installer (hands-cc.dev/install.sh), so hands works in a normal terminal outside Claude Code — not just on the plugin's own Bash-tool PATH. Optional; the plugin already puts hands on Claude Code's own Bash PATH without this. Use when the principal says /hands:install-cli, "put hands on my PATH", "install the hands CLI", "can I use hands in a regular terminal", or asks how to get hands working outside Claude Code.
The expo-driven end-of-shift close-out (hands#118) — stand down every station, sweep mergeable dishes, distill your own role-state notes into the efficiency-of-the-pass page (hands#115), close the books with a digest note, and prep tomorrow's in-flight work so each station knows what to pick up. Use when the principal says /hands:last-call, "close out the shift", "end of day", "wrap it up", "call it a night", or is wrapping for the day and wants a clean stop rather than leaving things mid-air.
The expo-driven shift-open (hands#156/#157) — read the previous shift's page from the books, read your own standing role-state page (hands#115), bring the expo's OWN checkout current, see which stations are ready for service, and re-confirm today's menu against what actually happened. The counterpart to /hands:last-call. Use when the principal says /hands:line-check, "open the kitchen", "start of shift", "what happened yesterday", or on the first pass of a new day before dispatching anything.
Sign the local hands plugin in with GitHub (browser-handoff OAuth against the hands cloud) so it knows who you are, your subscription tier, and where your cloud books/dashboard live. Entirely optional — free tier never needs an account, and every other hands command works identically whether or not you're signed in. Use when the principal says /hands:login, "sign in to hands", "connect my GitHub account", "what's my hands account", or when a skill needs to know the signed-in identity.
Turns on hands' global economy dial — every expo/station raises the bar on sub-agent fan-out, shifts review depth down one notch (never past the irreversible-action gates), and leans tickets toward the cheaper model tier. Machine-wide (every repo on this machine, not just the current one), takes effect on each pane's next hands_board poll — no restart needed. Use when the principal says /hands:low-usage, "go easy on usage", "be more judicious", "cut costs", or wants a cost-sensitive stretch without hand-editing config or re-explaining it every session.
Resets hands' global economy dial back to normal — undoes /hands:low-usage. Every expo/station goes back to today's default dispatch/review-depth/model-tier judgment, machine-wide (every repo on this machine), effective on each pane's next hands_board poll — no restart needed. Use when the principal says /hands:normal-usage, "back to normal usage", "turn off low-usage mode", "stop being so conservative", or wants to undo a prior /hands:low-usage.
Print the current rail — tickets grouped by dish, menu coverage, the needs-you lane, and station on-duty count — in the deterministic format the expo's own reports use. Invocable directly in any session, not routed through a running expo loop. Use when the principal says /hands:rail, "what's on the rail?", "show me the tickets", or wants a status snapshot without opening the dashboard.
Draft a recipe — a structured menu item (title, description, gherkin-flavored acceptance criteria) that replaces the old free-text "specials" list (hands#96/#137). Interviews the principal, writes the file, and can promote it straight onto today's menu. Use when the principal says /hands:recipe, "draft a recipe", "add this to the menu", or wants to define a piece of work with real acceptance criteria instead of a one-line priority.
Run the sous chef (hands#87/#171/#172/#164/#170) in a dedicated pane on this repo's bus (agent id "sous"). The expo's first escalation hop — resolves recipe/product judgment itself or bubbles it to the operator, who is already in this pane. Composition, sign-off, and the operator-primary panel move are LATER phases (hands#87 (c)/(d)); this phase gives the sous a real bus identity that the expo can wake. Event-driven like a station — arms a persistent Monitor on sous.notify; run it via /loop /hands:sous. Use when the principal says /hands:sous, "run the sous", or wants a dedicated pane for escalations.
Make THIS pane an autonomous, event-driven station on the hands bus. Arms a persistent Monitor on this station's .notify file so it wakes the instant a message or ticket lands — no timer polling. On each wake it drains the inbox, works its tickets or replies, then yields. Run via /loop /hands:station; the Monitor is the wake signal and a long heartbeat is only a fallback. Use when the principal says /hands:station, "make this pane a station", "auto-respond to the bus", or runs /loop /hands:station.