con un clic
tmux
// Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.
// Control tmux-compatible sessions/windows/panes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.
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.
Delegate work to builtin or custom subagents with single-agent, chain, parallel, async, forked-context, and intercom-coordinated workflows. Use for parallel codebase discovery, debug-and-fix, refinement, and multi-step tasks where a single parent agent stays in control while specialist subagents contribute locate, analyze, pattern-find, research, debug, or simplify passes.
Document codebase as-is with research directory for historical context.
Automate browser interactions, test web pages and work with Playwright tests.
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Example skill loaded from resources_discover
| 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)"}]}} |
Use for existing interactive tmux sessions. For one-shot commands, use normal shell. For new non-interactive background jobs, use background execution.
On Windows, use 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.
Choose the install path that matches the host OS and package manager.
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
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
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.
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.
tmux new-session -d -s worker
tmux rename-session -t old new
tmux kill-session -t worker
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
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-messages
Stream 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.
scripts/find-sessions.sh: discover sessions.scripts/wait-for-text.sh: wait until pane output contains text.capture-pane -p prints to stdout for scripts.-S - captures full scrollback.