Claude Code ルール: CLAUDE.md の書き方とエージェントコーディングコンテキストの管理

Claude Code ルール: CLAUDE.md の書き方とエージェントコーディングコンテキストの管理

Claude Code ルールは CLAUDE.md ファイルに記述します。これはプロジェクトリポジトリ、ホームディレクトリ、または組織設定に配置するマークダウンファイルで、Claude がセッションの開始時に読み取ります。.claude/rules/ 内のパススコープルール、settings.json による権限設定、学習した好みを記憶する自動メモリと組み合わせることで、ルールシステムはコーディングエージェントの動作をあらゆるタスクにわたって正確かつ永続的に制御します。

Claude Code ルールとは?

Claude Code の各セッションは空のコンテキストウィンドウから始まります。ルールは、Claude に必要なコンテキストを事前に読み込むための方法であり、ゼロから始めたり、同じミスを繰り返したりするのを防ぎます。

これを処理する2つの補完的なシステムがあります。

CLAUDE.md ファイル は、あなたが作成するマークダウンファイルで、Claude が各セッションの開始時に読み取ります。常に適用すべき指示(ビルドコマンド、コード規約、アーキテクチャ上の決定、厳格な制約など)に使用します。

自動メモリ は、セッション中にあなたが与えた修正や好みに基づいて Claude 自身が書き込むメモです。これらは自動的に蓄積され、Claude は保存する価値があるものを判断し、将来のセッションでそれらのメモを読み戻します。

どちらもセッション開始時にコンテキストに読み込まれますが、強制される設定ではありません。Claude がコンテキストとして従う指示です。Claude の判断に関係なく特定のコマンドを確実にブロックするには、PreToolUse フックまたは settings.jsondeny ルールが必要です。この違いは、確率的な準拠ではなく予測可能な動作を求める自律実行において重要です。

CLAUDE.md ファイルの場所とスコープ

Claude Code は複数の場所から CLAUDE.md ファイルを読み込みます。各場所は異なるスコープをカバーします。広いものから具体的なものの順に読み込まれます。

場所 スコープ 用途
~/.claude/CLAUDE.md マシン上のすべてのプロジェクト 個人の好み、グローバルなワークフローの習慣
./CLAUDE.md(リポジトリルート) そのプロジェクト内のすべてのセッション プロジェクト規約、ビルドコマンド、チーム共有ルール
./CLAUDE.local.md(リポジトリルート) ローカルセッションのみ 開発者ごとの好み。.gitignore に追加
./src/CLAUDE.md(サブディレクトリ) そのディレクトリ内のファイルに触れるセッション プロジェクト全体には適用されないモジュール固有のルール

発見されたすべてのファイルは連結されてコンテキストに含まれます。互いに上書きはしません。この連結内では、ファイルシステムルートから作業ディレクトリまでのコンテンツが最も具体的なものが最後になるように並べられるため、プロジェクトの指示がユーザーの指示の後に表示されます。これにより、自然な具体性が生まれます。プロジェクトルールはユーザーレベルのルールと競合する場合に優先されます。

CLAUDE.md 内で @path 参照を使用して追加のファイルをインポートできます。

@./docs/architecture.md
@./CONTRIBUTING.md

インポートされたファイルは、CLAUDE.md 自体と同様にセッション開始時に読み込まれます。インポートは整理に便利ですが、コンテキストを節約するわけではありません。インポートされたコンテンツはトークン予算にカウントされます。

チーム向け:プロジェクトの CLAUDE.md をソース管理にコミットしてください。これにより、すべての開発者の Claude セッションと CI ベースのエージェント実行が同じ共有コンテキストで開始されます。.eslintrcpyproject.toml のように扱ってください。

CLAUDE.md に書くべき内容

最も有用な内容は、毎回のセッションで再説明しなければならないこと、または新しいチームメンバーが最初の1時間で知っておくべきことです。

適切な候補:

  • デフォルトと異なるビルドおよびテストコマンド(npm test ではなく ./scripts/test.sh --ci
  • リンターで捕捉されないコード規約(「共有ユーティリティではデフォルトエクスポート禁止。名前付きエクスポートをすべての場所で使用」)
  • コードを読んでも明らかではないアーキテクチャ上の決定(「lib/ ディレクトリはサービス間で共有されています。そこにサービス固有のロジックを追加しないでください」)
  • 既知の落とし穴(「config.ts ファイルはビルド時に生成されます。手動で編集しないでください」)
  • ワークフローの制約(「変更を加える前に必ずブランチを作成。PR を開く前にリモートにプッシュ」)

除外すべきもの:

  • ディレクトリ一覧やファイルツリー — Claude はリポジトリからこれらを読み取ります
  • 依存関係リスト — package.jsonpyproject.toml などから利用可能
  • 既存コードの動作の散文的な説明 — Claude はソースコードを直接読み取ります
  • 最近の変更点 — 履歴が必要な場合、Claude は git loggit diff を使用します

CLAUDE.md は、コードベースを読んでは導き出せない内容に焦点を当ててください。200行を超えるファイルはより多くのコンテキストを消費し、遵守の信頼性を低下させます。Claude Code の /doctor コマンドは、チェックインされた CLAUDE.md を監査し、コードから導出可能な内容の削除を提案します。肥大化したファイルをトリミングする便利な方法です。

効果的なルールの書き方

具体性が重要です。比較してみましょう。

# 曖昧 — 一貫性が低い
プロジェクトのコーディング標準に従うこと。

# 具体的 — 一貫性が高い
- pnpm を使用し、npm や yarn は使わない
- すべてのコミット前に pnpm test を実行。テストが失敗した場合はコミットしない
- すべての共有型は src/types/index.ts からエクスポート。コンポーネントファイル内で型をインライン定義しない
- テストでは data/ ディレクトリは読み取り専用。tests/fixtures/ からテストフィクスチャを使用する

すべてのルールは、追加の説明なしで実行可能であるべきです。ルールの理由を誰かに説明する必要がある場合は、その理由をインラインで追加してください。そうすることで、Claude がエッジケースでルールを正しく適用するのに役立ちます。

.claude/rules/ によるパススコープルール

.claude/rules/ ディレクトリを使用すると、すべてのセッションに読み込むことなく、特定のファイルパターンにルールを関連付けることができます。Claude は .claude/rules/ 内のファイルを検出し、一致するファイルを操作するときに読み込みます。

TypeScript モノレポの典型的な構造:

.claude/rules/
  api.md             # src/api/** のルール — リクエストバリデーション、エラーフォーマット
  components.md      # src/components/** のルール — プロップ型、スタイリング規約
  tests.md           # tests/** のルール — フィクスチャパターン、モック設定
  database.md        # migrations/ と models/ のルール — マイグレーション命名、クエリパターン

各ルールファイルは、いつ読み込むかを制御する paths フィールドを持つ YAML フロントマターを使用します。

---
paths:
  - "src/api/**/*.ts"
  - "src/api/**/*.test.ts"
---

# API 開発ルール

- すべてのルートハンドラは、ビジネスロジックの前に zod で入力を検証すること
- エラーは `{ error: string; code: string }` として返す — プレーンな文字列は不可
- レート制限はゲートウェイで適用される。ハンドラ内に追加しないこと

paths フィールドがないルールは、プロジェクトの CLAUDE.md の内容と同様に、セッション開始時に無条件に読み込まれます。paths があるルールは、Claude がそれらのパターンに一致するファイルを開いた場合にのみ読み込まれます。

これにより、プロジェクトルートの CLAUDE.md を簡潔に保ち、スタックの特定のレイヤーに関する詳細な規約が、異なる領域に焦点を当てたセッション中にコンテキストを埋めることを防ぎます。

settings.json と CLAUDE.md の違い

CLAUDE.md は Claude が 知り、実行しようとすること を制御します。settings.json は Claude が 実際に実行することを許可されること を制御します。

CLAUDE.md settings.json
目的 指示とコンテキスト 権限と設定
強制されるか? いいえ — Claude は指針として従う はい — deny ルールはツール呼び出しを無条件にブロック
形式 自由形式のマークダウン 構造化 JSON
配置場所 ./CLAUDE.md~/.claude/CLAUDE.md .claude/settings.json~/.claude/settings.json

.claude/settings.json にあるプロジェクトの settings.json

{
  "permissions": {
    "allow": [
      "Bash(pnpm test)",
      "Bash(pnpm build)",
      "Bash(git status)",
      "Bash(git diff *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)"
    ]
  }
}

allow リストは特定のコマンドを事前承認し、Claude がプロンプトなしで実行できるようにします。これにより、信頼できる操作についてインタラクティブセッションが高速化されます。deny リストはコマンドを無条件にブロックします。Claude が何を決定しようと、CLAUDE.md に何が書かれていようと関係ありません。本番データやインフラストラクチャに対する不可逆的な操作には deny を使用してください。

ユーザーレベルの設定は ~/.claude/settings.json にあり、すべてのプロジェクトに適用されます。プロジェクト設定は .claude/settings.json にあり、そのリポジトリ内でのみ適用されます。プロジェクト設定は重複する場合にユーザー設定より優先されます。

自動メモリ:Claude のメモ

自動メモリは CLAUDE.md の対応物です。CLAUDE.md があなたが書く指示であるのに対し、自動メモリはセッション中に学習した内容に基づいて Claude 自身が書き込むメモです。

セッション中に Claude を修正したとき(「このプロジェクトでは Jest ではなく Vitest を使用します」)、Claude はそれを ~/.claude/projects/<repo>/memory/ にメモとして保存できます。次のセッションで、Claude はそのメモを読み戻し、再度指示されることなく修正を適用します。

メモリディレクトリの内容:

~/.claude/projects/<repo>/memory/
  MEMORY.md          # Claude が他のファイルを見つけるために使用するインデックス。各セッションで最初の200行が読み込まれる
  debugging.md       # Claude がこのリポジトリの問題解決中に発見したパターン
  conventions.md     # Claude があなたの修正から学習した規約

これはマシンローカルかつリポジトリごとです。自動メモリは CLAUDE.md を補完するものであり、置き換えるものではありません。CLAUDE.md はチーム共有のプロジェクトルール用であり、自動メモリはあなたとの作業から Claude が学習した個人のパターン用です。

自動メモリは読み取り可能なマークダウンであり、いつでも編集または削除できます。セッション内で /memory を実行すると、ファイルを参照および編集できます。古くなったり間違っていたりするものがあれば削除してください。Claude はその古いルールの適用を停止します。

エージェントコーディングのベストプラクティス

Claude Code を自律的に実行する場合(claude -p、Agent SDK、CI パイプラインを通じて)、ルール設定の重要性が高まります。エージェントは一時停止することなく数十回のツール呼び出しを完了する可能性があり、実行中に誤解をインタラクティブに修正することはできません。

単なる好みではなく、明示的な制約を記述してください。 インタラクティブな Claude は明確化を求めることができます。自律実行はコンテキストにあるものを使って作業します。「マイグレーションファイルを変更する前に必ずデータベーススナップショットを作成すること」が重要なら、CLAUDE.md に記述する必要があります。Claude がコードベース構造から制約を推測すると想定しないでください。

元に戻すのが難しいものには deny ルールを使用してください。 Bash(pnpm build) を事前承認するとインタラクティブセッションが高速化され、リスクは低くなります。しかし、自律実行では、deny リストは本番インフラに触れたり、git 履歴に永続的にコミットしたり、データを削除したりする操作に対するセーフティネットです。

プロジェクトの CLAUDE.md をバージョン管理に含めてください。 リポジトリルートにコミットされた CLAUDE.md は、インタラクティブセッション、CI 実行、チームメンバーのローカルエージェントに一貫して適用されます。これはコードベースにとって「正しい」を定義するルールの適切な場所です。

ドメイン固有のコンテンツには .claude/rules/ を使用してください。 プロジェクトに明確なレイヤー(フロントエンドコンポーネント、バックエンド API、データベーススキーマ、インフラスクリプト)がある場合は、各レイヤーのルールをパススコープで .claude/rules/ に配置してください。すべてを1つの400行の CLAUDE.md に詰め込むと、Claude がナビゲートしにくくなり、セッションごとのコンテキストコストが増加します。

参考資料はスキルに移動してください。 スキル(.claude/skills/)はセッション開始時ではなく、オンデマンドで読み込まれます。長い API ドキュメント、複数ステップのデプロイ手順、トラブルシューティングのプレイブックは、/deploy/debug で呼び出すスキルに属します。無関係な場合でもコンテキストを消費する CLAUDE.md には記述しないでください。

自動メモリを定期的に確認してください。 自動メモリは時間とともに蓄積されます。ビルドコマンドが変更されたり、規約がリファクタリングされたり、テストパターンが変わったりします。「v1 API クライアントを使用」という古いメモリが、v2 に移行した後に残っていると、自律実行で微妙なバグを引き起こします。プロジェクト構造に大きな変更を加えたときは、~/.claude/projects/<repo>/memory/ を監査してください。

ルール設定とオープンソースモデルの使用

あなたが構築した CLAUDE.md コンテキストと .claude/rules/ は、どのモデルが推論を処理するかに関係なく同じように機能します。ルールが記述されれば、モデルバックエンドを切り替えてもすべてが維持されます。そして、Novita AI の LLM API を介したオープンソースモデルは、大量のエージェント作業に実用的な選択肢です。

設定は1つの環境変数です。

export ANTHROPIC_BASE_URL="https://api.novita.ai/anthropic"
export ANTHROPIC_AUTH_TOKEN="<your-novita-api-key>"
export ANTHROPIC_MODEL="qwen/qwen3-coder-480b-a35b-instruct"

ANTHROPIC_BASE_URL を Novita AI に向けると、Claude Code はすべての推論リクエストを api.anthropic.com の代わりに Novita の Anthropic 互換エンドポイントに送信します。CLAUDE.md、パススコープルール、settings.json はすべて以前とまったく同様に適用されます。ルールレイヤーはモデル選択よりも上流にあります。

Novita AI は、Qwen3-Coder、GLM-4.7、MiniMax M2.5、DeepSeek V4 など、コーディングに特化したオープンウェイトモデルをホストしています。これらのモデルはマルチステップのツール使用と関数呼び出しに最適化されており、Claude Code がファイル編集、シェルコマンド、リポジトリナビゲーションに内部的に使用するツール呼び出しパターンに適しています。

大規模なエージェントタスク(コードレビューパイプライン、大規模リポジトリの自動リファクタリング、テスト生成など)を実行するチームにとって、Novita 上のオープンウェイトモデルは通常、クローズドソースの代替品よりも100万トークンあたりのコストが大幅に低く、プロジェクトルールを効果的に読み取り適用します。

本番コードベースに対してエージェントを実行し、deny ルールを超える追加の安全性レイヤーが必要な場合は、Novita の LLM API を Novita の Agent Sandbox と組み合わせることを検討してください。サンドボックスはエージェントに完全な Linux 環境を提供し、ファイル操作とコマンド実行をホストシステムから隔離します。CLAUDE.md コンテキストはタスクとともに移動し、実行リスクは封じ込められたままです。

よくある質問

Claude Code における CLAUDE.md とは何ですか?

CLAUDE.md は、Claude Code にセッション間で持続的な指示を与えるマークダウンファイルです。セッション開始時に読み込まれるため、毎回プロジェクトの規約を再教育する必要がありません。CLAUDE.md ファイルは複数のスコープで設定できます。ユーザーレベル(~/.claude/CLAUDE.md)はどこでも適用される個人の好み、プロジェクトレベル(リポジトリルート)はバージョン管理にチェックインされたチーム共有ルール、サブディレクトリレベルはモジュール固有のルールです。

claude rules md ファイルには何を書くべきですか?

毎回のセッションで再説明しなければならないことを書きましょう。ビルドおよびテストコマンド、フレームワークのデフォルトと異なるコーディング規約、アーキテクチャ上の制約、既知のコードベースの落とし穴などです。コードベース自体から導出できる内容(ファイルツリー、依存関係リスト、既存コードの動作説明)は除外してください。ファイルは一貫した遵守のために200行未満に保ちます。

Claude Code における CLAUDE.md と settings.json の違いは何ですか?

CLAUDE.md は Claude が指針として従う指示です。settings.json は Claude Code がシステムレベルで強制する設定です。CLAUDE.md のルールは Claude が実行しようとすることを形作ります。settings.jsondeny エントリはツール呼び出しを無条件にブロックします。Claude の判断に関係なく絶対に起こってはいけないこと(不可逆的な削除、フォースプッシュ、本番環境操作)には、CLAUDE.md ではなく settings.json を使用してください。

.claude/rules/ ディレクトリとは何ですか?

.claude/rules/ には、Claude がルールのスコープに一致するファイルを操作している場合にのみ読み込まれる、パススコープのルールファイルが格納されます。これにより、詳細なドメイン固有のルールを記述しても、すべてのセッションに読み込むことを防げます。ルールファイルはマークダウンファイルで、オプションの YAML フロントマターで paths グロブパターンを指定できます。paths フロントマターがないルールは、追加の CLAUDE.md コンテンツと同様に、セッション開始時に無条件に読み込まれます。

CLAUDE.md は CI や自動化された claude code タスクでも機能しますか?

はい。リポジトリディレクトリで実行される claude -p 呼び出し、Agent SDK 呼び出し、CI パイプラインはすべてプロジェクトの CLAUDE.md を読み込みます。これにより、CLAUDE.md はインタラクティブなコンテキストと自動化されたコンテキストの両方で一貫した動作を強制するのに効果的です。バージョン管理にコミットすることで、ローカル実行と CI 実行の両方が同じ共有コンテキストで開始されます。

claude code のコンテキストはどのように機能し、どのように管理すればよいですか?

コンテキストは現在のセッションのトークン予算です。CLAUDE.md ファイル、インポートされた参照、自動メモリ、会話履歴がすべてカウントされます。CLAUDE.md を簡潔に保ち、.claude/rules/ を使用してドメインコンテンツを関連する場合のみ読み込み、/compact を使用して連続性を失わずに長いセッションを要約することで管理します。/compact 後、Claude はプロジェクトルートの CLAUDE.md をディスクから再読み込みし、自動的にセッションに再注入します。

チームでエージェントコーディングのための claude code のベストプラクティスを使用するにはどうすればよいですか?

プロジェクトの CLAUDE.md をリポジトリにコミットして、すべてのチームメンバーと CI エージェントが同じルールを共有するようにします。ドメイン固有のコンテンツにはパススコープで .claude/rules/ を使用します。自動化されたコンテキストでは決して実行すべきでない操作については、.claude/settings.jsondeny ルールを追加します。自動メモリは CI から除外します。これはマシンローカルかつ開発者ごとのものです。コミットされた CLAUDE.md が共有動作の信頼できる情報源です。

Novita AI は、開発者がシンプルな API を使用して AI モデルを簡単にデプロイできるようにするとともに、クラウド向けの手頃で信頼性の高い GPU を提供する AI クラウドプラットフォームです。

おすすめ記事


2026年7月21日時点で確認した情報源:Claude Code メモリドキュメントClaude Code 機能概要Novita AI LLM API