
ターミナル生活を支えるClaude Code設定
はじめに
本記事はクラスメソッド AI駆動開発 Advent Calendar 2025 23日目の記事です。
自分は開発は基本ターミナル上(WeztermとNeovim)で行っています。ゴリゴリにカスタマイズしているかと言われるとそうではないです。逆に言うと導入しやすいものが多いかなと思い今回記事にします。うまくいかなかったことも書こうと思います。
今年の7月くらいに設定してから、あまりキャッチアップできておらず、古い部分もあると思いますがご容赦ください。逆に自分はこうやって活用しているよ!というコメントはとてもありがたいので記事を引用してガンガンフィードバック頂けると嬉しいです😭
ターミナルに関わらないClaude CodeのTipsも多いのでそちらも興味があれば読んで頂けると幸いです🙇
今年の8月にdotfiles管理について、Claude Code Meetup Japan #2で話した内容と分野的には近い内容です。
活用するためにしていること
前提
- ClaudeはMax 100プランを利用
- サーバーサイド、インフラのコードを書くことが多い
- ツール関係はdotfilesで管理
- nix🔰で、OSレベルはnixで、アプリレイヤーはmiseを使っています
Claudeの設定ファイルは以下です。
プロジェクトの操作
1リポジトリあたりtmuxのwindowを4つ立てています。これをoption + 矢印キーで移動します。
| 0(lazygit) | 1(Neovim) | 2(コマンド叩く用) | 3(Claude Code) |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Claude Codeは縦に分割して3ペインくらい立てることが多いです。

常時3ペイン稼働していることは稀です。。レビュー途中のPRとかは消さずに残しています。
あとは、会話をforkしたくなるケースがあります。それは claude -r から 同じセッションに入って、時にESC ESCで遡ってforkしています。
xコマンドで、この4 windowが起動するようになっています!

ESC ESCで遡るほどでもないClaude Codeの差分はlazygitで捨てたりしています。
Slash commands
グローバルで使うスラッシュコマンドを格納しています。プロジェクトのリポジトリの方によく使うものはあってあまり使っていないのが正直なところです。
Status line
現在はコンテキストの量だけ表示しています。色々表示していた時期もありましたが、活用できておらずこれだけになりました。ハードに使っている人はリセットのタイミングもあると良いと思いますね。自分の使い方的にはまだ必要ないです。

表示のスクリプトはこちらを参考にしてください。
ただコンテキスト量は昔ほど気にしなくて良いと思っています。理由として圧縮する際に、planファイルが再度読み込まれるところにあります。
Hooks
通知のみに活用しています。リポジトリ名とブランチ名を出しています。複数のリポジトリで作業しているとき、多少役に立ちます。

通知スクリプトは以下でosascriptを利用しています。
ただモニターが複数ある場合、見落とすことがあるので確実に気づきたいなら音の方が確実だと思います。
Hooksで静的解析にトライしたことがありましたが、意図しない発火でコンテキスト圧迫したり、AIの実装の試行錯誤の作業妨害になりやめました。exit 2 stderrでAIに返却できるのでコマンドラッパーを書いたのですが、あまり活用はできなかったです。。
CLAUDE.mdに書いたり、プロンプトで指示する形で落ち着いています。静的解析からの修正はHooksを使うより、huskyやlefthookの方がpushのタイミングで発火するように調整できるので 相性が良いです。(個人的にはturboのような結果をキャッシュしてくれるツールがあるとストレスが少ないと思います)
Claude Codeのバージョン運用
9割の人はデフォルトの自動アップデートで良いと思います。自分はアップデートされたことを知りたいので、別の方法をとっています。
自動アップデートをOFFにして、アップデートがあったらdotfilesにrenovateからPRが来るようにしています。

CHANGELOGと付き合わせてアップデート内容をなぞったりすると良いですね(Claude Codeはクローズドソースなので、CHANGELOGが遅いのでタイミング的にない場合があります)

この実現方法は、パッケージ名@バージョンの形式のファイルを用意します。
上記のファイルをrenovateのcustomManagersの正規表現でパースしています。
minimumReleaseAgeの設定と、最新を追いたい特定のツールに関してはプロバイダーを信頼して除外設定も入れておくなど柔軟に対応可能です。
pnpmはグローバルに入れるツールを設定ファイルで定義できないので、Makefileで先ほどの一覧をループして導入しています。。ここら辺はもっと良いやり方がありそうです。。
@シンボル検索
シンボル検索はClaude Codeのバージョンによって挙動が安定しない印象があります。v2.0.75を前提に書きます。
例えば以下のケースです。
- gitignoreしたけど、@シンボル検索したいファイル
- コミットしたけど、@シンボル検索したくないファイル
まず検索方法を固定します。これでClaude Codeのバンドルされたrgが使われないので、挙動を安定させられると思っています。
では「gitignoreしたけど、@シンボル検索したいファイル」を検索候補にする方法を試します。.gitignoreされているtargetディレクトリを@シンボル検索としたいとします。画像のように検索されません。

.ignore 設定を入れます。
!target/
以下のように検索が有効化されます。

ニッチですが、ログ形式をパースしたときなど結構有用かなと思います。
次に「コミットしたけど、@シンボル検索したくないファイル」です。examplesは指定する機会がないとします。

.ignore 設定を入れます。除外なので!は設定しません。
examples
するとexamplesディレクトリは表示されません。

このように検索を最適化することで、よりプロンプトを書くコストを省力化できます。
完全にコントロールする場合、全てを検索対象にして、除外を決める方法もあります。
!*
git
その他
Claude Codeで壁打ちした内容を気軽に共有できると面白そうだなと思い、最近はClaude Codeの履歴を取り出してjinja2フォーマットに沿って変換するツールを作ってみました。ミニマル構成なので応用の余地がありますが、READMEに書いた例は、UIとしてfzfを使い、$EDITORに登録しているツールでチャット履歴を変換しながら開く例です。同期で起動するnano, vim, neovimが相性いいかなと思います。
プロンプトを共有したり、別のコンテキストにしたり、ちょっとした調査を共有する際にClaude Codeを活用すること目論んでいます(これにより調査もターミナル上で完結する世界になります🌏)。まだドッグフーディング🐕🍚中なので、便利に使えたらまた紹介しようかなと思います!
他にも以下のようなことに気をつけて運用しています!
- Claude Codeのセッションの中で一度でもコミットするとタスクの最後にコミットする癖がつく(別セッションでコミットさせる)
- PR作成はslashコマンドで可能だが、読んだものを見落とすリスクが高く扱いが難しい。小さいものは良い。
- MCPは現状特に入れずに運用
- 常時起動するツールが少なく、コンテキスト圧迫を懸念してという理由
- dotfilesにはVisual Studio Codeのfork系も一括でMCP設定するものがありますが、現状使っていません...
さいごに
今年の後半発表された機能は今触っている段階でまだこなれていないのでまた機会があれば紹介したいと思います!そういえばnixに移行したのがちょうど去年末ということで、年始は環境構築が捗りますね。
先ほどのdotfilesはターミナルだけでなく、Visual Studio Codeのfork系も共通化、設定管理をしているので、そちらも別の機会で紹介出来たらと思います!












