К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

smux — скилл для Claude Code: что делает и как установить

Скилл связывает агентов в сессиях tmux и управляет панелями терминала через утилиту tmux-bridge. Пригодится при параллельной работе нескольких процессов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add ShawnPana/smux --skill smux -a claude-code
Открыть на GitHub

Что делает smux

Скилл даёт агенту доступ к терминальным панелям через CLI-инструмент tmux-bridge и прямые команды tmux. Инструмент разделяет действия на отдельные шаги: отправку текста, нажатие служебных клавиш и чтение вывода. Передача сообщений автоматически подставляет имя отправителя и идентификатор панели для ответа.

В tmux-bridge встроен защитный механизм read guard, поэтому агент обязан прочитать целевую панель перед отправкой любых данных. После ввода текста метка чтения сбрасывается, исключая слепую отправку команд в терминал. Для восстановления закрытых окон предусмотрена вспомогательная утилита smux-pane.

Для работы необходимы установленные бинарники tmux и tmux-bridge, а операционная система должна быть на базе Linux или macOS. На неподготовленной системе без этих утилит в окружении скилл сразу выдаст ошибку.

Какие задачи решает

  • связать двух агентов в соседних панелях tmux
  • прочитать вывод фонового процесса без переключения окон
  • отправить команду в терминал с проверкой содержимого панели
  • вернуть недавно закрытое окно tmux через smux-pane

Примеры запросов агенту

  • Отправь сообщение агенту в панели codex и передай задачу на ревью
  • Проверь вывод в панели worker и подтверди выполнение
  • Восстанови последнюю закрытую панель в tmux

Как установить smux

1Через Skills CLI (Vercel)

npx skills add ShawnPana/smux --skill smux -a claude-code

2Вручную: положить файлы

~/.claude/skills/smux/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/smux/

Похожие

configure-notifications Yeachan-Heo Скилл настраивает отправку оповещений в Telegram, Discord или Slack через диалог с агентом. Пригодится, чтобы узнавать о завершении задач или запросах ввода без проверки терминала. Claude Code CX Codex Cursor +1 775установок tavily-extract tavily-ai Извлекает чистый текст или Markdown с указанных страниц через Tavily CLI. Пригодится для страниц с JavaScript и выборки фрагментов по запросу. Claude Code CX Codex Cursor +1 18 000установок opencode-delegate amElnagdy Скилл передаёт задачи по коду утилите OpenCode CLI, оставляя вам роль ревизора. Подходит для фонового рефакторинга и правок без потери контроля над коммитами. Claude Code CX Codex Cursor +1 6 600установок workflow-init Vercel Inc. Ставит и настраивает Vercel Workflow SDK в проекте, где пакета workflow ещё нет: сам определяет фреймворк и ведёт по официальному гайду до запуска первого workflow. Claude Code CX Codex Cursor +1 3 800установок omc-plan Yeachan-Heo Скилл помогает составить структурированный план разработки до написания кода и выявляет скрытые требования через диалог с пользователем. Claude Code CX Codex Cursor +1 760установок write-issue tldraw Скилл задаёт правила оформления и триажа задач GitHub в стиле репозитория tldraw. Помогает составить понятный заголовок, структурировать описание и расставить метки. Claude Code CX Codex Cursor +1 405установок setup-matt-pocock-skills Matt Pocock Скилл настраивает репозиторий для инженерных скиллов Matt Pocock: задаёт трекер задач, метки триажа и расположение доменной документации. Запустите его перед первым использованием остальных скиллов. Claude Code 1 052 851установок to-tickets Matt Pocock Разбивает план, спецификацию или переписку на небольшие сквозные задачи и отмечает, какие из них блокируют остальные. Пригодится, когда нужно согласовать порядок работы до публикации задач в трекере. Claude Code 711 230установок

Вопросы о smux

Как установить smux в Claude Code?

Установите скилл командой npx skills add ShawnPana/smux --skill smux -a claude-code.

Зачем нужен smux?

Он позволяет нескольким агентам общаться между панелями tmux и контролировать терминальные процессы.

Что требуется для работы скилла smux?

Требуются операционная система macOS или Linux, а также бинарные файлы tmux и tmux-bridge в системном пути.

Исходный текст

SKILL.md · MIT
---
name: smux
description: Control tmux panes and communicate between AI agents. Use this skill whenever the user mentions tmux panes, cross-pane communication, sending messages to other agents, reading other panes, managing tmux sessions, or interacting with processes running in tmux. Includes tmux-bridge CLI for agent-to-agent messaging and raw tmux commands for direct session control.
metadata:
  { "openclaw": { "emoji": "🖥️", "os": ["darwin", "linux"], "requires": { "bins": ["tmux", "tmux-bridge"] } } }
---

# smux

Tmux pane control and cross-pane agent communication. Use `tmux-bridge` (the high-level CLI) for all cross-pane interactions. Fall back to raw tmux commands only when you need low-level control.

## tmux-bridge — Cross-Pane Communication

A CLI that lets any AI agent interact with any other tmux pane. Works via plain bash. Every command is **atomic**: `type` types text (no Enter), `keys` sends special keys, `read` captures pane content.

### DO NOT WAIT OR POLL

Other panes have agents that will reply to you via tmux-bridge. Their reply appears directly in YOUR pane as a `[tmux-bridge from:...]` message. Do not sleep, poll, read the target pane for a response, or loop. Type your message, press Enter, and move on.

The ONLY time you read a target pane is:
- **Before** interacting with it (enforced by the read guard)
- **After typing** to verify your text landed before pressing Enter
- When interacting with a **non-agent pane** (plain shell, running process)

### Read Guard

The CLI enforces read-before-act. You cannot `type` or `keys` to a pane unless you have read it first.

1. `tmux-bridge read <target>` marks the pane as "read"
2. `tmux-bridge type/keys <target>` checks for that mark — errors if you haven't read
3. After a successful `type`/`keys`, the mark is cleared — you must read again before the next interaction

```
$ tmux-bridge type codex "hello"
error: must read the pane before interacting. Run: tmux-bridge read codex
```

### Command Reference

| Command | Description | Example |
|---|---|---|
| `tmux-bridge list` | Show all panes with target, pid, command, size, label | `tmux-bridge list` |
| `tmux-bridge type <target> <text>` | Type text without pressing Enter | `tmux-bridge type codex "hello"` |
| `tmux-bridge message <target> <text>` | Type text with auto sender info and reply target | `tmux-bridge message codex "review src/auth.ts"` |
| `tmux-bridge read <target> [lines]` | Read last N lines (default 50) | `tmux-bridge read codex 100` |
| `tmux-bridge keys <target> <key>...` | Send special keys | `tmux-bridge keys codex Enter` |
| `tmux-bridge name <target> <label>` | Label a pane (visible in tmux border) | `tmux-bridge name %3 codex` |
| `tmux-bridge resolve <label>` | Print pane target for a label | `tmux-bridge resolve codex` |
| `tmux-bridge id` | Print this pane's ID | `tmux-bridge id` |

### Target Resolution

Targets can be:
- **tmux native**: `session:window.pane` (e.g. `shared:0.1`), pane ID (`%3`), or window index (`0`)
- **label**: Any string set via `tmux-bridge name` — resolved automatically

### Read-Act-Read Cycle

Every interaction follows **read → act → read**. The CLI enforces this.

**Sending a message to an agent:**
```bash
tmux-bridge read codex 20                    # 1. READ — satisfy read guard
tmux-bridge message codex 'Please review src/auth.ts'
                                              # 2. MESSAGE — auto-prepends sender info, no Enter
tmux-bridge read codex 20                    # 3. READ — verify text landed
tmux-bridge keys codex Enter                 # 4. KEYS — submit
# STOP. Do NOT read codex for a reply. The agent replies into YOUR pane.
```

**Approving a prompt (non-agent pane):**
```bash
tmux-bridge read worker 10                   # 1. READ — see the prompt
tmux-bridge type worker "y"                  # 2. TYPE
tmux-bridge read worker 10                   # 3. READ — verify
tmux-bridge keys worker Enter                # 4. KEYS — submit
tmux-bridge read worker 20                   # 5. READ — see the result
```

### Messaging Convention

The `message` command auto-prepends sender info and location:

```
[tmux-bridge from:claude pane:%4 at:3:0.0] Please review src/auth.ts
```

The receiver gets: who sent it (`from`), the exact pane to reply to (`pane`), and the session/window location (`at`). When you see this header, reply using tmux-bridge to the pane ID from the header.

### Agent-to-Agent Workflow

```bash
# 1. Label yourself
tmux-bridge name "$(tmux-bridge id)" claude

# 2. Discover other panes
tmux-bridge list

# 3. Send a message (read-act-read)
tmux-bridge read codex 20
tmux-bridge message codex 'Please review the changes in src/auth.ts'
tmux-bridge read codex 20
tmux-bridge keys codex Enter
```

### Example Conversation

**Agent A (claude) sends:**
```bash
tmux-bridge read codex 20
tmux-bridge message codex 'What is the test coverage for src/auth.ts?'
tmux-bridge read codex 20
tmux-bridge keys codex Enter
```

**Agent B (codex) sees in their prompt:**
```
[tmux-bridge from:claude pane:%4 at:3:0.0] What is the test coverage for src/auth.ts?
```

**Agent B replies using the pane ID from the header:**
```bash
tmux-bridge read %4 20
tmux-bridge message %4 '87% line coverage. Missing the OAuth refresh token path (lines 142-168).'
tmux-bridge read %4 20
tmux-bridge keys %4 Enter
```

---

## Raw tmux Commands

Use these when you need direct tmux control beyond what tmux-bridge provides — session management, window navigation, creating panes, or low-level scripting.

### Capture Output

```bash
tmux capture-pane -t shared -p | tail -20    # Last 20 lines
tmux capture-pane -t shared -p -S -          # Entire scrollback
tmux capture-pane -t shared:0.0 -p           # Specific pane
```

### Send Keys

```bash
tmux send-keys -t shared -l -- "text here"   # Type text (literal mode)
tmux send-keys -t shared Enter               # Press Enter
tmux send-keys -t shared Escape              # Press Escape
tmux send-keys -t shared C-c                 # Ctrl+C
tmux send-keys -t shared C-d                 # Ctrl+D (EOF)
```

For interactive TUIs, split text and Enter into separate sends:
```bash
tmux send-keys -t shared -l -- "Please apply the patch"
sleep 0.1
tmux send-keys -t shared Enter
```

### Closed Panes and Windows

The human closes panes with `Option+w` and windows with `Option+Shift+w`, and reopens the most recent one with `Option+Shift+n`. The same operations are available as a CLI, useful when the user asks you to bring back a pane or to close one in a way that can be undone:

```bash
smux-pane list                 # what can be reopened, newest first
smux-pane revive               # reopen the most recently closed pane or window
smux-pane close %3             # close a pane so it can be reopened
smux-pane close-window %3      # close the whole window %3 is in, as one entry
smux-pane peek %3              # what close would record (cwd, command, claude session)
```

A reopened pane comes back in its old slot and directory. A pane that was running Claude Code resumes the exact conversation it had; other processes are not restarted. Window numbers always equal their position in the status bar, so do not rely on a window keeping its number after another window is closed — address windows by name or by pane ID (`%N`), which never changes.

### Panes and Windows

```bash
# Create panes (prefer over new windows)
tmux split-window -h -t SESSION              # Horizontal split
tmux split-window -v -t SESSION              # Vertical split
tmux select-layout -t SESSION tiled          # Re-balance

# Navigate
tmux select-window -t shared:0
tmux select-pane -t shared:0.1
tmux list-windows -t shared
```

### Session Management

```bash
tmux list-sessions
tmux new-session -d -s newsession
tmux kill-session -t sessionname
tmux rename-session -t old new
```

### Claude Code Patterns

```bash
# Check if session needs input
tmux capture-pane -t worker-3 -p | tail -10 | grep -E "❯|Yes.*No|proceed|permission"

# Approve a prompt
tmux send-keys -t worker-3 'y' Enter

# Check all sessions
for s in shared worker-2 worker-3 worker-4; do
  echo "=== $s ==="
  tmux capture-pane -t $s -p 2>/dev/null | tail -5
done
```

## Tips

- **Read guard is enforced** — you MUST read before every `type`/`keys`
- **Every action clears the read mark** — after `type`, read again before `keys`
- **Never wait or poll** — agent panes reply via tmux-bridge into YOUR pane
- **Label panes early** — easier than using `%N` IDs
- **`type` uses literal mode** — special characters are typed as-is
- **`read` defaults to 50 lines** — pass a higher number for more context
- **Non-agent panes** are the exception — you DO need to read them to see output
- Use `capture-pane -p` to print to stdout (essential for scripting)
- Target format: `session:window.pane` (e.g., `shared:0.0`)

© ShawnPana · MIT · ShawnPana/smux

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой