Claude Code CLAUDE.md の書き方|設計テンプレートと6つのコツ【2026年版】
Claude Code の CLAUDE.md を正しく書く方法を解説。グローバル・プロジェクト・ローカルの3層構造の使い分け、必須6セクション(概要・スタック・ルール・禁止操作・コマンド・エージェント設定)、Web開発・業務自動化・データ分析向けテンプレートをコピーして使える形で紹介します。
「Claude Code に同じことを毎回説明し直している」「プロジェクトのルールをプロンプトに書くのが面倒」——こうした悩みを解消するのが CLAUDE.md です。
CLAUDE.md を正しく書くと、Claude Code はセッションをまたいでプロジェクト固有のルールを記憶し、コーディングスタイル・禁止操作・よく使うコマンドを自動で参照します。一度書けば、以後同じ説明を繰り返す必要がなくなります。
本記事では、Claude Code 公式ドキュメント(code.claude.com) をベースに、CLAUDE.md の配置場所・必須セクション・ユースケース別テンプレートを体系的に解説します。「どこに何を書けばいいか」を具体的なテンプレートで示すため、読後すぐに自プロジェクトへ適用できます。
Claude Code の CLAUDE.md とは
CLAUDE.md は、Claude Code のセッション開始時に自動で読み込まれる Markdown 形式の設定ファイル です。ここに書いた内容は、毎回のプロンプトに暗黙的に追加されます。
Claude Code のセッションはリセットされるたびに記憶がゼロになります。CLAUDE.md はこの「記憶リセット」を乗り越えるための仕組みです。プロジェクトの技術スタック・コーディングルール・禁止操作を一度書いておけば、次回以降のセッションで最初から把握した状態でスタートできます。
Claude Code の全体的な仕組みや料金体系から確認したい方は、先に Claude Code 完全ガイド を参照してください。
CLAUDE.md が読み込まれる仕組み
Claude Code はセッション起動時に、作業ディレクトリから上位へ向かってディレクトリをさかのぼり、CLAUDE.md と CLAUDE.local.md を探して読み込みます。見つかったファイルは上書きではなくすべて連結されてコンテキストウィンドウに追加されます。
ファイルの読み込み順序は「ファイルシステムのルートに近い方が先」です。foo/bar/ で起動した場合、foo/CLAUDE.md が先に読み込まれ、foo/bar/CLAUDE.md が後から追加されます。サブディレクトリの CLAUDE.md は起動時ではなく、Claude がそのディレクトリのファイルを読み込んだタイミングで動的にロードされます。
CLAUDE.md がないとどうなるか
CLAUDE.md なしでも Claude Code は動作します。ただし、以下のコストが毎セッション発生します。
- 技術スタック(使用言語・フレームワーク・バージョン)の説明
- コーディングルール(命名規則・関数の行数制限)の説明
- 禁止操作(
git push --force禁止など)の再確認 - プロジェクト固有のディレクトリ構造の説明
これらを毎回プロンプトに含めると、コンテキストを無駄に消費するうえに説明漏れも発生します。CLAUDE.md は「Claude Code への引き継ぎドキュメント」として機能します。
CLAUDE.md の配置場所と4種類の使い分け
CLAUDE.md には配置場所が複数あり、それぞれスコープが異なります。公式ドキュメント が示す4種類を整理します。
| 種類 | パス | スコープ | 主な用途 |
|---|---|---|---|
| Managed(組織共通) | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md | 同マシンの全ユーザー | 会社全体のセキュリティポリシー・コーディング規約 |
| User(個人設定) | ~/.claude/CLAUDE.md | 自分の全プロジェクト | 個人的な言語設定・スタイル好み |
| Project(プロジェクト) | ./CLAUDE.md または ./.claude/CLAUDE.md | そのリポジトリ全体 | 技術スタック・アーキテクチャ・チームルール |
| Local(個人×プロジェクト) | ./CLAUDE.local.md | 自分のみ(.gitignore 推奨) | ローカル環境の URL・テストデータ |
個人開発者は User + Project の2層構成が最もシンプルです。User に「いつも自分が使うルール」、Project に「このリポジトリ固有のルール」を書き分けます。
グローバル(User)CLAUDE.md に書くべき内容
~/.claude/CLAUDE.md はすべてのプロジェクトに適用されるため、個人の作業スタイルを書きます。プロジェクト固有の情報を混入させると、他プロジェクトで意図しない動作が起きるため注意してください。
典型的な記述例は「コメントは日本語で書く」「関数は50行以内に収める」「コミット前に必ずテストを実行する」といった、どのプロジェクトでも適用したい個人ルールです。
プロジェクト CLAUDE.md に書くべき内容
./CLAUDE.md(または ./.claude/CLAUDE.md)はチームで共有するため、プロジェクト固有の情報を中心に書きます。git でバージョン管理されるため、チームメンバー全員が同じルールで Claude Code を使える状態になります。
プロジェクト CLAUDE.md は特に「新しいチームメンバーが生産性を出すために必要な文脈」を書く場所と考えると整理しやすいです。
CLAUDE.md に書くべき6つのセクション
公式ドキュメントと実運用の両面から、効果が高い6セクションを解説します。以下のテンプレートはコピーして使えます。
1. プロジェクト概要(Project Overview)
最初のセクションで「このリポジトリが何のためにあるか」を 3〜5 行で説明します。Claude Code がコードを変更する際の判断基準になります。
# Project Overview
このリポジトリは〇〇株式会社の社内経費精算システム(Next.js 15 + Supabase)です。
主な機能:申請フォーム / 承認ワークフロー / CSV 出力 / Slack 通知
本番環境:https://expenses.example.com
開発担当:エンジニア X 名(実際の人数に書き換える)
2. 技術スタック(Tech Stack)
フレームワーク・言語・バージョンを明記します。Claude Code はここを参照してライブラリの使い方・APIの正確な記述を判断します。バージョンを省略すると古いAPIを使った提案が返ってくることがあるため、記載することを推奨します。
# Tech Stack
- TypeScript 5.x(strict モード、`any` 禁止)
- Next.js 15(App Router、`use client` は最小限に)
- Supabase(PostgreSQL 15 + Auth + Storage + RLS)
- Tailwind CSS 4 + shadcn/ui
- Vitest(テストフレームワーク)
- pnpm(npm / yarn 禁止)
3. コーディングルール(Coding Rules)
命名規則・ファイル構成・関数の長さ制限など、チームで統一したいルールを書きます。「何をしてはいけないか」まで明記するのがポイントです。
# Coding Rules
- 関数は 50 行以内。超える場合は分割する
- ファイルは 400 行以内(最大 800 行)
- コメントは日本語で記述
- `console.log` を残したままコミットしない
- mutable な状態変更を避け、不変パターンを使う
- `interface` を優先し `type` は交差型・ユニオン型のみ使う
- コンポーネントはデフォルトエクスポート禁止(named export のみ)
4. 禁止操作(Forbidden Operations)
Claude Code が実行してはいけない操作を明示します。特に本番環境への影響・取り消し不能な操作は必ず記載してください。CLAUDE.md は強制力ではなくガイダンスのため、物理的な強制が必要な場合は Claude Code Hooks と組み合わせることを推奨します。
# Forbidden Operations
- `git push --force` は実行禁止
- `rm -rf` は使用禁止(代わりに具体的なパスを指定する)
- 本番 DB への直接 SQL 実行は確認なしに行わない
- 環境変数を `.env` に直接書かない(.env.local を使う)
- `main` ブランチへの直接 commit 禁止(feature ブランチ経由)
5. よく使うコマンド(Common Commands)
開発・テスト・デプロイでよく使うコマンドを記載します。これにより Claude Code は正確なコマンドを提案でき、「このプロジェクトは npm ではなく pnpm を使う」「テストは vitest run で実行する」といった情報を毎回教える必要がなくなります。
# Common Commands
## 開発起動
pnpm dev # ローカル開発サーバー(localhost:3000)
pnpm dev --turbo # Turbopack モード
## テスト
pnpm test # Vitest(ウォッチモード)
pnpm test:run # Vitest(1回実行)
pnpm test:coverage # カバレッジ計測
## ビルド・型チェック
pnpm build # 本番ビルド
pnpm typecheck # tsc --noEmit
pnpm lint # ESLint
## DB
pnpm supabase:gen # 型生成(supabase gen types)
6. エージェント設定(Agent Configuration)
Claude Code をエージェントとして自律実行させる場合の指示を書きます。「確認なしに進めていいこと」「必ず確認すること」の境界を明示することで、過剰な確認と危険な自律実行の両方を防げます。
# Agent Configuration
## 確認なしで実行していいこと
- ファイルの読み取り・検索
- テストの実行
- 型チェック・lint の実行
- ローカル開発サーバーの起動・停止
## 必ず確認してから実行すること
- git push(リモートへの送信)
- DB の INSERT / UPDATE / DELETE
- 外部 API への書き込み系リクエスト
- 本番環境に関わる操作
## 作業ログ
重要な判断・変更は memory/SESSION_LOG.md に記録すること。
ユースケース別 CLAUDE.md テンプレート
用途に合わせた3パターンのテンプレートを示します。コピーして使い、プロジェクト固有の値に書き換えてください。
Web 開発(Next.js + TypeScript)向けテンプレート
# Project Overview
〇〇サービスの Web フロントエンド。Next.js 15 App Router で構築。
Supabase を BaaS として使用。ユーザー認証・DB・Storage はすべて Supabase 経由。
# Tech Stack
- TypeScript 5.x strict
- Next.js 15 App Router
- Supabase(PostgreSQL + Auth + Storage + RLS)
- Tailwind CSS 4 + shadcn/ui
- pnpm
# Coding Rules
- any 禁止
- 関数 50 行以内、ファイル 800 行以内
- Server Component 優先。`use client` は最小限
- 環境変数は .env.local(公開可なら NEXT_PUBLIC_ プレフィックス)
# Forbidden Operations
- git push --force 禁止
- 本番 DB への直接操作禁止
- main ブランチへの直接 commit 禁止
# Common Commands
pnpm dev / pnpm build / pnpm test:run / pnpm typecheck
非エンジニアの業務自動化向けテンプレート
Claude Code を使って Excel・メール・書類作成を自動化するケースでは、技術スタックより「何を自動化したいか」「どんなファイルを扱うか」を明記することが優先です。
# Project Overview
月次レポート作成・請求書処理・議事録作成を Claude Code で自動化する。
対象ファイル:Excel (.xlsx) / PDF / Markdown
# Working Directory
~/Documents/monthly-reports/ # レポート保管場所
~/Documents/invoices/ # 請求書保管場所
# Rules
- ファイルを削除する前に確認する
- 元のファイルはバックアップしてから変更する
- 処理結果は同じフォルダに _processed サフィックスで保存する
- Python は使用しない(Node.js スクリプトのみ)
# Forbidden Operations
- 重要ファイルの削除は確認なしに行わない
- 外部サービスへのファイル送信は確認してから行う
Python / データ分析向けテンプレート
# Project Overview
売上データ分析・可視化パイプライン。pandas + matplotlib + scikit-learn を使用。
データソース:BigQuery(read-only)/ S3(生データ)
# Tech Stack
- Python 3.12
- pandas 2.x / numpy / matplotlib / scikit-learn
- uv(パッケージ管理。pip は使用禁止)
- Jupyter Notebook(探索用)/ .py スクリプト(本番用)
# Coding Rules
- 型アノテーション必須
- データフレームの変更は必ずコピーを作成(inplace=True 禁止)
- 乱数シードは 42 で固定(再現性確保)
# Data Rules
- 個人情報を含む列は分析前に匿名化する
- 生データは data/raw/ から変更しない(read-only 扱い)
- 中間データは data/processed/ に保存する
# Common Commands
uv run python script.py
uv run jupyter lab
uv run pytest tests/
効果的な CLAUDE.md を書く4つのコツ
CLAUDE.md の書き方次第で、Claude Code の従順さが大きく変わります。公式ドキュメントが示すベストプラクティスに基づいた4つのコツを解説します。
1ファイル200行以内に収める
CLAUDE.md はコンテキストウィンドウに読み込まれるため、長くなるほどトークンを消費し、指示への従順さが下がります。1 ファイルは 200 行以内を目安にしてください。
情報量が増えた場合は .claude/rules/ ディレクトリに分割するのが有効です。ファイルタイプや対象ディレクトリに応じて paths フロントマターを設定すると、必要な場面でのみ読み込まれます。
---
paths:
- "src/api/**/*.ts"
---
# API 開発ルール
- 全エンドポイントに入力バリデーションを実装する
- エラーは標準形式 { error: string; code: string } で返す
具体的な表現で書く
「コードを適切にフォーマットする」より「2スペースインデントを使う」の方が Claude Code は正確に従います。曖昧な表現は「Claude 側の解釈」に委ねることになり、意図しない動作の原因になります。
| 避けるべき表現 | 具体的な表現 |
|---|---|
| コードを整理する | 関数は 50 行以内に収め、200 行を超えるファイルは分割する |
| テストを書く | コミット前に pnpm test:run を実行してパスを確認する |
| ファイルを整理する | API ハンドラーは src/api/handlers/ に配置する |
矛盾する指示を排除する
複数の CLAUDE.md ファイル(グローバル・プロジェクト・サブディレクトリ)に矛盾する指示があると、Claude Code はどちらかを任意に選択します。定期的に全ファイルを確認し、内容の重複・矛盾を取り除いてください。
/memory コマンドを実行すると、現在のセッションで読み込まれている全 CLAUDE.md の一覧が表示されます。複数ファイルが意図通りに連携しているか確認できます。
グローバルとプロジェクトを混在させない
よくある失敗は「プロジェクト固有の情報をグローバル(~/.claude/CLAUDE.md)に書いてしまう」ことです。グローバルは他のすべてのプロジェクトにも適用されるため、不要な情報がコンテキストを汚染します。
グローバルには「どのプロジェクトでも自分が守りたいルール」だけを書き、プロジェクト固有の情報はプロジェクト CLAUDE.md に書く、という原則を守ってください。
CLAUDE.md の動作確認方法
書いた CLAUDE.md が正しく機能しているかを確認する方法を説明します。
/memory コマンドで読み込み確認
Claude Code セッション内で /memory を実行すると、現在読み込まれている全メモリファイルの一覧が表示されます。
/memory
CLAUDE.md が一覧に表示されない場合は、ファイルの配置場所が間違っているか、パスに誤りがある可能性があります。配置場所の一覧と照合して確認してください。
テストプロンプトで動作確認
CLAUDE.md を書いたら、実際に意図通りに動作するかをテストします。たとえばコーディングルールを設定した場合は、「サンプル関数を書いて」と依頼し、ルール通りの実装が返ってくるか確認します。
Claude Code がルールに従わない場合、以下の点を確認してください。
- 指示の表現が曖昧すぎないか(具体的な表現に書き直す)
- 複数ファイルに矛盾する指示がないか(
/memoryで全ファイルを確認) - ファイルが 200 行を超えていないか(超えている場合は
.claude/rules/に分割) - 強制力が必要な場合は Claude Code Hooks の使用を検討する
CLAUDE.md はあくまで Claude Code への「ガイダンス」であり、強制的な制御は行いません。「実行を物理的に防ぎたい操作」には PreToolUse Hook を設定するのが確実です。
よくある質問
claude code claude.md 書き方 に関する質問は以下の3つです。
- CLAUDE.md と .claude/settings.json の違いは何ですか
- CLAUDE.md を自動で生成する方法はありますか
- サブディレクトリごとに別の CLAUDE.md を設定できますか
質問に対する回答を確認して、CLAUDE.md 設計の参考にしてください。
CLAUDE.md と .claude/settings.json の違いは何ですか
CLAUDE.md は Claude Code の 行動ガイダンス(どう動いてほしいか)を書く場所です。.claude/settings.json は 技術的な設定(使用できるツール・コスト上限・アクセス権限)を書く場所です。
「コメントは日本語で書く」「関数は 50 行以内」といったルールは CLAUDE.md に書きます。「特定のコマンドを禁止する」「コスト上限を設定する」といった強制的な制御は settings.json に書きます。詳細は Claude Code ベストプラクティス15選 も参照してください。
CLAUDE.md を自動で生成する方法はありますか
Claude Code のセッション内で /init を実行すると、現在のリポジトリを解析して CLAUDE.md の雛形を自動生成します。ビルドコマンド・テスト手順・プロジェクトの規約を自動検出して記述してくれます。既に CLAUDE.md が存在する場合は上書きせず、改善提案を返します。
環境変数 CLAUDE_CODE_NEW_INIT=1 を設定すると、対話形式で CLAUDE.md・Skills・Hooks を段階的に設定できるインタラクティブモードが使えます。
サブディレクトリごとに別の CLAUDE.md を設定できますか
できます。src/api/CLAUDE.md のようにサブディレクトリに配置すると、Claude Code がそのディレクトリのファイルを読み込んだタイミングで動的にロードされます。モノレポやマイクロサービス構成で、各パッケージ固有の設定を分けて管理したい場合に有効です。
より細かく「特定のファイル種別にだけ適用するルール」を設定したい場合は、.claude/rules/ ディレクトリに paths フロントマターを持つファイルを置く方法が適しています。
まとめ
Claude Code の CLAUDE.md は、セッションをまたいだ記憶を持つための仕組みです。
配置場所は User(個人全プロジェクト)/ Project(チーム共有)/ Local(個人×プロジェクト) の3層が基本です。書くべき内容は「プロジェクト概要・技術スタック・コーディングルール・禁止操作・よく使うコマンド・エージェント設定」の6セクション。効果を高めるには「1ファイル200行以内・具体的な表現・矛盾なし」の3点を守ります。
まず /init で雛形を自動生成し、本記事のテンプレートを参考に肉付けするのが最も速いアプローチです。一度整備すれば、Claude Code に同じことを説明し直す時間がゼロになり、作業の質と速度が一段上がります。
Claude Code をさらに使いこなしたい方は、無料ニュースレター に登録してください。実運用で見つけたテンプレートや設定例を週1回お届けします。
関連記事
- Claude Code Skills 完全ガイド — CLAUDE.md と連動する Skills の設計
- Claude Code Hooks 完全ガイド — CLAUDE.md で定義するHooksの実装方法
- Claude Code ベストプラクティス15選 — CLAUDE.md 最適化を含む全手法
- Claude Code Skills × Subagents × Hooks 使い分け完全マップ — 設定ファイルの全体設計
- Claude Code でやってはいけない 7 つ — CLAUDE.md で防ぐ失敗パターン
- Claude Code 完全ガイド — CLAUDE.md 以外の全機能を網羅したピラー記事
この記事の著者
claude-code-media 編集部/ Claude Code 専門編集チーム
Claude Code の非エンジニア向け業務効率化メディア『claude-code-lab.jp』を運営。フリーランス・中小企業・個人開発者向けに、実装テンプレ・業務自動化テクニック・Vibe Coding 入門を配信。
