skills/tmuxx/SKILL.md
Deterministic tmuxx CLI + interactive TUI with pane-level activity insights. Use for tmux orchestration, worktree task execution, and real-time visibility into which agents are running, idle, or blocked on user input. CLI with JSON output for agents; TUI with visual status indicators for humans.
npx skillsauth add ladderchaos/tmuxx tmuxxInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to control tmux and worktree-based agent tasks through tmuxx agent.
tmuxx agent for session/window/worktree management. If pane command passthrough fails on a target environment, fall back to raw tmux send-keys for shell builtins.--json so outputs are machine-parseable.start-tasktask-reportcomplete-taskabort-taskwatchsupervisesplit-pane, send-command, etc.) when workflow commands cannot solve the request.tmuxx agent start-task <session_name> "<task prompt>" --json
Optional:
--branch <name>--base-branch <branch>--agent-command "claude -p" (or other compatible command)If --agent-command is omitted, tmuxx uses TMUXX_AGENT_COMMAND when set, otherwise claude -p in a normal terminal. Inside an existing agent session, you must pass --agent-command explicitly or set TMUXX_AGENT_COMMAND. tmuxx also rejects same-family nested launches like codex ... from Codex when it can detect the current runtime.
tmuxx agent create-session dev --json
tmuxx agent create-window dev --name editor --json
tmuxx agent create-window dev --name logs --json
tmuxx agent list-sessions --json
tmuxx agent task-report <branch> --json
tmuxx agent list-worktrees --json
tmuxx agent list-sessions --json
tmuxx agent watch --session <name> --event needs_prompt --json
tmuxx agent supervise --supervisor-pane <%id> --worker-session <name> --json
task-report now includes pane-level details for each task:
pane_details[].status: "idle", "running", "waiting_for_input", "error"pane_details[].needs_prompt: True if pane is waiting for user input/approval (permission request, confirmation, etc.)pane_details[].window_name: Which window the pane is inpane_details[].command: What command is runningwatch adds an event-driven waiting primitive on top of those signals:
--event needs_prompt waits for approval/input walls--event completed waits for panes to be busy, then all return to idle--event attention waits for panes to need input or finish after they were busy--event text --pattern <regex> waits for output text to appear--notify triggers a desktop notification when matched--exec <command> runs a callback with TMUXX_WATCH_* environment variables--assume-busy lets completed/attention match the current terminal state immediately when a worker is already done or already blockedsupervise reuses those same worker filters/events and sends a structured handoff prompt into a supervisor pane instead of running a shell callback. Use it when one agent should wake and continue driving another blocked or recently finished worker.
list-sessions also includes pane-level statuses for every session, so you can see at a glance:
tmuxx agent complete-task <branch> --test-command "<cmd>" --json
tmuxx agent abort-task <branch> --json
tmuxx agent list-sessions --json
tmuxx agent status --json # unified view of all running agents
tmuxx agent capture-pane %0 --lines 200 --json
tmuxx agent capture-window @0 --json
tmuxx agent read-agent-log <branch> --json
tmuxx agent watch --session claude --event needs_prompt --notify --json
tmuxx agent watch --branch <branch> --event attention --json
tmuxx agent watch --pane %0 --event attention --assume-busy --json
tmuxx agent watch --session claude --event text --pattern "Pushed" --exec "python3 watcher.py" --json
tmuxx agent supervise --supervisor-pane %9 --worker-session claude --goal "finish the task" --json
run-and-capture returns output scoped to the command you sent (not full pane history).
status shows all worktree agents with branch, status, panes, and last output line.
tmuxx agent create-session <name> --json
tmuxx agent create-window <session> --name <name> --json
tmuxx agent split-pane %0 --horizontal --json
tmuxx agent send-command %0 --json -- <command text>
tmuxx agent send-text %0 --json -- <text>
tmuxx agent send-keys %0 C-c --json
tmuxx agent send-keys %0 --literal --json -- <text>
tmuxx agent run-and-capture %0 --wait-seconds 2 --lines 200 --json -- <command text>
tmuxx agent resize-pane %0 right --amount 10 --json
tmuxx agent kill-pane %0 --json
tmuxx agent kill-window @0 --json
tmuxx agent kill-session <name> --json
tmuxx now tracks activities at the pane level to provide visibility into concurrent agent workflows (inspired by Superterm's "agentic attention" concept):
idle: Pane is waiting at a shell prompt (bash, zsh, etc.)running: Pane has an active process (agent, compiler, test runner)waiting_for_input: Pane is expecting user input (permission request, confirmation, etc.)error: Pane process exited with errorThe needs_prompt flag detects when a pane is blocked waiting for user action. Patterns detected:
{
"pane_details": [
{
"pane_id": "%0",
"window_name": "editor",
"command": "claude",
"status": "running",
"needs_prompt": false
},
{
"pane_id": "%1",
"window_name": "logs",
"command": "tail",
"status": "idle",
"needs_prompt": false
}
]
}
task-report to see which ones are blocked on permissionslist-sessions now shows pane statuses across all sessions — no more tab-cyclingwatch --notify or watch --exec to wake a human or another automation when a pane needs attentiontmuxx agent watch turns tmuxx into a universal watcher for tmux-managed agent workflows. tmuxx agent supervise builds on top of the same event engine and sends a structured handoff prompt into a supervisor pane when a worker needs attention.
needs_prompt — match panes blocked on approval/inputrunning — match active panesidle — match idle panescompleted — wait until watched panes were busy and then all become idleattention — wait until watched panes were busy and then either need input or all become idletext — wait until recent_output matches --pattern--session <name|$id>--window <name|@id>--pane <%id>--branch <git-branch>When watch --exec is used, tmuxx exports:
TMUXX_WATCH_EVENTTMUXX_WATCH_PAYLOADTMUXX_WATCH_PANE_IDTMUXX_WATCH_WINDOW_IDTMUXX_WATCH_WINDOW_NAMETMUXX_WATCH_SESSION_IDTMUXX_WATCH_SESSION_NAMETMUXX_WATCH_BRANCHUse --assume-busy with completed or attention when a worker is already sitting at the relevant terminal state and you want an immediate match.
When supervise is used, tmuxx sends a prompt containing:
needs_prompttmuxx agent watch --session claude --event needs_prompt --notify --json
tmuxx agent watch --branch feature-auth --event attention --json
tmuxx agent watch --pane %0 --event attention --assume-busy --json
tmuxx agent watch --session claude --event text --pattern "Pushed" --exec "python3 watcher.py" --json
tmuxx agent supervise --supervisor-pane %9 --worker-session claude --goal "finish the task" --json
tmuxx agent supervise --supervisor-pane %9 --worker-branch feature-auth --continuous --max-handoffs 2 --json
The interactive TUI (tmuxx) includes real-time pane activity visualization with ANSI color-rendered preview:
Single-line header with all status indicators:
[tmuxx] ● active ● selected ● attached ▶ running ⏸ waiting ⎇ worktree
Each pane shows inline status in the tree:
▶ = running (blue) — agent actively executing⏸ = waiting (red) — agent blocked on permission/approvalWorktree info appears as a child node under panes (green ⎇ branch-name):
demo
├── editor :0 ●
│ └── zsh %0
├── build :1
│ ├── sleep %1 ▶
│ └── claude %2 ⏸
│ └── ⎇ feature-auth
└── logs :2
└── tail %3 ▶
~/.config/tmuxx/config.json and restored on launch⎇ branch automatically, regardless of how it was created◀ BACK button in tmux status bar (top-left) to detach back to tmuxx TUI/ to filter sessions/windows by namec to send a command to the selected pane without attachingrefresh_interval in config.json (default 2.0s)$XDG_CONFIG_HOME for config pathWhen a command fails:
tmuxx agent task-report <branch> --json (if branch-based).tmuxx agent list-sessions --json and tmuxx agent list-worktrees --json.<=0.3.4), pane command passthrough may fail or require awkward quoting for shell builtins (cd, pwd, export).tmux send-keys -t <pane> "<text>" Enter as a temporary fallback.screenshot-window may require optional dependencies (pip install "tmuxx[mcp]").npm install -g tmuxx installs only a wrapper. The Python tmuxx binary must still be available in PATH (pipx install tmuxx recommended).tmux only if tmuxx is not installed or is broken, and explicitly state the reason.tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.