🐈

ccmanagerでClaude CodeとGemini CLIを使い分けてバイブコーディングの効率を上げる

に公開

TL;DR

  • ccmanagerを使うとworktreeごとにClaude CodeとGemini CLIを指定して並行稼動できる
  • status hookの機能で、Claude Code/Gemini CLIがIdle / Waiting / Busyの状態になったときに特定のコマンドを実行できる
    • この機能のおかげで、みんながプロンプトの工夫などでやっているタスクの終了などにすぐに気付けるように設定したりできる
    • 任意のコマンドを実行できるのでSlack通知とか色々なんでもできる
  • 他にもccmanagerが便利になる改善があった

はじめに

先日Gemini CLIが出ましたね。Claude Codeを置き換える完全なゲームチェンジャーでは今のところなさそうではあるものの、時間の経過や用途次第でベストなツールは今後も目まぐるしく変わることが予想されます。
実験したり用途ごとに変える目的で、タスクごとに使用するAIエージェントを変えて、それらを楽に管理したいと思うことはないでしょうか?

ccmanagerの最新バージョンでは、Git worktreeごとにClaude CodeとGemini CLIを柔軟に使い分けられるようになりました。さらに、AIの状態変化を検知して任意のコマンドを実行できるようにしたり、差分の可視化、ショートカットキーなど、開発効率を大幅に向上させる機能が追加されています。

つまり、この記事は以下の前回紹介記事以降にccmanagerに追加した、さらなる便利機能の紹介記事になります。

https://zenn.dev/kbwok/articles/33fad69555d005

インストールと使い方

# インストール
npm install -g ccmanager

# 起動
ccmanager

# プロジェクトルートで起動
cd my-project
ccmanager

主な新機能

Claude CodeとGemini CLIをworktreeごとに選択できるプリセット機能

最大の特徴は、プリセット機能により、セッション開始時にClaude CodeかGemini CLIを選択できることです。

以下は実際に、必要な設定をしてClaude CodeとGemini CLIを選択してセッションを開始する様子です。

プリセットの設定

上記GIFのようにccmanagerのCLIから設定するか、~/.config/ccmanager/config.jsonでプリセットを定義できます:

{
  "commandPresets": [
    {
      "id": "claude-resume",
      "name": "Claude Code (Resume)",
      "command": "claude",
      "args": ["--resume"],
      "fallbackArgs": [],  // --resumeが失敗したらフォールバック
      "detectionStrategy": "claude"
    },
    {
      "id": "gemini-default",
      "name": "Gemini CLI",
      "command": "gemini",
      "args": [],
      "detectionStrategy": "gemini"
    }
  ],
  "selectPresetOnStart": true
}

設定の詳細は以下を参照してください。

https://github.com/kbwo/ccmanager/blob/main/docs/gemini-support.md

フォールバック機能

Claude Codeで前回のセッションを引き継ぎたいとき、claude --resumeclaude --continueを実行することで再開することができます。
このとき、うっかり初めてセッションを開始するworktreeでclaude --resumeを実行して No conversations found to resumeになってしまい、セッションがないときは新しいセッションを始めてくれよ...と思うときはありませんか?

こんなときに使える、プリセット機能の便利な点として、コマンドのフォールバックがあります。

上記のpresetの設定のように、argsを["--resume"]、fallbackArgsを[] にすることで、

  • 前回のセッションがある場合 → --resumeで継続
  • 前回のセッションがない場合 → 引数なしのclaudeで新規開始

というセッション運用が可能になります。

Status Hook機能 - エージェントの状態変化を即座にキャッチ

Status Hookは、Claude Code/Gemini CLIの状態が変化したときに任意のコマンドを実行できる、個人的に最高に便利な機能です。

ccmanagerでは、セッションがどのような状態になっているか、以下の種類で検知します。

  • idle: 何もしていない状態
  • busy: 処理中
  • waiting_input: ユーザーの入力待ち (Yes/Noなど)

Status Hookにより、特定の状態に変化したときに任意のコマンドを実行できます。

皆さんプロンプトを工夫したりして状態の変化を通知しているようですが、Status HookではAI非依存の状態検知ができるため、プロンプトによる通知指示より確実性高く通知できます。

また、任意のコマンドを実行できるため、通知だけでなくどんなカスタマイズも可能で、非常に拡張性が高いです。

実際に設定する方法はドキュメントを参照してください。

https://github.com/kbwo/ccmanager#status-change-hooks

https://github.com/kbwo/ccmanager/blob/main/docs/status-hooks.md

その他の改善

他にも、前回の記事から現在までに追加された便利機能について紹介します。

Worktree差分の可視化

各worktreeのGit状態が一目でわかるようになりました

※機能を完全に使用するには、 Gitのextensions.worktreeConfigを有効にする必要があるので、

git config extensions.worktreeConfig true
# あるいはグローバルに有効にする
git config --global extensions.worktreeConfig true

の実行をおすすめします。

数字キーショートカット(0-9)

最初の10個のworktreeに0〜9のショートカットが割り当てられ、即座に選択できます:

0 ❯ feature/payment
1 ❯ fix/validation
2 ❯ docs/api-update
...
9 ❯ test/integration

数字キーを押すだけで、矢印キーでの移動なしに瞬時に切り替え可能です。

自動Worktreeディレクトリ生成

以前はブランチ名とディレクトリパスを別々に指定する必要がありましたが、パターンベースの自動生成が可能になりました

今後追加予定の機能

以下の機能を今後追加していく予定です。

  • Codex CLIやaider、opencodeへの対応
    • 個人的にあまり使っていないのでやっていませんでしたが、Gemini対応後からはこれらを追加しやすい設計にしたのでなるべく早く対応します
  • リポジトリを横断した、複数プロジェクトの統合worktree/セッション管理
  • 有志の提案によるPRをマージ
    • 便利そうなPRがいくつか来ているので問題なければ順次マージ+リリースしていきたいです

まとめ

ccmanagerの新機能により以下のように便利さが増しました。

  • 複数のAIツールを適材適所で使い分けられる
  • Status Hookで作業完了を見逃さない
  • 差分表示で各worktreeの状態を素早く把握
  • ショートカットで高速切り替え
  • 自動パス生成で面倒な入力を削減

これらの機能を組み合わせることで、Claude Code / Gemini CLIを使った並行開発がより効率的になります。

ぜひccmanagerを使ってみてください。 バグ報告や機能要望はもちろん、コントリビューションも歓迎です。

ありがたいことに、紹介した機能のいくつかも有志の方のコントリビューションによるものです。より多くの人に使っていただき、力を借りて継続的に改善できればと思います。

Discussion