/tmux
Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.
$ npx -y skills add flora131/atomic --skill tmux --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/tmux
Context preview
The summary Claude sees to decide when to auto-load this skill.
Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.
SKILL.md
tmux.SKILL.mdname: tmux
description: "Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts."
metadata:
{
"atomic":
{
"os": ["darwin", "linux", "windows"],
"requires": { "bins": ["tmux", "psmux"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "tmux",
"bins": ["tmux"],
"label": "Install tmux (brew)",
},
{
"id": "winget-psmux",
"kind": "winget",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (WinGet)",
},
{
"id": "cargo-psmux",
"kind": "cargo",
"crate": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Cargo)",
},
{
"id": "scoop-psmux",
"kind": "scoop",
"bucket": "https://github.com/psmux/scoop-psmux",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Scoop)",
},
{
"id": "choco-psmux",
"kind": "choco",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Chocolatey)",
},
],
},
}tmux
Use for existing interactive tmux sessions. For one-shot commands, use normal shell. When a command must outlive a tool call, start it inside an interactive tmux session; Atomic tools do not provide background execution.
On Windows, use [psmux](https://github.com/psmux/psmux), the native Windows tmux-compatible multiplexer. psmux automatically provides the `tmux` alias, so keep using the `tmux` commands below; no command changes are needed.
When this skill is invoked, first confirm `tmux` is available before running tmux commands (`command -v tmux` or `tmux -V`; on Windows PowerShell, `Get-Command tmux`). If `tmux` is not found, tell the user to install tmux on macOS/Linux or psmux on Windows, depending on their OS, using one of the options below.
Installation
Choose the install path that matches the host OS and package manager.
macOS/Linux tmux
Package managers are preferred when available:
brew install tmux
To build official tmux from a release tarball, install `libevent` 2.x, `ncurses`, a C compiler, `make`, `pkg-config`, and `yacc` or `bison`, then run:
./configure && make
sudo make install
To build the latest tmux from version control, also install `autoconf` and `automake`:
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
sudo make install
Windows psmux
psmux installs `psmux`, `pmux`, and `tmux`; this skill should continue to use `tmux` in examples and scripts.
winget install psmux
cargo install psmux
scoop bucket add psmux https://github.com/psmux/scoop-psmux
scoop install psmux
choco install psmux
Alternatively, download the latest `.zip` from GitHub Releases and add it to `PATH`, or build from source with Cargo:
git clone https://github.com/psmux/psmux.git
cd psmux
cargo build --release
Basics
tmux ls
tmux list-windows -t shared
tmux list-panes -t shared:0
tmux capture-pane -t shared:0.0 -p
tmux capture-pane -t shared:0.0 -p -S -
Target format: `session:window.pane`, e.g. `shared:0.0`.
Send input
Literal text, then Enter:
tmux send-keys -t shared:0.0 -l -- "Please continue"
tmux send-keys -t shared:0.0 Enter
Special keys:
tmux send-keys -t shared:0.0 C-c
tmux send-keys -t shared:0.0 C-d
tmux send-keys -t shared:0.0 Escape
Use `-l --` for arbitrary text. Split text and Enter to avoid paste/newline surprises.
Sessions
tmux new-session -d -s worker
tmux rename-session -t old new
tmux kill-session -t worker
Prompt checks
tmux capture-pane -t worker-3 -p | tail -20
tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯"
Approve/select only when the prompt is understood:
tmux send-keys -t worker-3 -l -- "y"
tmux send-keys -t worker-3 Enter
QA/testing and analysis
Prefer read-only inspection before sending input. These commands are especially useful for diagnosing interactive tests, stuck agents, TUI apps, and long-running CLI workflows.
Discover every pane with useful state:
tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{pane_current_command} #{pane_current_path} active=#{pane_active} dead=#{pane_dead}'Capture output for assertions or log review:
tmux capture-pane -t shared:0.0 -p -S - # full scrollback
tmux capture-pane -t shared:0.0 -p -S - -J # join wrapped lines
tmux capture-pane -t shared:0.0 -p -S -1000 # recent output only
tmux capture-pane -t shared:0.0 -p -e -S -1000 # include escape/color codes for TUI debugging
Inspect what a pane is running:
tmux display-message -p -t shared:0.0 '#{pane_current_command} #{pane_current_path} pid=#{pane_pid}'
tmux show-messagesStream pane output to a file for later analysis without interrupting the process:
tmux pipe-pane -t shared:0.0 -o 'cat >> /tmp/tmux-pane-shared-0-0.log'
Coordinate tests or scripts with tmux signals:
tmux wait-for qa-ready # wait
tmux wait-for -S qa-ready # signal
Keep failed commands visible and label panes for easier reports:
tmux set-option -t shared remain-on-exit on
tmux select-pane -t shared:0.0 -T "api-tests"
If a tmux-compatible implementation does not support a specific format variable or option, fall back to the simpler `list-panes`, `capture-pane`, and `send-keys` forms above.
Helpers
- `scripts/find-sessions.sh`: discover sessions.
- `scripts/wait-for-text.sh`: wait until pane ou
Read more
name: tmux
description: "Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts."
metadata:
{
"atomic":
{
"os": ["darwin", "linux", "windows"],
"requires": { "bins": ["tmux", "psmux"] },
"install":
[
{
"id": "brew",
"kind": "brew",
"formula": "tmux",
"bins": ["tmux"],
"label": "Install tmux (brew)",
},
{
"id": "winget-psmux",
"kind": "winget",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (WinGet)",
},
{
"id": "cargo-psmux",
"kind": "cargo",
"crate": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Cargo)",
},
{
"id": "scoop-psmux",
"kind": "scoop",
"bucket": "https://github.com/psmux/scoop-psmux",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Scoop)",
},
{
"id": "choco-psmux",
"kind": "choco",
"package": "psmux",
"bins": ["tmux"],
"label": "Install psmux (Chocolatey)",
},
],
},
}tmux
Use for existing interactive tmux sessions. For one-shot commands, use normal shell. When a command must outlive a tool call, start it inside an interactive tmux session; Atomic tools do not provide background execution.
On Windows, use [psmux](https://github.com/psmux/psmux), the native Windows tmux-compatible multiplexer. psmux automatically provides the `tmux` alias, so keep using the `tmux` commands below; no command changes are needed.
When this skill is invoked, first confirm `tmux` is available before running tmux commands (`command -v tmux` or `tmux -V`; on Windows PowerShell, `Get-Command tmux`). If `tmux` is not found, tell the user to install tmux on macOS/Linux or psmux on Windows, depending on their OS, using one of the options below.
Installation
Choose the install path that matches the host OS and package manager.
macOS/Linux tmux
Package managers are preferred when available:
brew install tmux
To build official tmux from a release tarball, install `libevent` 2.x, `ncurses`, a C compiler, `make`, `pkg-config`, and `yacc` or `bison`, then run:
./configure && make sudo make install
To build the latest tmux from version control, also install `autoconf` and `automake`:
git clone https://github.com/tmux/tmux.git cd tmux sh autogen.sh ./configure && make sudo make install
Windows psmux
psmux installs `psmux`, `pmux`, and `tmux`; this skill should continue to use `tmux` in examples and scripts.
winget install psmux cargo install psmux scoop bucket add psmux https://github.com/psmux/scoop-psmux scoop install psmux choco install psmux
Alternatively, download the latest `.zip` from GitHub Releases and add it to `PATH`, or build from source with Cargo:
git clone https://github.com/psmux/psmux.git cd psmux cargo build --release
Basics
tmux ls tmux list-windows -t shared tmux list-panes -t shared:0 tmux capture-pane -t shared:0.0 -p tmux capture-pane -t shared:0.0 -p -S -
Target format: `session:window.pane`, e.g. `shared:0.0`.
Send input
Literal text, then Enter:
tmux send-keys -t shared:0.0 -l -- "Please continue" tmux send-keys -t shared:0.0 Enter
Special keys:
tmux send-keys -t shared:0.0 C-c tmux send-keys -t shared:0.0 C-d tmux send-keys -t shared:0.0 Escape
Use `-l --` for arbitrary text. Split text and Enter to avoid paste/newline surprises.
Sessions
tmux new-session -d -s worker tmux rename-session -t old new tmux kill-session -t worker
Prompt checks
tmux capture-pane -t worker-3 -p | tail -20 tmux capture-pane -t worker-3 -p | rg "proceed|permission|Yes|No|❯"
Approve/select only when the prompt is understood:
tmux send-keys -t worker-3 -l -- "y" tmux send-keys -t worker-3 Enter
QA/testing and analysis
Prefer read-only inspection before sending input. These commands are especially useful for diagnosing interactive tests, stuck agents, TUI apps, and long-running CLI workflows.
Discover every pane with useful state:
tmux list-panes -a -F '#{session_name}:#{window_index}.#{pane_index} #{pane_current_command} #{pane_current_path} active=#{pane_active} dead=#{pane_dead}'Capture output for assertions or log review:
tmux capture-pane -t shared:0.0 -p -S - # full scrollback tmux capture-pane -t shared:0.0 -p -S - -J # join wrapped lines tmux capture-pane -t shared:0.0 -p -S -1000 # recent output only tmux capture-pane -t shared:0.0 -p -e -S -1000 # include escape/color codes for TUI debugging
Inspect what a pane is running:
tmux display-message -p -t shared:0.0 '#{pane_current_command} #{pane_current_path} pid=#{pane_pid}'
tmux show-messagesStream pane output to a file for later analysis without interrupting the process:
tmux pipe-pane -t shared:0.0 -o 'cat >> /tmp/tmux-pane-shared-0-0.log'
Coordinate tests or scripts with tmux signals:
tmux wait-for qa-ready # wait tmux wait-for -S qa-ready # signal
Keep failed commands visible and label panes for easier reports:
tmux set-option -t shared remain-on-exit on tmux select-pane -t shared:0.0 -T "api-tests"
If a tmux-compatible implementation does not support a specific format variable or option, fall back to the simpler `list-panes`, `capture-pane`, and `send-keys` forms above.
Helpers
- `scripts/find-sessions.sh`: discover sessions.
- `scripts/wait-for-text.sh`: wait until pane ou
The verifiable coding agent runtime. Define your coding agent's process in natural language with stages, checks, and approval gates instead of hoping it follows your instructions.
Repo: flora131/atomic
Other skills on atomic.
- /intercom
Streamline session-to-session coordination with the intercom extension. Send messages, delegate tasks, and coordinate work across multiple atomic sessions on the same machine. Use for planner-worker workflows, cross-session context sharing, and real-time collaboration between
Open skill - /liteparse
Use this skill whenever a task involves a document file (PDF, DOCX, PPTX, XLSX, or image) and you need to read it or pull text, tables, or specific values out of it — to answer a question about its contents, look up a figure, or extract data. Provides fast, local, model-free
Open skill - /playwright-cli
Automate browser interactions, test web pages and work with Playwright tests.
Open skill - /subagent
Delegate work to builtin or custom subagents with single-agent, parallel, selective async, forked-context, and intercom-coordinated runs. Use for bounded specialist delegation where a single parent agent stays in control while subagents contribute locate, analyze, pattern-find,
Open skill - /tdd
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
Open skill - /create-spec
Create a detailed execution plan/spec/PRD for implementing features or refactors in a codebase, designed around the program's entrypoints, the doors that carry domain intent, by leveraging existing research in the codebase.
Open skill

