Agent skill

cmux Customization

by disler in disler/learning-cmux-with-agents

Customizes cmux for a user by editing cmux.json actions, workspace layouts, dock controls, tab bar buttons, settings and Ghostty terminal preferences.

MITAuto-check passedProductivity & Automation

Install cmux Customization

skills CLI
$ npx skills add disler/learning-cmux-with-agents --skill cmux-customization -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install disler/learning-cmux-with-agents cmux-customization --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/disler/learning-cmux-with-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ai_docs/cmux-skills/cmux-customization .claude/skills/cmux-customization && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cmux-customization
GitHub stars
115
Token cost
~2.4k tokens
SKILL.md length
822 words
Files
3 (incl. references)
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Customizes cmux for a user by editing cmux.json actions, workspace layouts, dock controls, tab bar buttons, settings and Ghostty terminal preferences.

  • Works in 7 steps: Inspect existing config before editing. → Pick global or project-local scope. Ask… → Before editing, back up the target file… → …
  • Adding a custom action or command palette entry to cmux
  • SKILL.md covers What Can Be Customized, Choose the Right Surface, Examples Library and Workflow, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Edits to cmux keep the user's existing config intact, favor schema-backed changes and are validated before the agent reports completion. The skill covers reusable actions defined in cmux.json that can appear in the command palette, surface tab bars, shortcuts and the plus-button right-click menu, plus ui.newWorkspace settings to replace the plus button's click or context menu and ui.surfaceTabBar.buttons to replace the default tab bar buttons.

It also handles commands with workspace definitions that open worktrees, checkouts, local services, browser previews or SSH sessions in a chosen split layout, and dock controls in .cmux/dock.json or a user-level dock.json for logs, test watchers, git TUIs and dev servers. Related surfaces are sent to companions: cmux-settings for app preferences, cmux-workspace for workspace metadata, and cmux hooks setup for Feed and notifications.

Project-local .cmux/cmux.json and dock.json files can share worktree, SSH, review, dev, CI and docs layouts with a repo. For imports, exports and resets it backs up the current config, applies the smallest diff, validates and keeps a rollback path, and terminal fonts, themes, cursor style and keybindings go through the Ghostty config.

When your agent uses it

  • Adding a custom action or command palette entry to cmux
  • Replacing the new workspace button's behavior or right-click menu
  • Setting up a dock with test watchers and dev server logs
  • Sharing a team workspace layout through a project .cmux folder

Example prompts

  • “Add a cmux action that opens a worktree with a terminal and a browser preview side by side.”
  • “Change the plus button so a right-click offers my three workspace presets.”
  • “Create a dock.json with a test watcher and a dev server log.”
  • “Back up my cmux config and then change the terminal theme through Ghostty.”

Requirements

  • cmux installed, with its cmux.json configuration

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Inspect existing config before editing.
  2. Pick global or project-local scope. Ask only when the choice changes behavior meaningfully. Default to project-local for repo-specific…
  3. Before editing, back up the target file when it already exists
  4. For app settings and cmux-owned shortcuts, use the settings helper from the installed skill or checkout
  5. For actions, UI wiring, workspace layouts, notification hooks, and Dock controls, edit JSONC or JSON carefully. Preserve unrelated…
  6. Reload config after successful edits
  7. Verify the configured entrypoint exists. For shortcuts, read back the binding. For custom actions, confirm the action ID and where it…

What it can do on your machine

Read from SKILL.md and the folder at commit 6eaacab. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

cmux Customization loads about 2.4k tokens when it runs, and up to ~4.5k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 822 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from disler/learning-cmux-with-agents at commit 6eaacab, republished under its MIT licence (© disler). 822 words, ~2,446 tokens.

Download SKILL.mdSave it as .claude/skills/cmux-customization/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
cmux-customization
description
Customize cmux for an end user. Use when changing cmux.json actions, custom commands, workspace layouts, plus-button behavior, surface tab bar buttons, Command Palette entries, Dock controls, sidebar and app settings, shortcuts, notifications, browser routing, examples-library presets, or Ghostty-backed terminal preferences.

cmux Customization

Use this skill for user-facing cmux customization. Keep the user's config intact, prefer schema-backed edits, and validate before reporting completion.

What Can Be Customized

  • Custom actions: define reusable actions in cmux.json. Actions can appear in Cmd+Shift+P, surface tab bars, shortcuts, and the plus-button right-click menu.
  • New workspace button: set ui.newWorkspace.action to replace the normal plus-button click, and ui.newWorkspace.contextMenu to control right-click actions. ui.newWorkspace.rightClick is accepted as an alias, but new examples should use contextMenu.
  • Surface tab bar buttons: set ui.surfaceTabBar.buttons to replace the default tab bar buttons. Include built-in IDs such as cmux.newTerminal, cmux.newBrowser, cmux.splitRight, and cmux.splitDown only when they should stay visible.
  • Workflows and layouts: use commands with workspace definitions to open a worktree, multiple checkouts, local services, browser previews, or SSH sessions in a deliberate split layout.
  • Dock controls: create .cmux/dock.json or ~/.config/cmux/dock.json for right-sidebar terminal controls such as logs, test watchers, git TUIs, dev servers, queues, or cmux feed tui --opentui.
  • Sidebar and app behavior: use cmux-settings for supported settings such as appearance, sidebar display, notification behavior, browser routing, automation, shortcuts, and new-workspace placement.
  • Workspace metadata: use the cmux CLI or cmux-workspace for workspace names, descriptions, colors, read state, and sidebar metadata updates.
  • Feed and notifications: use cmux hooks setup for Feed event sources, notification settings for delivery behavior, and notification hooks in cmux.json for filtering or post-processing banners.
  • Team presets and examples: use project-local .cmux/cmux.json and .cmux/dock.json to share worktree, SSH, review, dev, CI, and docs workspace patterns with a repo.
  • Import, export, and reset: back up the current config, apply the smallest diff, validate it, and keep a rollback path for user-owned customizations.
  • Terminal behavior: use Ghostty config for fonts, themes, cursor style, copy-on-select, shell integration, terminal keybindings, and terminal rendering.

Choose the Right Surface

  • cmux app preferences: use cmux-settings for global ~/.config/cmux/cmux.json settings such as appearance, sidebar, notifications, browser behavior, automation, and shortcuts.
  • Custom actions, workspace layouts, tab bar buttons, plus-button behavior, and Command Palette entries: edit ~/.config/cmux/cmux.json globally or .cmux/cmux.json in the project. Project-local actions and commands override global entries with the same ID or name.
  • Dock controls: edit .cmux/dock.json in the project or ~/.config/cmux/dock.json globally. Run cmux docs dock when available.
  • Terminal rendering and terminal keybindings: use Ghostty config, usually ~/.config/ghostty/config. This includes fonts, cursor style, copy-on-select, shell integration, themes, and terminal keybindings.
  • Project-specific behavior: prefer .cmux/cmux.json in the project so actions, commands, UI action wiring, and notification hooks travel with the repo. Do not put global app preferences there.

If a request can be handled by Ghostty config, say that and use Ghostty config instead of inventing cmux UI settings.

Examples Library

For reusable patterns such as worktree agents, full-stack dev layouts, SSH devboxes, PR review workspaces, docs workspaces, quick agent tab buttons, and CI watches, read references/examples.md. Load it when the user asks for examples, presets, templates, starter configs, or a known workflow shape.

Show full SKILL.md (390 more words)Show less

Workflow

  1. Inspect existing config before editing.

    bash
    test -f ~/.config/cmux/cmux.json && sed -n '1,220p' ~/.config/cmux/cmux.json
    test -f .cmux/cmux.json && sed -n '1,220p' .cmux/cmux.json
  2. Pick global or project-local scope. Ask only when the choice changes behavior meaningfully. Default to project-local for repo-specific commands and global for app preferences.

  3. Before editing, back up the target file when it already exists:

    bash
    stamp="$(date +%Y%m%d-%H%M%S)"
    test -f ~/.config/cmux/cmux.json && cp -p ~/.config/cmux/cmux.json ~/.config/cmux/cmux.json."$stamp".bak
    test -f .cmux/cmux.json && cp -p .cmux/cmux.json .cmux/cmux.json."$stamp".bak

    Use the applicable path only. Do not create a backup for a missing file.

  4. For app settings and cmux-owned shortcuts, use the settings helper from the installed skill or checkout:

    bash
    ~/.agents/skills/cmux-settings/scripts/cmux-settings list-supported
    ~/.agents/skills/cmux-settings/scripts/cmux-settings set browser.openTerminalLinksInCmuxBrowser true
    ~/.agents/skills/cmux-settings/scripts/cmux-settings validate

    If the user installed with skills.sh, use ~/.codex/skills/cmux-settings/scripts/cmux-settings instead.

  5. For actions, UI wiring, workspace layouts, notification hooks, and Dock controls, edit JSONC or JSON carefully. Preserve unrelated sections such as vault, rightSidebar, commands, actions, ui, and notifications.

  6. Reload config after successful edits:

    bash
    cmux reload-config
  7. Verify the configured entrypoint exists. For shortcuts, read back the binding. For custom actions, confirm the action ID and where it should appear.

Common Patterns

Add a Command Palette action that opens Codex in a new tab. It will appear in Cmd+Shift+P unless palette is false:

json
{
  "actions": {
    "codex-new-tab": {
      "type": "agent",
      "agent": "codex",
      "title": "Codex",
      "subtitle": "Start Codex in this workspace",
      "target": "newTabInCurrentPane",
      "palette": true
    }
  }
}

Replace the plus-button click and define the plus-button right-click menu. This is the pattern for "bring your own worktree, multiple checkouts, or SSH setup". The workspaceCommand action ID is worktree-agents, and its commandName must match a command named Worktree Agents in the same config:

json
{
  "actions": {
    "worktree-agents": {
      "type": "workspaceCommand",
      "title": "Worktree Agents",
      "commandName": "Worktree Agents",
      "icon": { "type": "symbol", "name": "folder.badge.plus" }
    }
  },
  "ui": {
    "newWorkspace": {
      "action": "worktree-agents",
      "contextMenu": [
        { "action": "worktree-agents", "title": "Worktree Agents" },
        { "type": "separator" },
        { "action": "cmux.newTerminal", "title": "New Terminal" },
        { "action": "cmux.newBrowser", "title": "New Browser" }
      ]
    }
  },
  "commands": [
    {
      "name": "Worktree Agents",
      "description": "Create a worktree and open agents inside it",
      "workspace": {
        "name": "Worktree Agents",
        "cwd": "../worktrees/my-feature",
        "layout": {
          "direction": "horizontal",
          "children": [
            {
              "pane": {
                "surfaces": [
                  { "type": "terminal", "name": "Codex", "command": "codex" }
                ]
              }
            },
            {
              "pane": {
                "surfaces": [
                  { "type": "terminal", "name": "SSH", "command": "ssh devbox" }
                ]
              }
            }
          ]
        }
      }
    }
  ]
}

Add a project workspace layout:

json
{
  "commands": [
    {
      "name": "dev",
      "workspace": {
        "name": "Dev",
        "cwd": ".",
        "layout": {
          "direction": "horizontal",
          "children": [
            { "pane": { "surfaces": [{ "type": "terminal", "command": "bun dev" }] } },
            { "pane": { "surfaces": [{ "type": "browser", "url": "http://localhost:3000" }] } }
          ]
        }
      }
    }
  ]
}

Replace surface tab bar buttons:

json
{
  "ui": {
    "surfaceTabBar": {
      "buttons": [
        "cmux.newTerminal",
        "cmux.newBrowser",
        {
          "action": "codex-new-tab",
          "title": "Codex",
          "icon": { "type": "symbol", "name": "terminal" }
        }
      ]
    }
  }
}

Add project Dock controls:

json
{
  "controls": [
    {
      "id": "git",
      "title": "Git",
      "command": "lazygit",
      "cwd": ".",
      "height": 300
    },
    {
      "id": "feed",
      "title": "Feed",
      "command": "cmux feed tui --opentui",
      "height": 260
    }
  ]
}

Validation

  • App settings: run cmux-settings validate.
  • JSONC shape: keep valid JSONC and avoid duplicate keys.
  • Dock JSON: parse .cmux/dock.json or ~/.config/cmux/dock.json with a JSON parser before reporting completion.
  • Runtime reload: run cmux reload-config when the CLI is available.
  • User-facing action: confirm the action title, shortcut, plus-button behavior, context-menu entry, or tab bar placement the user asked for.

Rules

  • Do not overwrite whole top-level config sections unless you own the full section.
  • Do not store secrets directly in actions, commands, or prompts. Use environment variables or the user's secret manager.
  • Do not use app/runtime sleeps or timing workarounds in generated commands.
  • Do not add a cmux setting for behavior Ghostty already owns.
  • Keep labels short enough for menus, buttons, and the Command Palette.

© disler, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in ai_docs/cmux-skills/cmux-customization of disler/learning-cmux-with-agents.

  • SKILL.md
  • agents/openai.yaml
  • references/examples.md

Open the folder on GitHubat commit 6eaacab

Compare with similar skills

cmux Customization next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

cmux Customization compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
cmux Customization this skilldisler/learning-cmux-with-agents115—~2.4kAutomated safety check: PassMIT
Skyvern Browser AutomationSkyvern-AI/skyvern23k1 repos~2.9kAutomated safety check: PassAGPL-3.0
N8n CLIn8n-io/n8n207k—~3kAutomated safety check: PassCustom licence
CUAWright Web Task Automationmicrosoft/CUAWright6k—~2kAutomated safety check: NotesMIT
Skyvern Browser AutomationSkyvern-AI/skyvern23k—~1.9kAutomated safety check: PassAGPL-3.0
Piece Builderactivepieces/activepieces25k—~3.1kAutomated safety check: NotesCustom licence

Similar skills

  • Skyvern Browser Automation

    Skyvern-AI/skyvern

    Picks the right Skyvern CLI command for a web task, from quick yes/no checks to reusable multi-page workflows, instead of falling back to plain page fetching.

    23k GitHub starsUsed in 1 repo~2.9k tokens
    Productivity & AutomationAuto-check passed
  • N8n CLI

    n8n-io/n8n

    Official

    Use the n8n CLI to manage workflows, credentials, executions, and more on an n8n instance.

    207k GitHub stars~3k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Official

    Solves web tasks by driving a local Playwright browser one bash command at a time, saving a reusable script, screenshots and an action log for each run.

    6k GitHub stars~2k tokensUpdated 2 days ago
    Productivity & AutomationAuto-check: notes
  • Skyvern Browser Automation

    Skyvern-AI/skyvern

    Automates websites with Skyvern's AI browser agent to fill forms, extract data, download files, log in and run multi-step workflows through SDKs, REST, MCP or a CLI.

    23k GitHub stars~1.9k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Piece Builder

    activepieces/activepieces

    Build and edit Activepieces pieces (integrations) — creating new pieces, adding actions or triggers, or fixing bugs in existing ones.

    25k GitHub stars~3.1k tokensUpdated today
    Productivity & AutomationAuto-check: notes
  • Official

    Answers n8n product, setup, credential, node, hosting, API, and usage questions from current n8n docs.

    207k GitHub stars~550 tokensUpdated today
    Productivity & AutomationAuto-check passed

More from disler/learning-cmux-with-agents

  • cmux Browser Automation

    disler/learning-cmux-with-agents

    Drives browser surfaces inside cmux from the command line: open sites, snapshot elements, act on refs, wait for state changes and extract data.

    115 GitHub stars~1.3k tokensUpdated 3 mo ago
    Auto-check passed
  • cmux Contributor Dev Workflow

    disler/learning-cmux-with-agents

    Contributor rules for the cmux repo: tagged Debug builds through reload.sh, first-time setup, Xcode project normalization and per-tag sidebar extension points.

    115 GitHub stars~1.5k tokensUpdated 3 mo ago
    Auto-check passed
  • cmux Agent Surface Control

    disler/learning-cmux-with-agents

    Drives the cmux terminal multiplexer from natural language to open, inspect, prompt, read and close windows, workspaces, panes, surfaces and agent sessions.

    115 GitHub stars~2.6k tokensUpdated 3 mo ago
    Auto-check: notes
  • cmux Testing Rules

    disler/learning-cmux-with-agents

    Testing rules for the cmux Swift codebase: Swift Testing as the default framework, a two-commit regression policy, and tests that check runtime behavior, not source text.

    115 GitHub stars~1.2k tokensUpdated 3 mo ago
    Auto-check passed

Questions about cmux Customization

What does cmux Customization do?

Customizes cmux for a user by editing cmux.json actions, workspace layouts, dock controls, tab bar buttons, settings and Ghostty terminal preferences. Edits to cmux keep the user's existing config intact, favor schema-backed changes and are validated before the agent reports completion.buttons to replace the default tab bar buttons.

When should I use cmux Customization?

cmux Customization fits situations like: adding a custom action or command palette entry to cmux; replacing the new workspace button's behavior or right-click menu; setting up a dock with test watchers and dev server logs; sharing a team workspace layout through a project .cmux folder.

How do I install cmux Customization in Claude Code?

Run `npx skills add disler/learning-cmux-with-agents --skill cmux-customization -a claude-code`. Or copy the skill folder (ai_docs/cmux-skills/cmux-customization in disler/learning-cmux-with-agents) into .claude/skills/cmux-customization in your project. Claude Code loads it when a task matches its description.

How do I install cmux Customization in Codex?

Run `npx skills add disler/learning-cmux-with-agents --skill cmux-customization -a codex`. Or copy the skill folder (ai_docs/cmux-skills/cmux-customization in disler/learning-cmux-with-agents) into .agents/skills/cmux-customization in your project. Codex loads it when a task matches its description.

Can I use cmux Customization in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add disler/learning-cmux-with-agents --skill cmux-customization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cmux-customization, .gemini/skills/cmux-customization, .github/skills/cmux-customization and .opencode/skills/cmux-customization in your project.

What does cmux Customization need to run?

SKILL.md names no scripts, command-line tools or credentials: cmux Customization is instructions for the agent only. Our summary lists: cmux installed, with its cmux.json configuration.

Does cmux Customization access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is cmux Customization safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does cmux Customization use?

cmux Customization is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does cmux Customization use?

About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.1k tokens, read only when the agent opens those files.

What are the alternatives to cmux Customization?

Skills that share tags, products or a category with cmux Customization: Skyvern Browser Automation (Skyvern-AI/skyvern, 23k stars), N8n CLI (n8n-io/n8n, 207k stars), CUAWright Web Task Automation (microsoft/CUAWright, 6k stars) and Skyvern Browser Automation (Skyvern-AI/skyvern, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains cmux Customization?

disler (a GitHub user) maintains it in disler/learning-cmux-with-agents, which has 115 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on June 29, 2026.

Source: disler/learning-cmux-with-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.