kitty について
kittyは、リモートコントロール用コマンドラインでkittyのウィンドウやタブを操作するスキルです。開発者がメインの作業を止めずにバックグラウンドプロセスを実行・確認し、コマンド送信やターミナルセッションの管理を行えます。
主な機能
- 01ウィンドウとタブの起動
- 02ターミナルへのコマンド送信
- 03表示内容とスクロールバックの取得
- 04ウィンドウとタブのフォーカス・終了
- 05タイトル、ID、状態によるウィンドウ検索
活用シーン
- 01別ウィンドウで開発サーバーを実行
- 02長時間プロセスのログを確認
- 03セッションへの割り込みと終了
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ xyenon/ agents --skill kittyインストール後、Claude Code で/kittyを入力して読み込まれたか確認します。
詳細
Kitty リモートコントロールスキル
このスキルを使うと、kitty のリモートコントロール機能を Bash ツールから直接利用して、複数のプロセス(サーバー、ウォッチャー、長時間のビルドなど)を同時に管理できます。
kitty ターミナル内で実行されているため、新しいウィンドウやタブを開いて作業を行い、メインの通信チャネルをブロックせずに済みます。
1. 環境を確認してステータスをチェックする
まず、リモートコントロールを有効にした kitty 内で実行されていることを確認します。ウィンドウの一覧表示を試してみてください。
kitten @ ls
失敗した場合は、$KITTY_LISTEN_ON が設定されているか確認してください。構成によっては、リモートコントロールが有効でも(デフォルトのソケットを使用している場合など)、空になっていることがあります。
echo $KITTY_LISTEN_ON
リモートコントロールが有効になっていない場合は、ユーザーが kitty.conf に allow_remote_control yes を追加するか、--allow-remote-control を指定して kitty を起動する必要があります。
2. バックグラウンドプロセスを起動する
コマンド(開発サーバーなど)を実行し、実行状態を維持して確認できるようにするには、次のようにします。
-
エージェントと同じタブに新しいウィンドウを作成します(推奨):
$KITTY_WINDOW_IDを使うと、新しいウィンドウがエージェントと同じタブに作成されます。WID=$(kitten @ launch --match "id:$KITTY_WINDOW_ID" --title "server-log" --keep-focus) echo "Created window with ID: $WID" -
または、新しいタブを作成します:
kitten @ launch --type=tab --title "server-log" --keep-focus -
コマンドを直接指定して起動します: (コマンドの終了後もウィンドウを開いたままにする場合は、
--holdを使用します)kitten @ launch --title "server-log" --keep-focus --hold npm start
3. ウィンドウにテキスト/コマンドを送信する
特定のウィンドウにキー入力を送信します。正確に指定するにはウィンドウ ID を、簡単に指定するには条件マッチングを使います。
ID を使用する(確実):
kitten @ send-text --match "id:$WID" "npm start\n"
マッチングを使用する(タイトル):
注:Enter キーには \n を使います。シェルによっては、改行が正しく解釈されるように $'...' を使うか、パイプで渡す必要があります。
kitten @ send-text --match "title:server-log" "npm start
"
# OR
echo "npm start" | kitten @ send-text --match "title:server-log" --stdin
または、すべてのウィンドウに送信します:
kitten @ send-text --all "echo hello\n"
4. 出力を確認する(ウィンドウからテキストを取得する)
ウィンドウに現在表示されているテキストを取得します:
kitten @ get-text --match "id:$WID"
スクロールバックバッファーを含むテキストを取得します:
kitten @ get-text --match "title:server-log" --extent=all
最後のコマンドの出力のみを取得します(シェル統合が必要です):
kitten @ get-text --match "title:server-log" --extent=last_cmd_output
5. ウィンドウにフォーカスする/前面に表示する
特定のウィンドウにフォーカスします:
kitten @ focus-window --match "id:$WID"
特定のタブにフォーカスします:
kitten @ focus-tab --match "title:server-log"
6. プロセスを操作する
Ctrl+C を送信する(割り込み):
kitten @ send-text --match "id:$WID" "\x03"
ウィンドウを閉じる:
kitten @ close-window --match "id:$WID"
タブを閉じる: (注:タイトル、またはそのタブ内にある任意のウィンドウ ID でマッチングしてタブを閉じることができます)
# By ID of a window inside the tab
kitten @ close-tab --match "id:$WID"
# By tab title
kitten @ close-tab --match "title:server-log"
7. 応用:ウィンドウのマッチング
Kitty は柔軟なマッチング式に対応しています。
title:pattern- ウィンドウタイトルでマッチングid:number- ウィンドウ ID でマッチングpid:number- プロセス ID でマッチングcwd:path- 現在の作業ディレクトリでマッチングcmdline:pattern- コマンドラインでマッチングstate:focused- フォーカス中のウィンドウでマッチングstate:active- アクティブなウィンドウでマッチング
and、or、not と組み合わせます:
kitten @ focus-window --match "title:server and state:active"
8. ウィンドウ/タブの情報を取得する
すべての OS ウィンドウ、タブ、ウィンドウの一覧を JSON 形式で取得します:
kitten @ ls
現在フォーカス中のウィンドウ ID を取得する:
kitten @ ls | jq -r '.[].tabs[] | select(.is_focused) | .windows[] | select(.is_focused) | .id'
特定の情報を抽出する:
kitten @ ls | jq '.[].tabs[].windows[] | {id, title, cmdline}'
パターンのまとめ
WID=$(kitten @ launch --title "NAME" --keep-focus [CMD])- ウィンドウを作成して ID を保存しますkitten @ send-text --match "id:$WID" "CMD\n"- コマンドを確実に送信しますkitten @ get-text --match "id:$WID"- 出力を読み取りますkitten @ close-window --match "id:$WID"- 後片付けをします
よく使うリモートコントロールコマンド
| コマンド | 説明 |
|---|---|
kitten @ ls | すべてのウィンドウ/タブを一覧表示 |
kitten @ launch | 新しいウィンドウ/タブを作成 |
kitten @ send-text | ウィンドウにテキストを送信 |
kitten @ get-text | ウィンドウからテキストを取得 |
kitten @ focus-window | ウィンドウにフォーカス |
kitten @ focus-tab | タブにフォーカス |
kitten @ close-window | ウィンドウを閉じる |
kitten @ close-tab | タブを閉じる |
kitten @ signal-child | プロセスにシグナルを送信 |
kitten @ set-tab-title | タブのタイトルを変更 |
kitten @ set-colors | ターミナルの色を変更 |