tmux

Installation
SKILL.md

tmux CLI Skill

Use tmux commands via Bash to manage terminal sessions, windows, and panes. Do NOT use the tmux MCP server — use the CLI directly.

All commands below are safe to run and do not require user confirmation unless they kill sessions or panes containing unsaved work.

Session Management

tmux list-sessions                          # list all sessions (alias: tmux ls)
tmux new-session -d -s myapp                # create detached session
tmux new-session -d -s myapp -c ~/project   # create with working directory
tmux kill-session -t myapp                  # kill a session (confirm first)
tmux rename-session -t old new              # rename a session
tmux has-session -t myapp 2>/dev/null       # check if session exists (exit code)

Window Management

tmux new-window -t myapp                    # new window in session
tmux new-window -t myapp -n build           # new window with name
tmux new-window -t myapp -n build -c ~/src  # with name and working directory
tmux rename-window -t myapp:0 main          # rename window
tmux select-window -t myapp:1               # switch to window by index
tmux kill-window -t myapp:1                 # kill a window (confirm first)
tmux list-windows -t myapp                  # list windows in a session

Pane Management

tmux split-window -t myapp -h               # split horizontally (side by side)
tmux split-window -t myapp -v               # split vertically (top/bottom)
tmux split-window -t myapp -h -c ~/src      # split with working directory
tmux select-pane -t myapp:0.1               # select pane (session:window.pane)
tmux kill-pane -t myapp:0.1                 # kill a pane
tmux list-panes -t myapp:0                  # list panes in a window
tmux resize-pane -t myapp:0.1 -R 20         # resize pane right by 20 cells
tmux resize-pane -t myapp:0.1 -D 10         # resize pane down by 10 cells
# Resize directions: -U (up), -D (down), -L (left), -R (right)

Command Execution

# Send a command to a specific pane
tmux send-keys -t myapp:0.0 'make build' Enter

# Send keys without pressing Enter (useful for partial input)
tmux send-keys -t myapp:0.0 'echo hello'

# Send Ctrl-C to interrupt a running process
tmux send-keys -t myapp:0.0 C-c

# Run a command in a new window directly
tmux new-window -t myapp -n tests 'go test ./...'

Content Capture

# Capture visible pane content
tmux capture-pane -t myapp:0.0 -p

# Capture with scrollback history (last 100 lines)
tmux capture-pane -t myapp:0.0 -p -S -100

# Capture entire scrollback
tmux capture-pane -t myapp:0.0 -p -S -

# Check if a command is still running (look for shell prompt in output)
tmux capture-pane -t myapp:0.0 -p | tail -5

Layouts

tmux select-layout -t myapp:0 even-horizontal  # equal columns
tmux select-layout -t myapp:0 even-vertical     # equal rows
tmux select-layout -t myapp:0 main-horizontal   # large top, small bottom panes
tmux select-layout -t myapp:0 main-vertical     # large left, small right panes
tmux select-layout -t myapp:0 tiled             # equal grid

Target Syntax

Targets follow the pattern session:window.pane:

  • myapp — session named "myapp"
  • myapp:0 — first window in "myapp"
  • myapp:0.1 — second pane in first window of "myapp"
  • myapp:build — window named "build" in "myapp"

Common Workflows

Run a background process and check on it

tmux new-session -d -s bg
tmux send-keys -t bg 'long-running-command' Enter
# ... later ...
tmux capture-pane -t bg -p | tail -20    # check output

Start roachdev claude in a new pane with a prompt

tmux new-session -d -s dev -c ~/project
tmux send-keys -t dev "roachdev claude --prompt 'fix the failing tests'" Enter

Monitor a long-running command

tmux new-window -t dev -n watch
tmux send-keys -t dev:watch 'watch -n 5 curl -s http://localhost:8080/health' Enter
# Check on it later:
tmux capture-pane -t dev:watch -p

Multi-pane development layout

tmux new-session -d -s work -c ~/project
tmux split-window -t work -h              # editor | terminal
tmux split-window -t work:0.1 -v          # editor | terminal / logs
tmux send-keys -t work:0.1 'make watch' Enter
tmux send-keys -t work:0.2 'tail -f app.log' Enter
tmux select-layout -t work:0 main-vertical

Wait for a command to finish

# Poll until the shell prompt reappears
while ! tmux capture-pane -t myapp:0.0 -p | tail -1 | grep -q '\$'; do
  sleep 2
done
echo "Command finished"
tmux capture-pane -t myapp:0.0 -p | tail -20
Related skills
Installs
2
GitHub Stars
12
First Seen
Apr 14, 2026