Claude Codeを使い始めてから、毎回同じことを説明するのが地味にしんどくて。「このプロジェクトはTypeScriptで、テストはVitestで書いて、コミットメッセージは日本語で…」って毎回言わなくていい方法ないかなと思って調べたら、CLAUDE.mdという仕組みがあった。これ、知ってから作業効率が段違いに変わったので共有します。
CLAUDE.mdとは何か?
CLAUDE.mdは、プロジェクトのルートディレクトリに置くマークダウンファイルです。Claude Codeはセッション開始時に必ずこのファイルを読み込むので、一度書いておけば毎回説明しなくてよくなります。
公式ドキュメントには「コーディング規約、アーキテクチャの決定、使用するライブラリの好み、レビューチェックリストを設定するのに使う」と書かれています。要は、チームのルールや自分の好みをまとめておく場所ですね。
CLAUDE.mdに書くべき内容
公式が例として挙げているのは以下の4つです:
- コーディング規約:インデントのスタイル、命名規則、禁止パターンなど
- アーキテクチャの決定:ディレクトリ構成の方針、レイヤー設計の考え方
- 使用するライブラリの好み:「HTTPクライアントはaxiosではなくfetchを使う」など
- レビューチェックリスト:コード生成後に確認してほしい項目一覧
これらを最初にまとめておくと、Claude Codeが毎回その前提で動いてくれるので、修正指示が劇的に減ります。
実際のCLAUDE.mdの書き方
普通のマークダウン形式で書けばOKです。以下は構成例です:
# プロジェクト概要
このリポジトリはECサイトのバックエンドAPIです。
## 技術スタック
- 言語: TypeScript (strict mode)
- フレームワーク: Express
- テスト: Vitest
- ORM: Prisma
## コーディング規約
- 関数はアロー関数を優先する
- any型の使用は禁止
- コメントは日本語で書く
## コミットルール
- コミットメッセージは日本語で記述する
- フォーマット: `種別: 変更内容` (例: `feat: ユーザー認証機能を追加`)
## テスト方針
- 新機能には必ずユニットテストを追加する
- テストファイルは `*.test.ts` の命名規則に従う
## レビューチェックリスト
- [ ] エラーハンドリングが適切か
- [ ] 型定義に漏れがないか
- [ ] テストが通っているか
このファイルをプロジェクトルートに CLAUDE.md という名前で置くだけ。次回セッション開始時から自動的に読み込まれます。
チームで使うとさらに便利
CLAUDE.mdはリポジトリにコミットできるので、チーム全員が同じ指示でClaude Codeを使えるようになります。「Aさんが生成したコードとBさんが生成したコードでスタイルが違う」という問題を防げるわけです。
公式ドキュメントでは、カスタムコマンド(例:/review-pr や /deploy-staging)を作ってチームで共有する方法も紹介されています。CLAUDE.mdと組み合わせることで、チームのワークフローをまるごとClaude Codeに乗せることができます。
Claudeが自動でメモリを積み上げてくれる機能もある
実は自分でCLAUDE.mdを書かなくてもいい部分もあります。公式ドキュメントによると、Claude Codeは作業を通じて「ビルドコマンド」や「デバッグ時の知見」などを自動的にメモリとして保存していきます。これを「auto memory」と呼んでいます。
ただし、チームルールや明示的に守ってほしいことは自動では記録されないので、そういった内容は自分でCLAUDE.mdに書くのがベストです。自動メモリと手書きのCLAUDE.mdを組み合わせるのが現実的な使い方だと思います。
まとめ
CLAUDE.mdはシンプルな仕組みですが、一度書いておくと毎回のセッションの質が安定します。特にチームで使う場合は、コーディング規約をまとめてリポジトリに入れておくだけで「Claude Codeが変なコードを生成した」という問題がかなり減ります。
まだ使ってない人は、今日のプロジェクトにさっそく CLAUDE.md を作ってみてください。書く内容に迷ったら、まず「よく使うライブラリ」と「コミットメッセージのルール」だけでも入れてみると違いがわかります。
コメント