tmux について
tmuxを使って対話型ターミナルアプリケーションを操作するスキルです。コマンドやキー入力の送信、出力の確認、リモートセッション管理が必要な開発者向けで、セッション検索やテキスト待機用のスクリプトも含みます。
主な機能
- 01tmuxセッションの作成と制御
- 02コマンドとキー入力の送信
- 03ターミナル出力の取得
- 04SSH経由のリモート実行
- 05セッション検索とテキスト監視スクリプト
活用シーン
- 01Python、Node、psqlのREPL実行
- 02ターミナルでのgdbやlldbによるデバッグ
- 03TTYが必要なCLIの操作
- 04SSH経由でリモート出力を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ connorads/ dotfiles --skill tmuxインストール後、Claude Code で/tmuxを入力して読み込まれたか確認します。
同梱ファイルscripts/find-sessions.shscripts/wait-for-text.sh
詳細
tmux スキル
tmux を使ってキー入力を送信し、出力をキャプチャすることで、対話型ターミナルアプリケーションを操作します。
使用する場面
- 対話型 REPL(python、node、psql)の実行
- gdb/lldb によるデバッグ
- TTY での操作が必要な CLI
- 出力を確認する必要があるリモート実行
基本パターン
# Create session
tmux new-session -d -s "$SESSION" -x 120 -y 40
# Send commands
tmux send-keys -t "$SESSION" "python3" Enter
# Capture output
tmux capture-pane -t "$SESSION" -p
# Wait for prompt (poll)
for i in {1..30}; do
output=$(tmux capture-pane -t "$SESSION" -p)
if echo "$output" | grep -q ">>>"; then break; fi
sleep 0.5
done
# Cleanup
tmux kill-session -t "$SESSION"
リモート実行(Codespaces/SSH)
mise でインストールしたツールの場合は、zsh でラップします。
# Non-interactive (won't hang)
ssh host 'zsh -c "source ~/.zshrc; tmux new-session -d -s mysession; tmux send-keys -t mysession python Enter"'
# Interactive (for tmux attach) - needs TTY
ssh host -t 'zsh -ilc "tmux attach -t mysession"'
重要:ハングを避けるため、zsh -lc ではなく zsh -c "source ~/.zshrc; ..." を使用してください。
ユーザーへの通知
セッションを開始した後、必ず次を出力してください。
To monitor: tmux attach -t $SESSION
To capture: tmux capture-pane -t $SESSION -p
ヒント
- ペインサイズを一定にするには
-x 120 -y 40を使用します wait-forではなくcapture-pane -pでポーリングします- シェルによる展開を避けるため、リテラルテキストの送信には
-lフラグを使用します - 制御キー:
C-c(中断)、C-d(EOF)、Escape - Python REPL の場合は、コンソールの装飾による干渉を避けるため
PYTHON_BASIC_REPL=1を設定します
ヘルパースクリプト
wait-for-text.sh
タイムアウトを指定して、tmux ペイン内のテキストパターンをポーリングします。
scripts/wait-for-text.sh -t session:0.0 -p '^>>>' -T 15
find-sessions.sh
必要に応じて絞り込みながら、tmux セッションを一覧表示します。
scripts/find-sessions.sh -q claude # filter by name
scripts/find-sessions.sh --all # all sessions
コメント
Markdown 対応