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/ のルール — マイグレーション命名、クエリパターン

各ルールファイルはYAMLフロントマターで paths フィールドを使用し、読み込みタイミングを制御します。

---
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

プロジェクトの settings.json.claude/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)はそのリポジトリ内でのみ有効です。プロジェクト設定は重複する場合にユーザー設定より優先されます。

チームがMCPツールのパッケージングリファレンスも必要な場合は、これらのガードレールを Claude Codeプラグインドキュメントガイド と組み合わせてください。MCPプラグインがルール、フック、スタンドアロン設定とどのように関係するかが説明されています。

オートメモリー:Claudeのメモ

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

セッション中にClaudeを訂正すると(「このプロジェクトではJestではなくVitestを使用します」)、それを ~/.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/ に配置してください。すべてを詰め込んだ400行のCLAUDE.mdは、Claudeがナビゲートしにくく、セッションごとにより多くのコンテキストを消費します。

リファレンス資料はスキルに移動してください。 スキル(.claude/skills/)はセッション開始時ではなく、オンデマンドで読み込まれます。長いAPIドキュメント、複数ステップのデプロイ手順、トラブルシューティングプレイブックは、/デプロイ/デバッグ で呼び出すスキルに属し、無関係な場合でもコンテキストを消費する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のエージェントサンドボックス と組み合わせることを検討してください。サンドボックスはエージェントにファイル操作とコマンド実行のための完全なLinux環境を提供し、ホストシステムから隔離されます。CLAUDE.mdコンテキストはタスクとともに移動し、実行リスクはコンテナ内に留まります。

FAQ

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.jsonの deny エントリはツール呼び出しを無条件にブロックします。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モデルを簡単にデプロイできるAIクラウドプラットフォームであり、手頃で信頼性の高いGPUクラウドを構築とスケーリングのために提供しています。

おすすめ記事


出典:2026年7月21日確認: Claude CodeメモリドキュメントClaude Code機能概要Novita AI LLM API