{
  "schema_version": 1,
  "type": "skill",
  "slug": "claude-squad",
  "title": "Claude Squad",
  "brief": "Launch and manage 4 concurrent Claude Code remote control sessions via tmux. Includes a Gallia Viewer management dashboard with live status, start/restart/stop controls, watchdog auto-restart, and aut",
  "version": "1.0.1",
  "tags": [],
  "license": "MIT",
  "source_path": "SKILL.md",
  "readme": "Claude Squad launches 4 concurrent Claude Code **remote control** sessions in named tmux sessions (`alpha`, `beta`, `gamma`, `delta`). Each session runs `claude --dangerously-skip-permissions rc`, generating a session URL controllable from the Claude phone app.\n\n## Why tmux?\n\ntmux provides persistent terminal sessions that survive disconnects. Each Claude RC session runs inside its own tmux session, which means:\n\n- **Sessions persist** even if you close your browser or lose connection\n- **Output can be captured** programmatically (`tmux capture-pane`) for monitoring\n- **Sessions can be controlled** by sending keystrokes (`tmux send-keys`)\n- **Multiple sessions coexist** independently without interfering with each other\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────┐\n│  Adom Container                                  │\n│                                                  │\n│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐\n│  │  tmux    │  │  tmux    │  │  tmux    │  │  tmux    │\n│  │  alpha   │  │  beta    │  │  gamma   │  │  delta   │\n│  │          │  │          │  │          │  │          │\n│  │ claude   │  │ claude   │  │ claude   │  │ claude   │\n│  │ --skip   │  │ --skip   │  │ --skip   │  │ --skip   │\n│  │ rc       │  │ rc       │  │ rc       │  │ rc       │\n│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘\n│       │              │              │              │\n│       └──────────────┴──────┬───────┴──────────────┘\n│                             │\n│  ┌──────────────────────────┴───────────────────┐\n│  │  Gallia Viewer (GV)                           │\n│  │  - Live status dashboard                      │\n│  │  - Start / Restart / Stop controls            │\n│  │  - Watchdog auto-restart (15s interval)       │\n│  │  - Per-session chat output viewer             │\n│  │  - Auto-start on boot                         │\n│  └───────────────────────────────────────────────┘\n│                             │\n└─────────────────────────────┼───────────────────┘\n                              │\n                    ┌─────────┴─────────┐\n                    │  Claude Phone App  │\n                    │  (Remote Control)  │\n                    └───────────────────┘\n```\n\n## Gallia Viewer Dashboard\n\nThe squad has a full management UI built into Gallia Viewer. Features include:\n\n- **Live status** — green/yellow/red indicator showing how many sessions are running, auto-refreshes every 5 seconds\n- **Start / Restart / Stop** — buttons to launch all 4 sessions, restart the entire squad, or stop everything\n- **Per-session restart** — click the restart icon on any card to restart just that session\n- **Chat output** — click a session card to view its full tmux pane output (last 1000 lines), auto-scrolls to bottom\n- **Watchdog** — toggle to auto-restart any dead sessions every 15 seconds; shows restart count and recent restart log\n- **Start on boot** — checkbox (default ON) that auto-launches the squad when the GV server starts\n- **Explainer tooltip** — hover the `?` icon for a quick overview of why tmux is used\n\n## Phone App Experience\n\nOn the Claude phone app, each RC session appears as \"Remote Control session\" with the container ID. Currently the Claude CLI `rc` subcommand doesn't support custom session naming, so all 4 sessions look identical on the phone — differentiated only by their start timestamp. The GV dashboard compensates by clearly labeling each channel (Alpha, Beta, Gamma, Delta) with color-coded badges.\n\n## Session Naming\n\nSessions use the pattern `{repo}-{greek}`:\n\n| Session | Example tmux name |\n|---------|-------------------|\n| **Alpha** | `gallia-alpha` |\n| **Beta** | `gallia-beta` |\n| **Gamma** | `gallia-gamma` |\n| **Delta** | `gallia-delta` |\n\nThe repo name is derived from the container's `VSCODE_PROXY_URI` environment variable.\n\n## Commands\n\n| Action | How |\n|--------|-----|\n| Launch squad | `/claude-squad` or click \"Start Squad\" in GV |\n| Check status | GV dashboard (auto-refreshes) or `tmux list-sessions` |\n| Stop all | Click \"Stop Squad\" in GV |\n| Restart one | Click restart icon on individual card in GV |\n| Send prompt | `tmux send-keys -t {repo}-alpha \"your prompt\" Enter` |\n| View output | Click a session card in GV, or `tmux capture-pane -t {repo}-alpha -p -S -500` |\n| Enable watchdog | Toggle switch in GV dashboard |\n\n## Capabilities\n\n- Launch 4 concurrent Claude Code RC sessions in one click\n- Monitor session status with color-coded cards (green = running, red = dead)\n- View live chat output from any session\n- Auto-restart dead sessions with built-in watchdog (15-second check interval)\n- Auto-launch squad on container boot (configurable)\n- Restart individual sessions without affecting others\n- Send prompts to sessions via tmux\n- Full programmatic API via WebSocket and HTTP",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "kyle@adom.inc"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "sample_prompts": [],
  "discovery_triggers": [],
  "discovery_pitch": null,
  "metadata": {},
  "created_at": "2026-05-28T05:30:20.492Z",
  "updated_at": "2026-05-28T05:30:20.493Z",
  "sub_skills": [],
  "parent_app": null
}