원클릭으로
tmux
Tmux session, window, and pane management. Use when capturing output, sending keys, opening processes in panes, or checking notifications.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Tmux session, window, and pane management. Use when capturing output, sending keys, opening processes in panes, or checking notifications.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Query Claude Code session history via a DuckDB index over `~/.claude/projects/`. Use when asked about Claude Code activity ("how many tokens today?", "what did I work on this week?") or instead of reading, grepping, or jq-ing session transcripts. Not for codebase search, git log queries, or arbitrary databases.
Creating and optimizing Claude Code Skills including activation patterns, content structure, and development workflows. Use when creating new skills, converting memory files to skills, debugging skill activation, or understanding skill architecture and best practices.
Read and query Things 3 data (lists, todos, projects, tags, logbook). Not for writes. Use things:url to create/update, things:inbox for quick captures.
Triage and batch-implement Claude-tagged Things todos as PRs for the claude config repo, discover improvement candidates from session history, or watch open PRs to implement review feedback and close shipped todos. Use when the user wants to work on their Claude Code improvement backlog, process Things todos tagged claude-code, batch-implement configuration changes, mine session history for grounded config-change candidates (Discover mode), or watch this skill's open PRs for review feedback and merges (Watch mode).
Fetch, reply to, and resolve review threads on a GitHub pull request. Use when checking what review feedback needs addressing, whether threads are resolved, replying to review comments, or clearing AI-reviewer threads after acting on them.
Live tmux inbox for reviewing inbound pull requests across GitHub and GitLab. Use when reviewing multiple PRs, checking the review queue, batch reviews, or managing your review inbox. Pass --queue to spawn an already-ordered queue.
| name | tmux |
| description | Tmux session, window, and pane management. Use when capturing output, sending keys, opening processes in panes, or checking notifications. |
| argument-hint | [capture | send | split | notify | list] [target ...] |
| allowed-tools | ["Bash(bash ${CLAUDE_SKILL_DIR}/scripts/pane.sh:*)","Bash(bash ${CLAUDE_SKILL_DIR}/scripts/window.sh:*)","Bash(bash ${CLAUDE_SKILL_DIR}/scripts/session.sh:*)","Bash(bash ${CLAUDE_SKILL_DIR}/scripts/sessions.sh)"] |
| hooks | {"PreToolUse":[{"matcher":"Bash(tmux:*)","hooks":[{"type":"command","command":"bash ${CLAUDE_PLUGIN_ROOT}/skills/tmux/scripts/safe-command.sh"}]},{"matcher":"Bash(bash ${CLAUDE_SKILL_DIR}/scripts/:*)","hooks":[{"type":"command","command":"cat | jq '{hookSpecificOutput: {hookEventName: \"PreToolUse\", permissionDecision: \"allow\"}}'\n"}]}]} |
$0 (optional verb) routes to a section; pass the target pane, window, or session as the rest. With no verb, infer the operation from the request.
capture: print pane content. See Capturing Pane Content.send: send keys to a running pane. See Starting Claude Sessions.split: open a pane. See Opening Panes.notify: check which windows need attention (bell/activity). See Session.list: inventory panes, windows, and sessions. See Drilling Into Other Targets.!bash ${CLAUDE_SKILL_DIR}/scripts/pane.sh
Use $TMUX_PANE to identify the current pane and target adjacent ones.
!bash ${CLAUDE_SKILL_DIR}/scripts/window.sh
Each pane line ends with its geometry as @<left>,<top> <width>x<height>, in cell coordinates from the window's top-left. Resolve spatial references from these: LHS = lowest left, RHS = highest left, top = lowest top, bottom = highest top. When describing layouts, draw ASCII box diagrams from the positions and sizes.
Panes in a git repo show their branch and whether the checkout is a linked (worktree) or the primary (main) one. When the user refers to work by branch or worktree ("the pane on the X branch", "the worktree for Y", "the other pane, which is ready"), match the reference to a pane's branch and dispatch to it with send-keys (or treat it as already running) rather than entering a worktree of your own. A pane already in a worktree is set up for parallel work; hand off to it instead of duplicating the checkout.
!bash ${CLAUDE_SKILL_DIR}/scripts/session.sh
The TITLE column shows the active pane's title in each window. Claude sessions advertise their current task there, usually enough to identify a window without capturing its content. Windows marked here are the current window; bell or activity flags mean the window needs attention (a process finished, errored, or produced output).
!bash ${CLAUDE_SKILL_DIR}/scripts/sessions.sh
Each script accepts an optional target argument to inspect any pane, window, or session — not just the current one:
bash ${CLAUDE_SKILL_DIR}/scripts/session.sh other-session
bash ${CLAUDE_SKILL_DIR}/scripts/window.sh other-session:2
bash ${CLAUDE_SKILL_DIR}/scripts/pane.sh %12
Compose them to drill down: pick a session from sessions.sh, list its windows with session.sh <name>, then inspect a specific window with window.sh <name>:<idx>.
Use split-window with -t $TMUX_PANE so new panes open relative to Claude's pane. Always pass -d to avoid switching Claude's own pane to the new one.
| User intent | Flags | Notes |
|---|---|---|
| right / beside | -h -d | Horizontal split |
| below / underneath | -v -d | Vertical split |
| right sidebar | -h -d -l 40% | Narrow right pane |
| left sidebar | -h -d -b -l 40% | Narrow left pane (-b = before) |
| bottom panel | -v -d -l 25% | Short pane below |
| top panel | -v -d -b -l 25% | Short pane above |
tmux split-window -h -d -t $TMUX_PANE 'tail -f logs/dev.log'
The command runs in the new pane's shell. When it exits, the pane closes. Use $SHELL or omit the command to open an interactive shell.
Pass the initial prompt as a CLI argument rather than using send-keys:
tmux split-window -h -d -t $TMUX_PANE 'claude "analyze the test failures"'
Use send-keys only for follow-up messages to an already-running session.
When collaborating on a file, open it in a sidebar pane so the user sees changes in real-time as you edit.
tmux split-window -h -d -l 40% -t $TMUX_PANE '<command> <file>'
!bash ${CLAUDE_SKILL_DIR}/scripts/tools.sh
Prefer a terminal markdown renderer with file watching. Tools in preference order:
| Tool | Command | Notes |
|---|---|---|
| bun | bun --watch file.md | Rendered markdown with live reload |
| glow | glow -w 0 file.md | Rendered, no watch (reopen on change) |
| batwatch | batwatch --watcher poll file.md | Syntax-highlighted with file watching |
| bat | bat --paging always file.md | Syntax-highlighted source, no watch |
| less | less file.md | Plain text fallback |
Open with $EDITOR when set, otherwise fall back to read-only viewers:
| Tool | Command | Notes |
|---|---|---|
$EDITOR | $EDITOR file.ts | User's preferred editor, most auto-reload on external changes |
| batwatch | batwatch --watcher poll file.ts | Syntax-highlighted with file watching |
| bat | bat --paging always file.ts | Syntax-highlighted, read-only |
| less | less file.ts | Plain text fallback |
Use the first available option. If the pane exits immediately, the tool is missing; try the next.
Use capture-pane -p to print to stdout instead of a paste buffer.
tmux capture-pane -t $TARGET -p
tmux capture-pane -t $TARGET -p -S -100
-S -100 includes 100 lines of scrollback above the visible area.
-P -F '#{pane_id}' to capture pane IDs at creation time-d on split-window to avoid switching Claude's pane$TMUX_PANE (set by tmux natively and injected by context hook) to target the current pane