{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tmux-controller",
    "name": "Tmux",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/BrennerSpear/tmux-controller",
    "canonicalUrl": "https://clawhub.ai/BrennerSpear/tmux-controller",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tmux-controller",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tmux-controller",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/wait-for-text.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "tmux-controller",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T01:26:46.426Z",
      "expiresAt": "2026-05-17T01:26:46.426Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tmux-controller",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tmux-controller",
        "contentDisposition": "attachment; filename=\"tmux-controller-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "tmux-controller"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/tmux-controller"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/tmux-controller",
    "agentPageUrl": "https://openagent3.xyz/skills/tmux-controller/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tmux-controller/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tmux-controller/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "tmux Skill",
        "body": "Use tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks."
      },
      {
        "title": "Default Server — No Custom Sockets",
        "body": "Always use the default tmux server. Do NOT use -S custom sockets. The user needs to tmux attach easily without knowing obscure socket paths."
      },
      {
        "title": "Session Naming",
        "body": "Convention: oc-${project}-${feature} (e.g. oc-knowhere-date-range-picker, oc-deck-auth-flow)\n\noc- prefix = OpenClaw-managed, avoids collision with user sessions\nEasy to find: tmux ls | grep oc-"
      },
      {
        "title": "Quickstart",
        "body": "SESSION=oc-myproject-feature\n\ntmux new-session -d -s \"$SESSION\" -c ~/projects/myproject\ntmux send-keys -t \"$SESSION\" 'claude --dangerously-skip-permissions' Enter\ntmux capture-pane -p -J -t \"$SESSION\" -S -200\n\nAfter starting a session, tell the user:\n\nTo monitor: tmux attach -t $SESSION"
      },
      {
        "title": "Targeting panes and naming",
        "body": "Target format: session:window.pane (defaults to :0.0).\nKeep names short; avoid spaces.\nInspect: tmux list-sessions, tmux list-panes -a."
      },
      {
        "title": "Sending input safely",
        "body": "Prefer literal sends: tmux send-keys -t target -l -- \"$cmd\".\nControl keys: tmux send-keys -t target C-c.\nFor interactive TUI apps like Claude Code/Codex, do not append Enter in the same\nsend-keys. These apps may treat a fast text+Enter sequence as paste/multi-line input\nand not submit. Send text and Enter as separate commands with a small delay:\n\ntmux send-keys -t target -l -- \"$cmd\" && sleep 0.1 && tmux send-keys -t target Enter"
      },
      {
        "title": "Watching output",
        "body": "Capture recent history: tmux capture-pane -p -J -t target -S -200.\nAttaching is OK; detach with Ctrl+b d."
      },
      {
        "title": "Spawning processes",
        "body": "For python REPLs, set PYTHON_BASIC_REPL=1 (non-basic REPL breaks send-keys flows)."
      },
      {
        "title": "Orchestrating Coding Agents (Codex, Claude Code)",
        "body": "tmux excels at running multiple coding agents in parallel:\n\n# Create sessions in different worktrees\ntmux new-session -d -s oc-project-fix1 -c ~/projects/project-fix1\ntmux new-session -d -s oc-project-fix2 -c ~/projects/project-fix2\n\n# Launch agents\ntmux send-keys -t oc-project-fix1 'claude --dangerously-skip-permissions' Enter\ntmux send-keys -t oc-project-fix2 'codex --full-auto' Enter\n\n# Send a prompt (text + Enter separated by delay)\ntmux send-keys -t oc-project-fix1 -l -- \"Fix the date picker styling.\" && sleep 0.1 && tmux send-keys -t oc-project-fix1 Enter\n\n# Poll for completion (check if shell prompt returned)\nfor sess in oc-project-fix1 oc-project-fix2; do\n  if tmux capture-pane -p -t \"$sess\" -S -3 | grep -q \"❯\"; then\n    echo \"$sess: DONE\"\n  else\n    echo \"$sess: Running...\"\n  fi\ndone\n\n# Get full output\ntmux capture-pane -p -t oc-project-fix1 -S -500\n\nTips:\n\nUse separate git worktrees for parallel fixes (no branch conflicts)\nbun install / pnpm install first before running agents in fresh clones\nCheck for shell prompt (❯ or $) to detect completion\nCodex needs --yolo or --full-auto for non-interactive fixes"
      },
      {
        "title": "Cleanup",
        "body": "Kill a session: tmux kill-session -t \"$SESSION\".\nKill all OpenClaw sessions: tmux ls -F '#{session_name}' | grep '^oc-' | xargs -n1 tmux kill-session -t."
      }
    ],
    "body": "tmux Skill\n\nUse tmux only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.\n\nDefault Server — No Custom Sockets\n\nAlways use the default tmux server. Do NOT use -S custom sockets. The user needs to tmux attach easily without knowing obscure socket paths.\n\nSession Naming\n\nConvention: oc-${project}-${feature} (e.g. oc-knowhere-date-range-picker, oc-deck-auth-flow)\n\noc- prefix = OpenClaw-managed, avoids collision with user sessions\nEasy to find: tmux ls | grep oc-\nQuickstart\nSESSION=oc-myproject-feature\n\ntmux new-session -d -s \"$SESSION\" -c ~/projects/myproject\ntmux send-keys -t \"$SESSION\" 'claude --dangerously-skip-permissions' Enter\ntmux capture-pane -p -J -t \"$SESSION\" -S -200\n\n\nAfter starting a session, tell the user:\n\nTo monitor: tmux attach -t $SESSION\n\nTargeting panes and naming\nTarget format: session:window.pane (defaults to :0.0).\nKeep names short; avoid spaces.\nInspect: tmux list-sessions, tmux list-panes -a.\nSending input safely\nPrefer literal sends: tmux send-keys -t target -l -- \"$cmd\".\nControl keys: tmux send-keys -t target C-c.\nFor interactive TUI apps like Claude Code/Codex, do not append Enter in the same send-keys. These apps may treat a fast text+Enter sequence as paste/multi-line input and not submit. Send text and Enter as separate commands with a small delay:\ntmux send-keys -t target -l -- \"$cmd\" && sleep 0.1 && tmux send-keys -t target Enter\n\nWatching output\nCapture recent history: tmux capture-pane -p -J -t target -S -200.\nAttaching is OK; detach with Ctrl+b d.\nSpawning processes\nFor python REPLs, set PYTHON_BASIC_REPL=1 (non-basic REPL breaks send-keys flows).\nOrchestrating Coding Agents (Codex, Claude Code)\n\ntmux excels at running multiple coding agents in parallel:\n\n# Create sessions in different worktrees\ntmux new-session -d -s oc-project-fix1 -c ~/projects/project-fix1\ntmux new-session -d -s oc-project-fix2 -c ~/projects/project-fix2\n\n# Launch agents\ntmux send-keys -t oc-project-fix1 'claude --dangerously-skip-permissions' Enter\ntmux send-keys -t oc-project-fix2 'codex --full-auto' Enter\n\n# Send a prompt (text + Enter separated by delay)\ntmux send-keys -t oc-project-fix1 -l -- \"Fix the date picker styling.\" && sleep 0.1 && tmux send-keys -t oc-project-fix1 Enter\n\n# Poll for completion (check if shell prompt returned)\nfor sess in oc-project-fix1 oc-project-fix2; do\n  if tmux capture-pane -p -t \"$sess\" -S -3 | grep -q \"❯\"; then\n    echo \"$sess: DONE\"\n  else\n    echo \"$sess: Running...\"\n  fi\ndone\n\n# Get full output\ntmux capture-pane -p -t oc-project-fix1 -S -500\n\n\nTips:\n\nUse separate git worktrees for parallel fixes (no branch conflicts)\nbun install / pnpm install first before running agents in fresh clones\nCheck for shell prompt (❯ or $) to detect completion\nCodex needs --yolo or --full-auto for non-interactive fixes\nCleanup\nKill a session: tmux kill-session -t \"$SESSION\".\nKill all OpenClaw sessions: tmux ls -F '#{session_name}' | grep '^oc-' | xargs -n1 tmux kill-session -t."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/BrennerSpear/tmux-controller",
    "publisherUrl": "https://clawhub.ai/BrennerSpear/tmux-controller",
    "owner": "BrennerSpear",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tmux-controller",
    "downloadUrl": "https://openagent3.xyz/downloads/tmux-controller",
    "agentUrl": "https://openagent3.xyz/skills/tmux-controller/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tmux-controller/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tmux-controller/agent.md"
  }
}