プロジェクトをまたぐたびに「どのリポジトリで作業?」を解消した話
- ⏱ 約4分で読めます - 👁 … viewsClaude Code を日常的に使っていると、地味にじわじわ来るストレスがあります。「今日はあのプロジェクトの話をしたいんだけど、Claude Code にそれをどう伝えるか」という問題です。
特定のプロジェクトで作業するとき、毎回「~/projects/my-app に移動して」と言うか、ターミナルで cd してから Claude Code を起動するか。どちらにせよ、一手間かかる。プロジェクトが増えるほど、その一手間の回数も増えていきます。
どんな問題だったか
私の場合、Claude Code を使うプロジェクトが現時点で20を超えています。受託案件もあれば、自社ツールもあれば、個人の趣味プロジェクトもあります。
これだけあると、毎回パスを手打ちするのも、ディレクトリを覚えておくのも、けっこう面倒です。特に「今日はちょっとあのプロジェクトを確認したい」という軽い作業のたびに、ディレクトリを調べ直すのは気持ちよくない。
かといって、エイリアスをシェルに大量に仕込むのも管理が煩雑ですし、Claude Code 側が知らないままというのも何か引っかかります。
UserPromptSubmit フックで解決した
Claude Code には「フック」という機能があります。特定のタイミングに自動でスクリプトを走らせる仕組みです。今回使ったのは UserPromptSubmit、つまり「メッセージを送ったとき」に動くフックです。
やったことはシンプルで、こういう Python スクリプトを .claude/repo_switcher.py に置いて、フックとして登録しました。
- プロンプトにプロジェクト名が含まれていたら、そのリポジトリパスを Claude に伝える
- 「リポジトリ一覧を見せて」と言ったら、選択メニューを出す
たとえば「受発注システムのあのバグを確認したい」と書くだけで、Claude は自動的に対応するリポジトリパスを知った上で答えてくれます。cd は必要ありません。
実際にどう変わったか
正直、かなり快適になりました。
以前は「まずディレクトリに移動して…」というステップがどこかで必要だったのが、今は会話の中でプロジェクト名を自然に出すだけで済みます。「ブログのあの記事を確認して」でも「受発注システムのモデルを見せて」でも、特別な手順なしで動く。
地味に効いているのが、日本語の通称でも登録できることです。正式なリポジトリ名を全部覚えていなくても、普段呼んでいる名前で動くのが、思っていたより便利でした。
フックに適した仕事かどうか
記事のために改めて考えてみると、このスクリプトがスキルではなくフックとして機能している理由がわかります。
スキルは「呼び出したときに動く」もの。フックは「送信するたびに自動で動く」もの。このスクリプトは、私がプロジェクト名を意識して使うというより、普段の会話の流れの中で勝手に機能してほしいものです。「/repo-switchを毎回打ちたい」とは思わない。だからフックが合っています。
Claude Code のフック機能は、使い始めると地味に広がります。「毎回やっているこれ、フックにできるんじゃないか」と気づく瞬間が、使い込むほど増えてきます。
登録の実態
実際のスクリプトでは、こんな形でリポジトリとパスの対応を管理しています。
REPOS = {
"受発注システム": "/path/to/order-system",
"order-system": "/path/to/order-system",
"社内ポータル": "/path/to/portal",
"ブログ": "/path/to/blog",
# ... 20以上続く
}
キーワードを長い順でマッチさせることで、「myoffice」と「office」が両方登録してあっても、正しい方に当たるようにしています。これはわりとハマりやすいところで、単純な前から検索だと短いキーワードが先に引っかかってしまいます。
「リポジトリ一覧」と書くと選択メニューになる機能も付けてあります。新しい人に「どんなプロジェクトがあるか」を見せるときとか、自分が忘れたときに確認するのに使っています。
こういう小さな仕組みの積み重ね
大きなアーキテクチャを変えたわけでも、すごい機能を作ったわけでもありません。でも、こういう「毎日の細かいストレスを潰す」小さな仕組みが積み重なると、Claude Code との対話がかなりスムーズになっていきます。
フック機能は、Claude Code を使い始めたばかりだと見落としがちな機能だと思います。「そんなこともできるのか」と気づいたとき、自分の使い方に合わせて何を自動化できるか、ちょっと考えてみると面白いと思います。
あなたは Claude Code で毎回繰り返していることで、自動化できそうなものはありますか?