mcpField
K
kitty

kitty

github.com/xyenon開発196 回インストール3 週間前に更新
リポジトリ

kitty について

kittyは、リモートコントロール用コマンドラインでkittyのウィンドウやタブを操作するスキルです。開発者がメインの作業を止めずにバックグラウンドプロセスを実行・確認し、コマンド送信やターミナルセッションの管理を行えます。

主な機能

  1. 01ウィンドウとタブの起動
  2. 02ターミナルへのコマンド送信
  3. 03表示内容とスクロールバックの取得
  4. 04ウィンドウとタブのフォーカス・終了
  5. 05タイトル、ID、状態によるウィンドウ検索

活用シーン

  1. 01別ウィンドウで開発サーバーを実行
  2. 02長時間プロセスのログを確認
  3. 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. バックグラウンドプロセスを起動する

コマンド(開発サーバーなど)を実行し、実行状態を維持して確認できるようにするには、次のようにします。

  1. エージェントと同じタブに新しいウィンドウを作成します(推奨): $KITTY_WINDOW_ID を使うと、新しいウィンドウがエージェントと同じタブに作成されます。

    WID=$(kitten @ launch --match "id:$KITTY_WINDOW_ID" --title "server-log" --keep-focus)
    echo "Created window with ID: $WID"
    
  2. または、新しいタブを作成します:

    kitten @ launch --type=tab --title "server-log" --keep-focus
    
  3. コマンドを直接指定して起動します: (コマンドの終了後もウィンドウを開いたままにする場合は、--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}'

パターンのまとめ

  1. WID=$(kitten @ launch --title "NAME" --keep-focus [CMD]) - ウィンドウを作成して ID を保存します
  2. kitten @ send-text --match "id:$WID" "CMD\n" - コマンドを確実に送信します
  3. kitten @ get-text --match "id:$WID" - 出力を読み取ります
  4. 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ターミナルの色を変更

コメント