Skill

Automate Terminal Sessions with Tmux

A skill for scripting tmux sessions, windows, and panes non-interactively - persistent SSH workflows and multi-pane automation.


91
Spark score
out of 100
Updated last month
Version 13.1.0

Add to Favorites

Why it matters

Master tmux for persistent, organized, and automated terminal sessions. Keep your work alive across disconnections and streamline complex command-line tasks.

Outcomes

What it gets done

01

Manage persistent terminal sessions across SSH disconnects

02

Create and manage multi-pane window layouts

03

Automate tmux commands from shell scripts

04

Configure custom tmux keybindings and settings

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/ag-tmux | bash

Overview

tmux - Terminal Multiplexer

A skill for scripting tmux session, window, and pane management non-interactively, covering persistent SSH workflows, multi-pane workspace automation, and configuration. Use it for persistent remote terminal sessions and scriptable multi-pane tmux automation; verify the target pane before send-keys to avoid sending keystrokes to the wrong session.

What it does

This skill covers tmux session management, window/pane layout, keybinding patterns, and scriptable non-interactive automation - keeping terminal sessions alive across SSH disconnects and splitting work across multiple panes. It explains the three-level hierarchy (sessions survive disconnects, windows are tabs within a session, panes are splits within a window), all controllable from outside via tmux <command> or from inside via the prefix key (Ctrl-b by default). Session management covers creating named/detached sessions (optionally launching straight into a command with explicit terminal dimensions), attaching, listing, killing, renaming, switching, and checking existence with has-session for idempotent scripts. Window management covers creating windows (optionally running a command), listing, selecting by name or index, renaming, killing, and moving windows, plus the standard prefix keybindings (c new window, , rename, & kill, n/p next/previous). Pane management covers vertical/horizontal splitting (optionally running a command immediately), selecting, resizing, zooming to fullscreen, swapping, and killing panes, plus their prefix keybindings. A key non-interactive automation pattern is send-keys to type commands (and Enter) into a specific pane without attaching, sending Ctrl-C to stop a process, pre-filling a prompt without pressing Enter, and capture-pane to read a pane's current output (useful for grepping for status/errors from a script). A full worked example scripts an entire multi-pane dev workspace from scratch - checking for an existing session first, creating an editor window split with a test-runner pane, a server window split with log tailing, and a general shell window, then attaching. Configuration examples for ~/.tmux.conf cover remapping the prefix key, enabling mouse support, 1-based window/pane numbering, window renumbering on close, larger scrollback history, vi-style copy-mode keys, faster escape-time, a config-reload binding, intuitive split keybindings that inherit the current pane's working directory, and a status-bar customization. Copy mode and scrollback coverage includes entering copy mode, vi-style search/select/copy, pasting the most recent buffer, listing/showing/saving/loading paste buffers, and piping a pane's live output to a file via pipe-pane. Practical automation patterns include an idempotent create-or-attach helper function, a helper to launch a background window and tail its output, a polling helper that waits for specific output to appear in a pane (with timeout), and a helper to kill all background windows matching a name prefix. Remote/SSH workflows show attaching to (or creating) a session immediately on SSH connect, firing a detached remote session and disconnecting, read-only attach for watching another session, and shared-session pair programming where two users attach to the same session. Best practices: always name sessions in scripts, guard creation with has-session for idempotency, set explicit -x/-y dimensions for detached sessions so terminal-size-sensitive commands behave correctly, prefer send-keys ... Enter over piping stdin (works even against interactive programs), version-control ~/.tmux.conf, and use prefix-less bindings only for keys that won't conflict with application shortcuts. Security notes: send-keys executes without confirmation, so scripts must verify the target pane before sending; read-only attach (-r) should be used when sharing sessions to prevent accidental input; secrets should not be stored in window/pane titles or environment variables on shared machines. A common-pitfalls section maps specific symptoms (no server running, 0x0 pane size, send-keys typing but not executing, duplicate sessions per script run, broken copy-mode selection) to their fixes.

When to use - and when NOT to

Use it when setting up or managing persistent terminal sessions on remote servers, running long-running processes that must survive SSH disconnects, scripting multi-pane terminal layouts, or automating tmux commands from bash scripts without user interaction.

Inputs and outputs

Inputs: the desired session/window/pane layout or automation task (persistent remote session, multi-pane dev workspace, scripted command dispatch, or output polling).
Outputs: working tmux CLI commands or bash scripts for the requested session/window/pane management, non-interactive command dispatch, or ~/.tmux.conf configuration.

tmux has-session -t work 2>/dev/null || tmux new-session -d -s work
tmux send-keys -t work:1.0 "npm test -- --watch" Enter
tmux capture-pane -t work:1.0 -p | grep "ERROR"

Who it's for

Developers and ops engineers managing remote server sessions, long-running processes, or multi-pane terminal workflows who need session persistence across disconnects and scriptable, non-interactive tmux automation.

Source README

tmux keeps terminal sessions alive across SSH disconnects, splits work across multiple panes, and enables fully scriptable terminal automation. This skill covers session management, window/pane layout, keybinding patterns, and using tmux non-interactively from shell scripts - essential for remote servers, long-running jobs, and automated workflows.

FAQ

Common questions

Discussion

Questions & comments ยท 0

Sign In Sign in to leave a comment.