CLAUDE.md の書き方:ユーザー・プロジェクト・ディレクトリの 3 階層と実例テンプレート

Claude Code 公開:

Claude Code が読み込む CLAUDE.md の配置場所と優先順位、書くべき内容と書かない方がよい内容、そのまま使えるテンプレートを公式ドキュメントに基づいて解説します。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. CLAUDE.md の 3 階層
  2. 最初の 1 枚は /init で作る
  3. 書くべき内容
    1. よく使うコマンド
    2. 守ってほしい規約
    3. 触ってはいけない場所
    4. 作業の進め方
  4. 書かない方がよい内容
  5. テンプレート(小〜中規模の Web プロジェクト向け)
  6. 育て方:セッション中に追記する
  7. まとめ

Claude Code に同じ説明を毎回繰り返している、指示したはずのコーディング規約が守られない。こうした悩みの多くは CLAUDE.md を整えることで解決します。

CLAUDE.md は、Claude Code がセッション開始時に自動で読み込む Markdown ファイルです。この記事では、どこに何を書くべきかを 3 つの階層に分けて整理し、そのまま使えるテンプレートを示します。

KEY POINT

この記事で分かること

  • CLAUDE.md を置ける場所と、それぞれの読み込みタイミング
  • 書くべき内容と、書いても効果が薄い内容の見分け方
  • 小〜中規模プロジェクト向けのテンプレート

CLAUDE.md の 3 階層

階層パス用途Git 管理
ユーザー~/.claude/CLAUDE.md全プロジェクト共通の好み(言語、口調、よく使うコマンド)しない
プロジェクト./CLAUDE.md または ./.claude/CLAUDE.mdチームで共有する規約、ビルド手順、構成する
個人(プロジェクト内)./CLAUDE.local.md自分だけのメモ、ローカル環境固有の情報しない(.gitignore に追加)

これに加えて、サブディレクトリの CLAUDE.md も使えます。たとえば packages/api/CLAUDE.md に置いた内容は、Claude がそのディレクトリ内のファイルを扱うときに読み込まれます。モノレポでは、ルートに全体方針、各パッケージに固有ルールを置く構成が扱いやすいです。

読み込まれた内容は /memory コマンドで確認できます。どのファイルが効いているか分からないときは、まずここを見ます。

最初の 1 枚は /init で作る

リポジトリのルートで /init を実行すると、Claude がプロジェクトを調べて CLAUDE.md の雛形を生成します。生成物はそのまま使わず、次の観点で削ってください。

  • README を読めば分かる内容(プロジェクトの目的の長い説明)は削る
  • Claude が自分でファイルを見れば分かること(ディレクトリ一覧)は削る
  • 残すのは「見ただけでは分からない約束事」

用語解説

インポート記法: @docs/coding-style.md のように @ に続けてパスを書くと、そのファイルの内容が CLAUDE.md に取り込まれます。長い規約を別ファイルに分けたいときに使います。

書くべき内容

よく使うコマンド

Claude が推測で間違ったコマンドを実行するのを防ぎます。

## コマンド
- テスト: `npm test`(単体)/ `npm run test:e2e`(E2E、Docker 起動が必要)
- Lint: `npm run lint` — コミット前に必ず通す
- ビルド: `npm run build`
- DB マイグレーション: `npm run db:migrate`

守ってほしい規約

「なぜ」を一言添えると、Claude が判断に迷う場面で規約の意図に沿って動きやすくなります。

## 規約
- 新しい関数には必ず JSDoc を書く(型定義から API ドキュメントを生成しているため)
- `any` は使わない。型が分からない場合は `unknown` にして絞り込む
- 日付は `date-fns` を使う。`moment` は追加しない(バンドルサイズの理由)

触ってはいけない場所

## 変更禁止
- `src/generated/` 配下(コード生成物。元は `schema/` を編集する)
- `migrations/` の既存ファイル(新規ファイルを追加する)

作業の進め方

## 作業の進め方
- 3 ファイル以上を変更するときは、先に変更方針を箇条書きで提示してから着手する
- テストが落ちたまま「完了」と報告しない
- コミットは 1 つの論理的変更ごとに分ける

書かない方がよい内容

内容理由
ファイル一覧やディレクトリ構成の丸写しClaude は必要なときに自分で探索する。更新漏れで嘘になりやすい
一般的なベストプラクティス(「読みやすいコードを書く」)具体的でない指示は行動に反映されにくい
秘密情報・URL・認証情報CLAUDE.md は Git に入る。個人情報は CLAUDE.local.md にも書かず環境変数にする
長大な仕様書毎セッションのコンテキストを消費する。必要な部分だけ @ でインポートする

CLAUDE.md は毎回コンテキストを消費する

CLAUDE.md の内容はセッションのたびに読み込まれ、トークンを消費します。目安として、プロジェクトの CLAUDE.md は 100〜200 行に収めると、指示の効き目と消費のバランスが取れます。コンテキストの節約については Claude Code のコンテキスト管理 も参照してください。

テンプレート(小〜中規模の Web プロジェクト向け)

# プロジェクト概要
Next.js + TypeScript の管理画面。API は `apps/api`(NestJS)。

## コマンド
- 開発サーバー: `pnpm dev`
- テスト: `pnpm test`(変更したファイルに関連するテストは必ず実行する)
- Lint / Format: `pnpm lint && pnpm format`
- 型チェック: `pnpm typecheck`

## 規約
- コンポーネントは関数コンポーネント + hooks。クラスコンポーネントは追加しない
- スタイルは Tailwind。CSS Modules は既存分のみ保守する
- API のレスポンス型は `packages/types` に置き、フロントとバックで共有する
- エラーは握りつぶさず、`AppError` を throw する

## 変更禁止
- `packages/types/generated/`(OpenAPI から生成)
- `.github/workflows/`(変更が必要なら提案だけする)

## 作業の進め方
- 変更前に関連するテストを読む
- 3 ファイル以上の変更は、方針を先に提示する
- 完了報告には実行したテストコマンドと結果を含める

## 参照
@docs/architecture.md

育て方:セッション中に追記する

会話の途中で # から始まる行を入力すると、その内容を CLAUDE.md に追記するよう Claude に指示できます。「今後は〇〇して」と口頭で伝えるだけでは次のセッションに残らないため、繰り返し伝えていることは # で書き込む習慣をつけると、CLAUDE.md が自然に育っていきます。

同じ考え方で AGENTS.md(Codex)や GEMINI.md(Gemini CLI)を使う場合は、CLAUDE.md・AGENTS.md・GEMINI.md の違いと共通化テクニック を参照してください。

まとめ

  • CLAUDE.md はユーザー・プロジェクト・個人の 3 階層に分けて置き、/memory で読み込み状況を確認する
  • 書くのは「見ただけでは分からない約束事」。コマンド、規約、変更禁止、進め方の 4 種類が中心
  • ディレクトリ一覧や一般論は書かない。長い文書は @ でインポートする
  • # で会話中に追記して育てる

よくある質問

CLAUDE.md はどこに置けばよいですか?
全プロジェクト共通のルールは ~/.claude/CLAUDE.md、プロジェクト共通はリポジトリ直下の CLAUDE.md、個人用は CLAUDE.local.md に置きます。
CLAUDE.md が長くなりすぎた場合はどうすればよいですか?
@docs/architecture.md のようなインポート記法で別ファイルに分割できます。また、サブディレクトリに置いた CLAUDE.md はそのディレクトリを扱うときだけ読み込まれます。
CLAUDE.md と .cursorrules や AGENTS.md は同じものですか?
役割は同じ「エージェントへの前提説明」ですが、読み込む製品が異なります。共通化の方法は別記事で解説しています。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。