Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计异常

using-cmux使用 cmux

Agent Skill

using-cmux 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,482

周安装

63

GitHub Stars

33

下载量

519
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:using-cmux(使用 cmux)
来源仓库:https://github.com/hummer98/using-cmux
仓库路径:skills/using-cmux
安装命令:
npx skills add https://github.com/hummer98/using-cmux --skill using-cmux
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/hummer98/using-cmux --skill using-cmux

简介

用于查找、检索和筛选相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词快速定位候选结果。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装使用。
  • 安装前需确认权限范围、维护状态及是否触发联网或文件操作。
  • using-cmux 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Using cmux

cmux はターミナルマルチプレクサ。ペイン分割、コマンド送信、画面読み取りを CLI 経由で操作する。 CMUX_SOCKET_PATH 環境変数が存在すれば cmux 内で動作している。

Quick Orientation

cmux identify                    # 自分のワークスペース・サーフェスを確認
cmux list-workspaces             # 全ワークスペース一覧
cmux tree                        # トポロジー表示(階層構造)

リソースは短縮 refs で参照する: window:1, workspace:2, pane:3, surface:4--id-format uuids で UUID 形式の出力も可能。

注意: cmux-send で複数行を送る場合は cmux-send-key return が必須。詳細は「send の改行ルール」を参照。

基本操作

操作コマンド
ペイン分割cmux new-split right (left/up/down も可)
新ワークスペースcmux new-workspace --cwd $(pwd)
コマンド送信cmux-send --surface surface:N "command\n"
キー送信cmux-send-key --surface surface:N return / ctrl+c / ctrl+d
画面読み取りcmux-read --surface surface:N [--scrollback]
サーフェス/WS 終了cmux close-surface / cmux close-workspace
一覧表示cmux list-panes / cmux list-pane-surfaces

send の改行ルール

これは最も重要なルールである。

単一行コマンド: \n で OK

cmux-send --surface surface:1 "echo hello\n"

末尾の \n が Enter キーとして機能する。

複数行テキスト: cmux-send-key return が必須

\n は改行として送信されない。各行を個別に送り、行間で cmux-send-key return を使う。

# ✅ 正しい方法
cmux-send --surface surface:1 "line 1"
cmux-send-key --surface surface:1 return
cmux-send --surface surface:1 "line 2"
cmux-send-key --surface surface:1 return

# ❌ 間違い — \n は途中改行にならない
cmux-send --surface surface:1 "line 1\nline 2\n"

ルール: 末尾の \n 1個だけは Enter として機能する。文字列の途中に \n を入れても改行にはならない。

制御キーの送信

プロセス中断(Ctrl+C)などの制御キーは cmux-send-key で送る。cmux-send では送れない。

# ✅ 正しい方法
cmux-send-key --surface surface:N ctrl+c

# ❌ 間違い — リテラルテキストが送られるだけ
cmux-send --surface surface:N "C-c"
cmux-send --surface surface:N "\x03"
cmux-send-key --surface surface:N "C-c"   # → Unknown key エラー

キー名は ctrl+c, ctrl+d, ctrl+z, return, tab, escape 等。cmux send-key --help で確認可能。

ラッパー使用の原則(重要)

cmux-read / cmux-send / cmux-send-key ラッパーを使う。 surface:N を渡すと自動的に正しいワークスペースを解決するため、別 workspace/window のサーフェスでも --surface だけで動く。

# ✅ 正しい方法 — surface ref から自動解決(window をまたいでも OK)
cmux-read --surface surface:N
cmux-send --surface surface:N "command\n"
cmux-send-key --surface surface:N return
# ❌ 間違い — 生の cmux コマンドは別 workspace/window のサーフェスで失敗
cmux read-screen --surface surface:S    # → "Surface is not a terminal" エラー
cmux send --surface surface:S "..."     # → 同上

理由: 生の cmux read-screen / cmux send / cmux send-key--surface は caller と同一ワークスペース内のサーフェスのみ有効。ラッパーは内部で cmux tree --all --json から workspace を解決し --workspace 経由で呼び直すため、cross-window でも動作する。--workspace 形式はそのまま通過するので、new-workspace フロー(後述)でも統一して使える。

新しい surface をデフォルトで作る

別文脈での実行が必要なら、既存の surface を再利用せず cmux new-split で新規作成する。既存ペインの状態(実行中プロセス、未保存の作業)を破壊するリスクがあるため、再利用は危険。

トリガー: ユーザーが「別 surface で」「新しい surface で」「別ペインで」「split で」と指示した場合は、必ず new-split で新規作成する。現在の surface でそのまま実行してはいけない。

SURF=$(cmux new-split right | awk '{print $2}')
cmux-send --surface $SURF "command\n"
# 不要になったら閉じる
cmux close-surface --surface $SURF

サブエージェント操作パターン

サブエージェントを起動し、タスクを委任し、結果を回収する一連の手順。

配置方式の選択

方式利点注意
同一ワークスペース (new-split)PTY 遅延初期化問題を回避レイアウトが崩れたら cmux-grid で修復
別ワークスペース (new-workspace)close-workspace で一括終了、rename-workspace で識別しやすいPTY 遅延初期化問題の影響あり(後述)

Step 1a: 同一ワークスペースに配置(推奨)

SURF=$(cmux new-split right | awk '{print $2}')
cmux rename-tab --surface $SURF "Researcher-1"

Step 1b: 別ワークスペースに配置

WS=$(cmux new-workspace --cwd $(pwd) | awk '{print $2}')
cmux rename-workspace --workspace $WS "Researcher-1"
注意: PTY 遅延初期化問題(後述)により、ワークスペースを GUI 上で一度表示する必要がある場合がある。

Step 2: Claude Code 起動

cmux-send --workspace $WS "claude --dangerously-skip-permissions\n"
--dangerously-skip-permissions は信頼できるタスクにのみ使うこと。

Step 3: Trust 検出 → 承認

起動直後に Trust 確認プロンプトが表示される場合がある。cmux-read でポーリングし、"trust" や "Yes, I trust" を検出したら承認:

screen=$(cmux-read --workspace $WS)
# "trust" 検出 → 承認
cmux-send-key --workspace $WS return

Step 4: 起動完了の検出

プロンプトが表示されるまで cmux-read --workspace $WS でポーリング。

Step 5: プロンプト送信

# 単一行
cmux-send --workspace $WS "指示テキスト\n"
cmux set-status $WS "調査中" --icon hammer  # ステータスを設定

# 複数行(cmux-send-key return で改行)
cmux-send --workspace $WS "1行目の指示"
cmux-send-key --workspace $WS return
cmux-send --workspace $WS "2行目の指示"
cmux-send-key --workspace $WS return

Step 6: 完了検出

プロンプトの再表示を cmux-read --workspace $WS でポーリングして検出。

Step 7: 結果回収 & クリーンアップ

cmux clear-status $WS                                      # ステータスをクリア
result=$(cmux-read --workspace $WS --scrollback)  # 全出力取得

# クリーンアップ: Claude 終了 → ペイン閉じ
cmux-send --workspace $WS "/exit\n"
sleep 2
cmux close-workspace --workspace $WS                      # ワークスペースごと閉じる
重要: /exit だけでは Claude プロセスが終了するだけでペイン(surface)は残る。必ず close-workspace(または close-surface)でペインも閉じること。sleep 2/exit の処理完了を待つため。

new-workspace の PTY 遅延初期化問題(Issue #1472)

cmux new-workspace で作成したワークスペースのターミナル PTY は、GUI 上で一度表示されるまで起動しないselect-workspace API だけでは不十分で、GUI 描画(SwiftUI レンダリング)が必要。

症状

  • cmux-send --surface surface:N → OK を返すがコマンドは実行されない(キューに留まる)
  • cmux-read --surface surface:NSurface is not a terminal エラー
  • ソケット API surface.send_textqueued: true だが未配信
  • ソケット API surface.read_textTerminal surface not found

ワークアラウンド: AppleScript メニュークリック

macOS アクセシビリティ許可が必要(システム設定 → プライバシーとセキュリティ → アクセシビリティ)。

# ワークスペース作成後に GUI 表示を強制する
WS=$(cmux new-workspace --cwd $(pwd) | awk '{print $2}')

# ワークスペースのインデックスを取得
WS_INDEX=$(cmux tree --json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for w in data['windows']:
    for ws in w['workspaces']:
        if ws['ref'] == '$WS':
            print(ws['index'] + 1)")

# AppleScript でメニュークリック → PTY 初期化
osascript -e "
tell application \"System Events\"
    tell process \"cmux\"
        click menu item \"ワークスペース $WS_INDEX\" of menu 1 of menu bar item \"表示\" of menu bar 1
    end tell
end tell"
sleep 2

# 元のワークスペースに戻る
ORIG_INDEX=1  # 元のワークスペースの index+1
osascript -e "
tell application \"System Events\"
    tell process \"cmux\"
        click menu item \"ワークスペース $ORIG_INDEX\" of menu 1 of menu bar item \"表示\" of menu bar 1
    end tell
end tell"

注意: ソケット API のフォールバック

ソケット API surface.send_text / surface.read_text は、ターゲット surface の PTY が未初期化の場合、caller の surface にサイレントにフォールバックすることがある。レスポンスの surface_ref を確認して意図した surface に送信されたか必ず検証すること。

cmux-read トラブルシューティング

問題対処
出力が空 / 古いcmux refresh-surfaces してから再読み取り
長い出力が切れる--scrollback を追加
特定行数だけ欲しい--lines N で行数指定
surface が見つからないcmux list-pane-surfaces で refs を再確認
Surface is not a terminal生の cmux read-screen を使っている → cmux-read ラッパーに置き換える。または PTY 遅延初期化問題(上記ワークアラウンド参照)

cmux-read の結果がおかしい場合は cmux refresh-surfaces → 再読み取りの順で試す。

ロングラン実行の監視

dev server やビルドなど長時間プロセスは専用ペインに分離し、cmux-read で定期的に監視する。

cmux new-split right              # → surface:N
cmux-send --surface surface:N "npm run dev\n"
# ポーリングで "ready" 等のキーワードを検出
screen=$(cmux-read --surface surface:N)

通知

# アプリ内通知(ペインハイライト、サイドバーバッジ。Cmd+Shift+U で移動)
cmux notify --title "完了" --body "ビルドが成功しました"

# macOS 通知センター(サウンド付き、別アプリ使用中でも表示)
osascript -e 'display notification "ビルド完了" with title "Claude" sound name "Glass"'

使い分け: cmux 内で注意を引く → cmux notify、ユーザーが別アプリにいる → osascript

ステータス・プログレス表示

cmux set-status mykey "作業中" --icon hammer --color "#0099ff"  # サイドバーに表示
cmux clear-status mykey
cmux set-progress 0.5 --label "ビルド中..."                     # プログレスバー(0.0〜1.0)
cmux clear-progress

ブラウザ自動化

開く・ナビゲーション

BSURF=$(cmux browser open https://example.com | awk '{print $2}')  # ブラウザを開く
cmux browser $BSURF goto https://google.com   # 移動
cmux browser $BSURF back / forward / reload   # 戻る・進む・リロード
cmux browser $BSURF url                        # 現在の URL を取得
cmux browser $BSURF focus-webview              # ブラウザにフォーカス

スナップショットと要素参照

cmux browser $BSURF snapshot --interactive   # [ref=eN] マーカー付きで取得(操作前に必須)

出力例(eN が CSS セレクタとして機能する):

heading "Welcome" [ref=e1]
button "Submit" [ref=e2]
textbox [ref=e3]
オプション説明
--interactive / -i[ref=eN] マーカーを付与
--compactコンパクト表示
--max-depth NDOM 深度制限
--selector css特定要素のみ
--cursorカーソル位置情報を含む

snapshot vs screenshot の使い分け

原則: screenshot は視覚レイアウトのバグ調査でしか使わない。 PNG はトークンを大量消費する。値・状態・テキスト・構造の確認はすべてテキストベースのコマンドで行う。

確認したいこと使うコマンド
入力フィールドの値get value eN
要素のテキスト内容get text eN
要素の属性(href, src 等)get attr eN <name>
チェックボックスの状態is checked eN
表示・有効状態is visible eN / is enabled eN
ページ上の要素を探して操作するsnapshot --interactive
DOM 構造・階層を確認するsnapshot
視覚レイアウトのバグ調査screenshot(最終手段)

判断基準: 「目で確認したい」と思っても、その情報が DOM から取れるなら snapshot / get 系を使う。screenshot を選ぶ前に「これは get value / get text / snapshot で取れないか?」を必ず自問する。フォーム送信前の値確認、入力結果の検証、要素の存在確認はすべて DOM から取れる。

要素の操作

セレクタには CSS セレクタまたはスナップショットの ref(e2 等)を使う。--snapshot-after で操作後に自動でスナップショットを取得できる。

cmux browser $BSURF click e2              # クリック
cmux browser $BSURF dblclick e5           # ダブルクリック
cmux browser $BSURF hover e3              # ホバー
cmux browser $BSURF focus e3             # フォーカス
cmux browser $BSURF scroll-into-view e4  # ビューにスクロール
cmux browser $BSURF check e8 / uncheck e8 # チェック・解除

フォーム操作

cmux browser $BSURF fill e3 "hello"         # 入力(既存をクリアして入力)
cmux browser $BSURF type e3 "world"         # 追記入力
cmux browser $BSURF select e7 "option-val"  # ドロップダウン選択
cmux browser $BSURF press Enter             # キー押下(Return, Tab, Escape 等)

要素の検索・状態確認

# find: ARIA ロール / テキスト / ラベル / プレースホルダー / alt / title / testid / first / last / nth
cmux browser $BSURF find role button
cmux browser $BSURF find text "Submit"
cmux browser $BSURF find nth 3 --selector "li"

# is: 要素の状態確認
cmux browser $BSURF is visible e3    # 表示されているか
cmux browser $BSURF is enabled e3   # 有効か
cmux browser $BSURF is checked e8   # チェック済みか

データ取得

cmux browser $BSURF get url / title               # URL・タイトル
cmux browser $BSURF get text e3                   # テキスト
cmux browser $BSURF get html e3                   # HTML
cmux browser $BSURF get value e3                  # 入力値
cmux browser $BSURF get attr e3 href              # 属性
cmux browser $BSURF get count "button"            # 要素数
cmux browser $BSURF get box e3                    # バウンディングボックス

待機

cmux browser $BSURF wait --selector "#loaded" --timeout-ms 10000
cmux browser $BSURF wait --text "Success"
cmux browser $BSURF wait --url-contains "/dashboard"
cmux browser $BSURF wait --load-state complete          # または interactive
cmux browser $BSURF wait --function "document.readyState === 'complete'"

JavaScript・DOM 注入

cmux browser $BSURF eval 'document.querySelector("h1").innerText'
cmux browser $BSURF addinitscript 'window.myFlag = true'  # ページ読み込み前に注入
cmux browser $BSURF addstyle 'body { background: red }'   # CSS 注入

iframe・ダイアログ

cmux browser $BSURF frame selector "#iframe1"   # iframe に切り替え
cmux browser $BSURF frame main                   # メインフレームに戻る

cmux browser $BSURF dialog accept               # confirm/alert を OK
cmux browser $BSURF dialog dismiss              # キャンセル
cmux browser $BSURF dialog accept "入力テキスト" # prompt に入力

スクロール・スクリーンショット・デバッグ

cmux browser $BSURF scroll --dy 500                    # 下に 500px
cmux browser $BSURF scroll --selector "#list" --dy 200 # 要素内スクロール
cmux browser $BSURF screenshot --out ~/Desktop/cap.png  # ⚠️ トークン大消費。snapshot / get 系で代替できないか必ず検討
cmux browser $BSURF highlight e3                        # 要素をハイライト
cmux browser $BSURF console list                        # コンソールメッセージ
cmux browser $BSURF errors list                         # JavaScript エラー

セッション・状態管理

cmux browser $BSURF cookies get / set / clear
cmux browser $BSURF storage local get --key "user"
cmux browser $BSURF storage session set --key "token" --value "xyz"
cmux browser $BSURF state save ~/.browser-state/session.json   # 認証状態を保存
cmux browser $BSURF state load ~/.browser-state/session.json   # 復元
cmux browser $BSURF tab list / new / switch 2 / close 2        # タブ管理

WKWebView の制限(コマンドは存在するが not_supported エラー)

以下のコマンドは cmux browser --help に表示されるが、現在の WKWebView では動作しない:

コマンドエラー
viewport <w> <h>browser.viewport.set is not supported on WKWebView
geo <lat> <lon>browser.geolocation.set is not supported on WKWebView
offline true/falsebrowser.offline.set is not supported on WKWebView
trace start/stopbrowser.trace.start is not supported on WKWebView
network route/unroutebrowser.network.route is not supported on WKWebView
screencast start/stopbrowser.screencast.start is not supported on WKWebView
input mouse/keyboard/touchbrowser.input_mouse is not supported on WKWebView

ブラウザ操作のよくあるミス

ミス正しい方法
スナップショットなしで ref を使う操作前に snapshot --interactive で ref を取得
ナビゲーション後に古い ref を使う遷移後は再スナップショット(ref は DOM 変更で無効化)
dialog を無視してハングするクリック前後に dialog accept/dismiss を仕込む
iframe 内の要素が見つからないframe selector で切り替えてから操作する
フォーム値や DOM 状態を screenshot で確認するget value / get attr / get text / is checked / snapshot で取得する。screenshot は視覚レイアウトのバグ調査限定

環境変数

変数説明
CMUX_SOCKET_PATHcmux ソケットのパス。存在すれば cmux 内で動作中
CMUX_WORKSPACE_ID現在のワークスペース ID
CMUX_SURFACE_ID現在のサーフェス ID

よくあるミス

ミス正しい方法
cmux-send "line1\nline2\n" で複数行を送る各行を個別に cmux-send し、行間で cmux-send-key return を使う
UUID でサーフェスを指定する短縮 refs を使う: surface:1, pane:2
同一ワークスペースのレイアウト崩れを放置cmux-grid で整列するか、別ワークスペースに配置する
cmux-read の結果が空で諦めるrefresh-surfaces を実行してからリトライ
Trust プロンプトを見逃してハングする起動後に cmux-read でポーリングして検出する
cmux read-screen / cmux send / cmux send-key を直接呼ぶcmux-read / cmux-send / cmux-send-key ラッパーを使う(surface→workspace 自動解決)
cmux-send "C-c"cmux-send "\x03" で Ctrl+C を送るcmux-send-key ctrl+c を使う(制御キーの送信 参照)
「別 surface で」と言われたのに現在の surface で実行するcmux new-split で新規 surface を作ってからそこで実行する
既存 surface を再利用する実行中プロセスや状態を破壊するリスクがあるため、原則 new-split で新規作成する
ワークスペースに名前を付けないrename-workspace で用途を示す名前を付ける
/exit だけでクリーンアップ完了と思う/exitsleep 2close-workspace / close-surface でペインも閉じる

コマンドクイックリファレンス

コマンド説明
identify / tree環境情報 / トポロジー表示
list-workspaces / list-panes / list-pane-surfaces一覧表示
new-workspace / new-split <dir>ワークスペース・ペイン作成
cmux-send / cmux-send-key / cmux-read入出力操作(surface→workspace 自動解決ラッパー)
refresh-surfaces画面バッファ強制更新
close-surface / close-workspaceリソース終了
select-workspace / rename-workspace / rename-tab選択・名前変更
cmux-grid / cmux-grid 2x3ペインをグリッドレイアウトに整列
notify / set-status / set-progress通知・ステータス・進捗
wait-forシグナル待機

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.85%
按下载量换算181

Claude

29.2%
按下载量换算152

Cursor

17.48%
按下载量换算91

Gemini CLI

8.95%
按下载量换算46

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills