tmuxの別ペインで動いているClaude Codeエージェントとメッセージを送受信するスキル。「別のペインのClaudeに聞いて」「隣のClaudeに話しかけて」「他のエージェントと連携して」「ペインにメッセージを送って」といった要求があった場合に使用する。また、[FROM:X:X.X] 形式のメッセージを受信して返信する必要がある場合にも使用する。
tmuxペインを介して複数のClaude Codeエージェント間でメッセージを送受信する。
前提条件: tmux がインストールされており、複数のペインでClaude Codeが起動済みであること。
tmux send-keys -t pane "text" Enter のように1コマンドにまとめると、Enterが効かずテキストが入力欄に残ったまま送信されないことがある。この問題を避けるため、2ステップを確実に行う scripts/tmux-send.sh を使う。
# Usage: scripts/tmux-send.sh <target-pane> <message>
scripts/tmux-send.sh 0:0.1 "送りたいメッセージ"
# シングルクォートを含む場合はstdinで渡す
echo "it's a message" | scripts/tmux-send.sh 0:0.1
スクリプトは送信元ペインIDを自動付与する。受信側はFROMアドレスをそのまま返信先に使えるため、3ペイン以上の環境でも返信先に迷わない:
[FROM:<session>:<window>.<pane>] メッセージ内容
セッション名は環境によって異なる(0、main など)。実際の出力例:
[FROM:main:0.0] メッセージ内容 ← session_name が "main" の場合
[FROM:0:0.0] メッセージ内容 ← session_name が "0" の場合
受信したエージェントは [FROM:...] の値をそのまま返信先として使えばよい。
相手ペインのエージェントにも返信方法を伝える。相手もこのスキルを使っていれば scripts/tmux-send.sh の使い方は既知のため、初回メッセージで返信先の特定方法だけ伝えれば十分:
メッセージを受け取ったら、
[FROM:<session>:<window>.<pane>]の部分を返信先としてscripts/tmux-send.shで送り返してください。
ペイン 0:0.0 ペイン 0:0.1
| |
|-- scripts/tmux-send.sh 0:0.1 "日付を教えて" ->|
| ([FROM:0:0.0] 日付を教えて として届く) |
| |-- scripts/tmux-send.sh 0:0.0 "2026年2月26日です"
|<-- [FROM:0:0.1] 2026年2月26日です ------------|
| |
# 全ペインの一覧
tmux list-panes -a
# 特定ペインの内容を確認
tmux capture-pane -t 0:0.1 -p | tail -20
複数行メッセージは非対応: tmux send-keys は改行をEnterとして解釈するため、メッセージに改行が含まれると途中で送信が発生し残りが壊れる。スクリプトは自動で改行をスペースに置換するが、意図しない内容になる可能性があるため、メッセージは1行に収めることを推奨する。特に引数渡し("..." の中でBashが改行を挿入するケース)に注意
シェル特殊文字の変形: !(履歴展開)やバッククォートを含むメッセージをBash引数として渡す際、AIがこれらをエスケープ(\!、\`)することがある。特殊文字を含む場合はstdinを使う:
cat <<'EOF' | scripts/tmux-send.sh <target-pane>
$HOME や `cmd` や !記号 を含むメッセージ
EOF
'EOF'(シングルクォート)でシェル展開を完全に抑制できる
受信側が処理中の場合のキュー: 受信側のエージェントが別のメッセージを処理している最中に次のメッセージが届くと、入力欄にキューされる。メッセージは消失しないが、処理順序や応答タイミングが遅延することがある
0:0.0、0:0.1 など)は環境によって異なる。tmux list-panes -a で確認してから使う--dangerously-skip-permissions なしで起動している場合、スクリプト実行に確認が求められることがあるtmux capture-pane で確認し、Enterが送信されているか検証する