CLAUDE.mdにプロジェクトの説明を書いていた時期があります。
技術スタック、ディレクトリ構成、使っているライブラリ。
丁寧に書いたのに、Claude Codeの出力は何も変わりませんでした。
この記事では、CLAUDE.mdの最初の1枚をテンプレート付きで書けるようにします。
READMEとの違い、最小構成の始め方、やりがちな失敗パターンまで、自分が数ヶ月運用してわかったことをまとめています。
Claude Codeの全体像を先に把握したい方は、Claude Code完全ガイドからどうぞ。
CLAUDE.mdとは何か — READMEとの決定的な違い

CLAUDE.mdとは、Claude Codeがセッション開始時に自動で読み込む指示ファイルです。
プロジェクトの「説明書」ではなく、AIに対する「行動ルール」を書く場所として機能します。
ここが最初にわかりにくいところでした。
READMEは人間向けです。
「このプロジェクトは何か」「どうセットアップするか」を説明するもの。
一方、CLAUDE.mdはAI向けのoperating manual。
「このプロジェクトで何をしてはいけないか」「どう振る舞うか」を指定するものです。
| README.md | CLAUDE.md | |
|---|---|---|
| 読む対象 | 人間(開発者) | AI(Claude Code) |
| 内容 | プロジェクトの説明 | AIの行動ルール |
| 目的 | 理解してもらう | 従ってもらう |
| 例 | 「React + TypeScriptで構築」 | 「テストは必ずvitest。jestは使わない」 |
CLAUDE.mdには配置できる場所が4段階あります。
- Managed policy(組織共通) — OS指定のパスに配置
(macOS: `/Library/Application Support/ClaudeCode/CLAUDE.md`、Linux: `/etc/claude-code/CLAUDE.md`) - Project(チーム共有) — プロジェクトルートの `./CLAUDE.md`
- User(個人全体) — `~/.claude/CLAUDE.md`
- Local(個人×プロジェクト) — `./CLAUDE.local.md`
より具体的なスコープの指定が優先されます。
最初に書くなら、プロジェクトルートの`CLAUDE.md`一択です。
ファイル名は大文字小文字を区別します。
`claude.md`や`Claude.md`ではダメで、必ず`CLAUDE.md`にしてください。
最初のCLAUDE.mdはこれだけ書けばいい【テンプレート】

自分が最初から書き直すなら、こう書きます。
# CLAUDE.md
## プロジェクト概要
- フロントエンド: Next.js 15 + TypeScript
- スタイル: Tailwind CSS
- テスト: vitest(jestは使わない)
## コマンド
- `npm run dev` — 開発サーバー起動
- `npm run test` — テスト実行
- `npm run build` — ビルド
## コードのルール
- 変数名・関数名はキャメルケース
- コンポーネントファイルは PascalCase.tsx
- console.logはPR前に必ず削除
- 日本語でコメントを書く
## やらないこと
- 既存のテストを削除しない
- パッケージの追加は提案のみ。自動でインストールしない
- .envファイルを変更しないこれで30行程度。公式ドキュメントでは200行以下が推奨されています。
コミュニティでは50〜100行が実用的とされていますが、最初は短いほうがいいです。
各セクションのポイントを補足します。
「プロジェクト概要」 — 技術スタックだけ。
READMEみたいにプロジェクトの目的や背景は不要です。Claudeがコードを読めばわかることは書きません。
「コマンド」 — ビルド、テスト、起動。Claudeが推測できないコマンドだけ書きます。
`npm install`は書かなくていいですが、`npm run test:e2e –filter=auth`みたいなプロジェクト固有のものは書く価値があります。
「コードのルール」 — Claudeが推測しづらい規約だけ。
「関数は短く書く」みたいな一般論は不要です。「このプロジェクトではこうする」という具体的なルールだけ書きます。
「やらないこと」 — 正直、ここが一番効きます。
Claudeは親切なので、テストを「整理」してくれたり、依存パッケージを勝手に追加したりする。
やらないことを書いておくと、余計な動きが目に見えて減ります。
判断基準はシンプルで、「この行を消したらClaudeが間違えるか?」。
答えがNoなら、その行は要りません。
書いてはいけないCLAUDE.md — 3つの失敗パターン

自分が通ってきた道と、よく見かけるパターンを3つ挙げます。
1. プロジェクト説明型(READMEのコピペ)
# プロジェクト概要
このプロジェクトは、ユーザーのタスク管理を効率化するための
Webアプリケーションです。React + TypeScript + Supabaseで構築されており、
リアルタイム同期機能を備えています...これ、自分が最初に書いたやつとほぼ同じです。
Claudeに「あなたは何のプロジェクトにいるか」を説明している。
でもClaude Codeはコードベースを直接読めるので、この説明は冗長です。
コンテキストを消費するだけで、出力は何も変わりません。
2. 網羅型(全部書こうとする)
## API設計ルール
- RESTful原則に従う
- HTTPステータスコードは適切に使い分ける
- エラーレスポンスは統一フォーマットにする
...(50行続く)
## テスト方針
- ユニットテストのカバレッジは80%以上
- 結合テストは主要フローをカバー
...(30行続く)書けば書くほどClaudeは従ってくれる——と思っていた時期がありました。
実際は逆です。
公式も「全部IMPORTANTにすると、何もIMPORTANTでなくなる」と言っています。
長くなるほど、本当に守ってほしいルールが埋もれます。
Claude Codeで失敗した5つのパターンと教訓でも書きましたが、CLAUDE.mdは「引き算」の設計です。
3. /init丸投げ型(自動生成のまま放置)
Claude Codeには`/init`コマンドがあって、コードベースを分析してCLAUDE.mdを自動生成してくれます。
便利ですが、そのまま使い続けるのはおすすめしません。
自動生成されたCLAUDE.mdは冗長になりがちです。
プロジェクトの構成を網羅的に記述してくれるぶん、「行動ルール」ではなく「プロジェクト説明」に寄ってしまう。
`/init`をたたき台にして、削ぎ落としていくのが現実的です。
行動ルール型に変えて何が変わったか

「プロジェクト説明型」から「行動ルール型」に書き換えたとき、目に見えて変わったことが2つあります。
毎回の説明が消えた。 以前は「テストはvitestで」「console.logは残さないで」と毎セッション言っていました。
CLAUDE.mdに書いてからは、言わなくてもそう動きます。
当たり前のことなんですが、これが地味に効く。
`/compact`しても消えない。
CLAUDE.mdはコンテキストが圧縮されてもディスクから再読み込みされます。
会話の中で伝えたルールは`/compact`で消えますが、CLAUDE.mdに書いたルールは消えません。
2時間を超えるような長いセッションで、この差は大きいです。
Claude Codeのcompact・clearの使い分けも参考にしてみてください。
正直な話、CLAUDE.mdを書いたからといってClaude Codeが魔法のように賢くなるわけではありません。
ただ、「毎回同じことを言わなくていい」というだけで、作業の体感はかなり変わります。
CLAUDE.mdを書いた後の次のステップ

CLAUDE.mdは書いて終わりではなく、使いながら育てていくものです。
ここから先の選択肢をいくつか紹介します。
育てる — CLAUDE.mdは最初の1枚がスタート地点です。
使っていく中で「またこの指示をした」と思ったら追記する。
`/insights`コマンドを使うと、過去のセッションから追記候補を提案してくれます。
詳しくはCLAUDE.mdは「育てる」もので書いています。
分割する — CLAUDE.mdが長くなってきたら、`.claude/rules/`ディレクトリでモジュール化できます。
`testing.md`や`api-design.md`のようにトピック別にファイルを分けると、コンテキストのノイズが減ります。
パス指定で特定のディレクトリでだけ読み込まれるルールも作れます。
肥大化の兆候と対策はCLAUDE.mdが肥大化する前に知りたかった3つのことにまとめています。
拡張する — CLAUDE.mdだけでは足りなくなったとき、サブエージェント、スキル、コマンドという選択肢があります。
CLAUDE.mdは「常に読み込まれるルール」、スキルは「必要なときだけ読み込まれる知識」。
この使い分けを知っておくと設計が楽になります。
CLAUDE.md・サブエージェント・スキル・コマンドの使い分けと、サブエージェントに何を任せて何を任せないかが参考になるはずです。
他のAIツールも使っている場合、AGENTS.mdという選択肢もあります。
AGENTS.mdはClaude Code、Cursor、GitHub Copilot、Gemini CLIなど複数のツールが読める共通フォーマットです。
ただしCLAUDE.md固有の機能(`@import`や`.claude/rules/`)は使えないので、Claude Code専用の設定はCLAUDE.mdに書くのが良いです。
MCPで外部ツールと連携する方向に進みたい方は、Claude MCPは結局何に使えるのかもどうぞ。
まとめ — CLAUDE.mdの最初の1枚を今すぐ書こう
- CLAUDE.mdはREADMEではなく、AIの行動ルールを書く場所です
- 最初は30行のテンプレートで十分。「やらないこと」が一番効きます
- 書いたら育てる。`/insights`で追記候補を見つけて、少しずつ磨いていく
次にやること——この記事のテンプレートをコピーして、自分のプロジェクトにCLAUDE.mdを1枚置いてみてください。
Claude Codeの環境を整えるなら、Claude Code × Cursor使い分けガイドやClaude Pro/Maxの選び方ガイドも参考になります。

