CoreCode を使いこなす
CLAUDE.md の書き方
CLAUDE.md は、Claude Code がセッションの開始時に毎回読み込むプロジェクトの説明書です。うまく書けば同じ間違いを繰り返さなくなり、長くて散らかっていると毎ターンのコンテキストを無駄にします。このページは Anthropic の公式ガイドに沿って、料金への影響も合わせて説明します。
- CLAUDE.md は強制される設定ではなくコンテキストです。Claude は考慮しますが、すべてのルールが守られる保証はありません。絶対に起きてはならないことは hook で止めてください。
- 個人のルールは
~/.claude/CLAUDE.md、プロジェクトのルールは./CLAUDE.mdまたは./.claude/CLAUDE.md、自分用のプロジェクト設定は./CLAUDE.local.mdに書き、これは.gitignoreに入れます。 - 具体的で確認できるルールを書き、1 ファイルは 200 行以内に収め、見出しと箇条書きで整理します。
- コードベースの一部にだけ当てはまるルールは、
pathsで範囲を絞って.claude/rules/に置きます。複数手順の作業はスキルとして書きます。 - 毎ターン送信されます。セッション中に編集した内容は、
/clear、/compact、または再起動の後に反映されます。
CLAUDE.md とは
このプロジェクトで Claude に知っておいてほしいことを書いた、ただの Markdown ファイルです。ビルドとテストの方法、コードの規約、構成、「必ず X する」といったルールなどを書きます。Claude Code はセッションの開始時に、これをコンテキストとして毎回読み込みます。
強制される設定ではありません。ルールが具体的で簡潔なほど、Claude は一貫して従います。保護されたディレクトリを編集させないなど、絶対に起きてはならないことには PreToolUse hook を使ってください。
Claude Code には自動メモリもあります。与えた修正は ~/.claude/projects/<project>/memory/ に保存されます。CLAUDE.md は自分で書くルール、自動メモリは Claude が学んだ内容を保持し、どちらも毎セッション読み込まれます。
置き場所
| 範囲 | 場所 | 用途 |
|---|---|---|
| ユーザー | ~/.claude/CLAUDE.md | すべてのプロジェクトに共通の好み。返答の言語や使うツールなど |
| プロジェクト | ./CLAUDE.md または ./.claude/CLAUDE.md | チームのルール。ビルドコマンド、コード規約、アーキテクチャなど。コミットします |
| ローカル | ./CLAUDE.local.md | このプロジェクトでの自分用の設定。ローカルのテスト URL など。.gitignore に追加します |
起動時に Claude Code は、作業ディレクトリとその上位のすべてのディレクトリにある CLAUDE.md を読み、上から順に連結します。そのため、起動した場所に最も近いファイルが最後に読まれます。サブディレクトリの CLAUDE.md は、Claude がそのサブディレクトリのファイルを読み書きするときに、あとから読み込まれます。
まず何をするか
プロジェクトで /init を実行します。Claude がコードベースを分析し、見つけたビルドコマンド、テスト手順、規約を CLAUDE.md にまとめます。すでにある場合は上書きせず、改善案を提案します。そのあとで、Claude が自分では見つけられなかったことを書き足してください。
何を書くか
あとで何度も説明し直すことになる内容を書く場所だと考えてください。次のようなときに 1 行追加します。
- Claude が同じ間違いを 2 回したとき
- コードレビューで、Claude が知っているべき規約を指摘されたとき
- 前回のセッションと同じ修正指示をまた入力したとき
- 新しく入ったチームメンバーにも同じ背景が必要なとき
毎セッション必要な事実だけにとどめます。複数手順の作業は、必要なときだけ読み込まれるスキルとして書き、コードベースの一部だけに関わるルールは .claude/rules に置きます。
効くルールの書き方
漠然とした願いではなく、確認できるルールを書きます。
| こう書くかわりに | こう書く |
|---|---|
| コードを適切に整形する | インデントは 2 スペースにする |
| 変更をテストする | コミットする前に npm test を実行する |
| ファイルを整理しておく | API ハンドラは src/api/handlers/ に置く |
- 短く。 CLAUDE.md は 1 ファイル 200 行以内にします。長いファイルはコンテキストを多く使い、守られにくくなります。
- 構造化する。 関連するルールは見出しの下にまとめ、密な段落ではなく箇条書きにします。
- 矛盾させない。 2 つのルールが食い違うと、Claude はどちらかを選ぶ可能性があります。古い項目は削除してください。Claude Code v2.1.283 以降では、
/doctor prompt-auditが古い項目、矛盾する項目、存在しないファイルへの参照を見つけます。 - 人間向けのメモは HTML コメントで。 CLAUDE.md 内の
<!-- note -->はコンテキストに届く前に取り除かれるため、トークンを消費しません。
短い例です。
# Project
## Commands
- Install: pnpm install (not npm)
- Test: pnpm test, must pass before committing
- Run locally: pnpm dev, port 3000
## Conventions
- TypeScript strict mode, no any
- API handlers in src/api/handlers/, one route per file
- Schema changes only through prisma migrate
ほかのファイルを取り込む
@path でほかのファイルを取り込めます。たとえば See @README and @docs/git-instructions.md のように書きます。相対パスはそれを含む CLAUDE.md を基準に解決され、取り込みは 4 階層までネストできます。バッククォートで囲んだ `@README` は取り込まれません。
取り込みはファイルを整理する手段であって、コンテキストのコストは減りません。取り込んだ内容も毎回読み込まれます。プロジェクトがそのディレクトリの外にあるファイルを初めて取り込むとき、Claude Code は承認を求めます。
.claude/rules で範囲ごとに分ける
大きなプロジェクトでは、指示を .claude/rules/ の下にトピックごとのファイルとして分けます。testing.md や api-design.md などです。paths のないルールは CLAUDE.md と同じく起動時に読み込まれ、paths のあるルールは、Claude が該当するファイルを扱うときだけ読み込まれます。
---
paths:
- "src/api/**/*.ts"
---
# API rules
- Validate every endpoint's input
- Return errors as ApiError
CLAUDE.md の中で複数手順の作業にふくらんだ部分は、使うときだけ読み込まれるスキルにできます。スキルのガイドを参照してください。
すでに AGENTS.md がある場合
Claude Code v2.1.277 以降では、Claude は AGENTS.md を直接読みます。CLAUDE.md がなければ AGENTS.md を読み、CLAUDE.md があればそちらだけを読みます。複数のコーディングツールで 1 つのファイルを共有するには、CLAUDE.md に @AGENTS.md の 1 行を追加してください。
コストとキャッシュ
- 毎ターン送信されます。 CLAUDE.md、自動メモリ、
pathsのないルールは、リクエストのたびに送られます。キャッシュにヒットすればキャッシュ読み取りの料金で済みますが、長いほど、ミスしたときの書き直しコストも増えます。短く保つ理由がもう 1 つあります。 - セッション中の編集はすぐには反映されません。 実行中のセッションは、
/clear、/compact、または再起動までは編集後の CLAUDE.md を見ません(Anthropic の Claude Code のキャッシュガイドを参照)。そのかわり、編集によってそのセッションのキャッシュが無効になることもありません。
ほかの節約方法はClaude Code の費用を抑えるにあります。
読み込まれたか確認する
/contextを実行し、Memory files の項目を見ます。そこにないファイルは Claude には見えていません。/memoryは各 CLAUDE.md の一覧表示、オープン、編集と、自動メモリの切り替えができます。
FAQ
CLAUDE.md はどのくらいの長さにすべきですか?
Anthropic は 1 ファイル 200 行以内を推奨しています。コードベースの一部にだけ関わるルールは paths 付きで .claude/rules/ に、複数手順の作業はスキルに移してください。
Claude が CLAUDE.md に従わないのはなぜですか?
たいていは、ルールが曖昧、ファイルが長い、ルール同士が矛盾している、またはセッション中の編集がまだ反映されていない、のいずれかです。/context でファイルが読み込まれているか確認し、ルールを具体的で確認できる形にして、強制したいことには hook を使ってください。
CLAUDE.md を編集したのに反映されないのはなぜですか?
実行中のセッションは読み直しません。/clear、/compact を実行するか、Claude Code を再起動してください。
CLAUDE.md と AGENTS.md を併用できますか?
CLAUDE.md があるときは、デフォルトでは CLAUDE.md だけが読まれます。CLAUDE.md に @AGENTS.md を追加すると、1 つの指示を共有できます。