agentleFS
bks-labbks-lab/open-bridge/skills/tmux/SKILL.md

tmux

Skill13 starsChanged 13 days agoMITView on GitHub

Optional, only for tmux users: the workplace driver that lets scripts/workplace.py and the cockpit steer agent tabs in tmux, inside any terminal app (iTerm, Terminal, Ghostty, VS Code). Trigger: "tmux driver", "workplace with tmux", "agent tabs in tmux", "cockpit without cmux".

69 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use taskflow-inbox-triage, session-logs and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AtomicBot-aiSkill

    taskflow-inbox-triage

    Also in 6 projects that use this

  • seedprodSkill

    session-logs

    Search and analyze your own session logs (older/parent conversations) using jq.

    Also in 20 projects that use this

  • seedprodSkill

    voice-call

    Start voice calls via the OpenClaw voice-call plugin.

    Also in 18 projects that use this

  • AtomicBot-aiSkill

    taskflow

    Also in 7 projects that use this

  • jiulingyunSkill

    BlueBubbles

    为Clawdbot构建或更新BlueBubbles外部通道插件(扩展包,REST发送/探测,webhook入站)。

    Also in 16 projects that use this

  • hkyutongSkill

    openclaw-release-maintainer

    Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.

    Also in 4 projects that use this

  • +5 more from seedprod

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 64 edited versions we read keep these.

  • 0

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All these verbs are served: tabs, sessions, open, launch, send, rename, control, caps, focus, key, keys, screen, close, rename_workspace, …

    line 43

“Common” is measured: kept by at least 6 in 10 of the 64 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

tmux

A second terminal driver beside skills/cmux. It speaks the workplace JSON protocol (docs/workplace.md § Writing a driver), so the plan, the briefing, the inbox and the cockpit work the same in any terminal app that runs tmux.

Optional. It needs the tmux binary ($BRIDGE_TMUX_BIN, else tmux on PATH, else Homebrew's path). Without it the driver answers an error, which scripts/workplace.py reads as "tab view unknown", never as "no tabs open".

Wire it

workplace:
  driver: {command: ["python3", "${root}/skills/tmux/scripts/tmux_driver.py"]}

Then python3 scripts/workplace.py open --yes [--here "$TMUX_PANE"], launch, status, send and adopt steer the tabs, exactly as with cmux. BRIDGE_TMUX_SOCKET=<name> points the driver at a separate server (tmux -L <name>); the tests use that so they never touch your own tmux.

Mapping

Workplacetmux
workspacesession (: and . in a name become _, as tmux does)
tabwindow, its name is the tab name
ref / idpane id of the window's active pane, %3
is_selfthe window holds $TMUX_PANE of the caller
ws_refthe session id, $2; it stays when the session is renamed
stateread from the pane: no agent process below the pane is shell; esc to interrupt is working; a permission or numbered choice prompt is needs-you; else waiting
sessions--resume <uuid>, -r <uuid> or --session-id <uuid> in the agent's process args

All these verbs are served: tabs, sessions, open, launch, send, rename, control, caps, focus, key, keys, screen, close, rename_workspace, move_tab, new_tab, new_workspace, close_workspace. rename_workspace renames the session by its id, with : and . turned into _ as tmux does, and refuses a name another session has after that same change. move_tab moves a window into another session (move-window -d, without an index) and never the last window of a session. new_tab adds a window to a session by its id and new_workspace makes a session (neither is selected), both answering the new refs; new_workspace refuses a name in use and a colour. close_workspace kills one session and never the last one of the server. tmux has no workspace colour or description, so set_color and set_description are not offered.

What it guarantees

  • It never closes a window or a session on its own. close kills one pane on request, and refuses the last pane of the server, which would end the server; close_workspace kills one session on request and refuses the last session.
  • It never moves the last window out of a session (tmux destroys an emptied session); such a tab is renamed where it is and the report says so.
  • open and control reuse a window of the same name in the target session. launch does not, like cmux: workplace.py already skips an agent that runs, and --again asks for a second tab on purpose.
  • launch --target tab opens in the caller's session (here, else $TMUX_PANE) and refuses when neither is known, never the attached session.
  • A command over 1000 bytes goes into a private launcher file (~/.cache/bridge-tmux/commands/, mode 0600, pruned after 7 days), since tmux carries a command in one message of at most 16 KB. Every command keeps a shell open after the agent exits.
  • A step tmux refuses is an ERROR line, never a success line. No server running is a true "no tabs".

Limits, honestly

  • State is read from the screen, not reported by the agent: cmux gets it from Claude Code's hooks. A new agent UI wording can misread a state until the patterns in tmux_driver.py follow it.
  • No colors, descriptions or ordering for workspaces: tmux has no sidebar. The plan's order and colors are not applied.
  • No notifications. cmux can flag a tab that needs you; in tmux the cockpit has to poll tabs.
  • focus needs an attached client. Without one the window is selected and shows on the next tmux attach; with several clients only the first switches.
  • A workspace created only to receive moved tabs keeps its starting shell window, since tmux cannot create a session around an existing window.
  • Untested with agents other than Claude Code and Codex.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.