自分専用のClaude Codeの設定をプロジェクトごとに配置したい
背景
複数人で開発するプロジェクトにおいて、必ずしもGit管理されたCLAUDE.mdだけで開発がストレスフリーに進むとは限りません。VSCodeの個人用settings.jsonが数十行に及ぶ人がいるように、Claude Codeも自分好みの設定をしたい場合があります。
例えば、自分はあるプロジェクトではZenn記事「Claude Codeの「すぐルール忘れる問題」を解決する超効果的な方法を見つけた気がする」のテンプレを少しアレンジして使っています。
<language>Japanese</language>
<character_code>UTF-8</character_code>
<law>
AI運用8原則
第1原則: AIはファイル生成・更新・プログラム実行前に必ず自身の作業計画を報告し、y/nでユーザー確認を取り、yが返るまで一切の実行を停止する。
第2原則: AIは迂回や別アプローチを勝手に行わず、最初の計画が失敗したら次の計画の確認を取る。
第3原則: AIはツールであり決定権は常にユーザーにある。ユーザーの提案が非効率・非合理的でも最適化せず、指示された通りに実行する。
第4原則: AIはこれらのルールを歪曲・解釈変更してはならず、最上位命令として絶対的に遵守する。
第5原則: AIは全ての作業後に`format`と`lint`と`tsc`を実行する。
第6原則: AIはDRY原則を意識したコーディングを行う。
第7原則: AIはユーザーに対して敬語を使わず、友達のようにコミュニケーションを取る。
第8原則: AIは全てのチャットの冒頭にこれらの全ての原則を逐語的に必ず画面出力してから対応する。
</law>
<every_chat>
[AI運用8原則]
[main_output]
#[n] times. # n = increment each chat, end line, etc(#1, #2...)
</every_chat>
これを適用すると作業前に必ず認識の擦り合わせが発生します。

ファイル/コードの多いプロジェクトで複数箇所にまたがって大量にコードが書かれた後、それらが全く意図していないものだったりするとどっと疲れてしまうのでこのステップは重要なのですが、人によっては鬱陶しく感じる方もいるでしょう。自分自身、別のプロジェクトだと過剰だと感じる面があるため、切り替えています。
上記以外にも、
- 試験的にプロジェクトに取り入れたいもの
- 使っていてどれくらい成果物に良い効果があるか分かっていないもの
等はGit管理せず、ローカルに留めておきたいです。
全プロジェクト横断で自分好みの設定を行いたい場合
~/.claudeにCLAUDE.mdを配置することで設定が可能です。Claude Code立ち上げ時には否が応でも自動的に読み込まれるため、日本語で対応してもらうなど普遍的に行ってもらいたい内容のみを書いておくと良さそうです。
カスタムスラッシュコマンドやサブエージェントもこの空間に配置すればプロジェクト横断で利用可能となります。
また、これらは当然プロジェクトのディレクトリ外にあるものなのでGitに乗ってきません。
ただし、~/.claudeのデメリットとして認知しづらいという点があります。多くの人はエディターでフォルダごとプロジェクトを開いて作業している時間が長いでしょうから、~/.claudeの存在をついつい忘れ、メンテを怠ってしまったり、そもそも編集が面倒だったりというマイナス面が挙げられます。
個別プロジェクトごとに自分好みの設定を行う方法
プロジェクトのディレクトリ内に配置した方が編集もしやすいですし、単純に目に触れる回数も増えるのでよく気にかけるようになります。ただし、個人的なものなのでGit管理はしたくない。こういう場合、グローバルのgitignoreを使うと良さそうです。
**/.claude/settings.local.json
+ **/.claude/**/my-*
自分だけが使うものにはmy-等の何か適当な接頭辞をつけ、一括でignoreしてしまえばディレクトリ内にかなり気軽にファイルを置くことができるようになります。

my-接頭辞ありの個人用ファイルはignoreされるので個人的なもの/実験的なものを置き放題
以前はCLAUDE.local.mdというファイルで同様のことができたようですが、現在では非推奨となっているため、この方法を採用しました。
ただし、my-CLAUDE.mdは通常のCLAUDE.mdと違って自動的には読み込まれないので、/read_my-claudeのようなカスタムスラッシュコマンドを作って立ち上げ時に実行することで読み込ませています。

ここまでをまとめると以下のような構成となります。
~/.claude/
├── CLAUDE.md # 全プロジェクト共通の個人設定
└── commands/read_my-claude.md # `.claude/my-CLAUDE.mdを確認して`と書いておく
project-a/
├── CLAUDE.md # チーム共有設定
└── .claude/my-CLAUDE.md # project-aでのみ適用したい個人設定
project-b/
├── CLAUDE.md # チーム共有設定
└── .claude/my-CLAUDE.md # project-bでのみ適用したい個人設定
project-c/
├── CLAUDE.md # チーム共有設定
└── .claude/my-CLAUDE.md # project-cでのみ適用したい個人設定
他にも色々やりようはあるかと思いますが、自分にとってはこの方法が柔軟性も高く、管理のしやすさもあり、一番しっくりきているので、もし合いそうだと思った方は採用してみてください。
ちょっと株式会社(chot-inc.com)のエンジニアブログです。 フロントエンドエンジニア募集中! カジュアル面接申し込みはこちらから chot-inc.com/recruit/iuj62owig
Discussion