ctab — タブタイトルの変更
自分の surface のタブタイトルを変える。先頭の [surface番号] を絶対に落とさないのがこのスキルの唯一にして最大の役目。番号はオペレーターが「292 に送って」のようにペインを指すときの住所なので、消すと呼べなくなる。
使い方
ctab # 現在の番号・タイトル・説明を表示
ctab "資金計画 齟齬解消" # → [103] 資金計画 齟齬解消
ctab "タイトル" "説明文" # 説明(サブタイトル)も同時に更新
bin/ctab は Plugin 経由で PATH に入る。/ctab <タイトル> と呼ばれたら、引数をそのままタイトルとして渡す。引数に説明まで含んでいる(「タイトル、説明は〜」のような自然文)ときは、タイトル部分と説明部分に切り分けて第1・第2引数に渡す。引数なしで呼ばれたら、まず現状表示を実行し、直近の作業内容から2〜4語のタイトルを自分で決めて提案してから適用する。
番号の扱い
スクリプトが次の順で解決する。生きた情報を先に見る。現タイトルを最後に置くのは、誤った番号が一度書き込まれても次回の実行で直るようにするため(先頭に置くと誤番号が自己増殖して直らない)。
cmux identify --jsonのcaller.surface_ref=surface:103→103$C11_SURFACE_NUM(c11 が出す。cmux 本家には無い。$CMUX_SURFACE_NUMがあればそちらを先に見る)- 現在のタイトルの先頭
[NNN]
どれでも解決できなければ rename せずに中止する(番号なしのタイトルを書き込まない)。現タイトルの番号が 1. と食い違っていたら警告し、rename で正しい番号に直す。
タイトルに番号を自分で付けて渡さない。[NNN] 付きで渡した場合、番号が一致していればそのまま通すが、違っていれば rename せずに中止する(他のペインの番号を名乗ったタブができると、オペレーターがどちらも呼べなくなる)。
実行後にタイトルを読み直し、番号が残っていることを確認してから成功を返す。この読み直しで失敗したときは既に書き込み済みなので、エラーメッセージがそう言う。再実行せず目視で確認する。
focused ではなく caller の surface を使う。identify の focused はオペレーターが今見ているペインで、自分とは限らない。
タイトルの付け方
- 2〜4語、役割が先頭。サイドバーは幅が狭く、先頭の数文字しか残らない
- 兄弟エージェントと先頭の語を変える。
親 :: 子のような連結や共通プレフィックスは付けない - 役割・ミッションが変わったときだけ改名する。コマンドごとに書き換えない
- 説明(サブタイトル)は「いま何をしていて、次のゲートは何か」を現在形の平文で。チケット番号だけを置かない
注意
- cmux / c11 の中でしか動かない。
CMUX_SOCKET_PATHが無い、または surface を特定できない場合はエラーで止まる - CLI 実体は
"${CMUX_BUNDLED_CLI_PATH:-cmux}"で選ぶ。c11 環境では c11 バイナリが呼ばれる - タイトル読み取りと説明の設定は CLI ビルドによって可否が違う。
get-titlebar-stateが無いビルドではtree --all --jsonのtitleで代替する。set-descriptionが無いビルドでは説明を諦めて警告を出す(rename 自体は成功させる) --surfaceは必ず明示する。省略すると$CMUX_TAB_ID/$CMUX_SURFACE_IDが既定値として使われ、拒否されずに呼び出し元のタブへ書かれる。他のペインを名指しで書き換えるときに省略すると黙って自分のタブを潰すので、常に明示する- セッション開始時のフックが
[NNN] Claude Codeに戻すことがある。本 Plugin の SessionStart フックは、タイトルが既に[NNN]で始まっていれば触らないので、ctab で付けた名前は/clearや再開でも残る - タイトルの表示は cmux の設定「Show Surface IDs in Tab Titles」とは別物。この番号はタイトル文字列そのものに含めて運用している