.claude/rulesの基本知識とその使い方【Claude Code完全ガイド】

AI

Claude Code(Anthropic製のCLIコーディングツール)を使いこなすうえで、.claude/rules ディレクトリの活用は非常に重要です。プロジェクトが大きくなるにつれ、CLAUDE.mdに書ける指示の量には限界が生じますが、rulesディレクトリを使うことでルールをテーマ別に分割・管理できます。

本記事では、Claude Codeの.claude/rulesディレクトリとは何か、CLAUDE.mdとの関係、ファイルの設定方法、パス限定ルールの活用方法までを体系的に解説します。Claude Codeを使い始めたばかりの方から、より効率的な設定を目指している方まで参考にしていただける内容です。


.claude/ ディレクトリとは

.claude/ディレクトリの全体構造を示す図解

Claude Codeは、プロジェクトルートに存在する .claude/ ディレクトリを自動的に認識し、その中にあるファイルを元に動作します。このディレクトリには以下のファイルやフォルダが格納されます。

ファイル/フォルダ役割git管理
CLAUDE.mdプロジェクト全体に適用される主要な指示ファイル推奨
settings.jsonツールの実行権限・環境変数などの設定推奨(チーム共有)
settings.local.json個人用の設定・実験的なオプション非推奨(.gitignoreへ)
rules/テーマ別のルールファイルを格納するディレクトリ推奨

これらのファイルはClaude Codeが起動する際に自動で読み込まれ、AIへの指示や制約として機能します。特に CLAUDE.mdrules/ ディレクトリは、AIの振る舞いを細かくカスタマイズするための核心的な要素です。


CLAUDE.md と .claude/rules/ の関係

CLAUDE.mdと.claude/rules/の読み込み優先度を示す図解

Claude Codeが読み込むメモリファイルには、グローバルなものからプロジェクト固有のものまで複数の階層があります。読み込まれる順序と優先度は以下のとおりです。

  1. ~/.claude/CLAUDE.md:ホームディレクトリに置くグローバル設定。すべてのプロジェクトに適用される
  2. .claude/CLAUDE.md(または CLAUDE.md):プロジェクト固有のメイン指示ファイル
  3. .claude/rules/*.md:テーマ別に分割されたルールファイル群。起動時に一括ロードされる
  4. ~/.claude/rules/*.md:ホームディレクトリ配下の個人用ルール

CLAUDE.md は「常に適用されるメインの指示書」であるのに対し、.claude/rules/ は CLAUDE.md の補完・分割管理ツールという位置づけです。プロジェクトの規模が大きくなりCLAUDE.mdが肥大化してきたタイミングで、rules/ による分割管理に移行するのがよいでしょう。

CLAUDE.md は ./CLAUDE.md./.claude/CLAUDE.md のどちらに置いても同じように機能します。Claude Codeはカレントディレクトリからルートに向けて再帰的にCLAUDE.mdを探して読み込みます。


.claude/rules/ の基本的な使い方

rules/ ディレクトリを使い始めるのは非常にシンプルです。まずディレクトリを作成し、その中にMarkdownファイルを配置するだけです。

# rulesディレクトリを作成
mkdir -p .claude/rules

# テーマ別にルールファイルを作成
touch .claude/rules/code-style.md
touch .claude/rules/testing.md
touch .claude/rules/security.md

各ファイルには、そのテーマに関連するルールを自由に記述します。例えば code-style.md であれば以下のように書きます。

# コーディングスタイルルール

## 命名規則
- 変数名はキャメルケース(camelCase)を使用する
- 定数はすべて大文字のスネークケース(UPPER_SNAKE_CASE)
- クラス名はパスカルケース(PascalCase)

## インデント
- スペース2つでインデントする
- タブ文字は使用しない

## コメント
- 日本語でコメントを記述する
- 関数の目的・引数・戻り値を明示する

このように記述されたファイルは、Claude Codeが起動したときに自動で読み込まれ、セッション全体を通じてルールが適用されます。ファイルは 再帰的にスキャンされるため、サブディレクトリを使った整理も可能です。

# サブディレクトリによる整理例
.claude/rules/
├── frontend/
│   ├── components.md
│   └── styling.md
├── backend/
│   ├── api.md
│   └── database.md
└── shared/
    └── naming.md


パス限定ルール(path-scoped rules)の活用

パス限定ルール(path-scoped rules)の動作フローを示す図解

パス限定ルールは、rules/ ディレクトリの最も強力な機能のひとつです。YAMLフロントマターに paths(または globs)を指定することで、特定のファイルパターンに一致するファイルを編集しているときだけそのルールをロードできます。

これにより、コンテキストウィンドウの無駄遣いを防ぎ、AIが常に関連するルールに集中できる環境を作れます。

---
paths:
  - "src/api/**/*.ts"
---
# API開発ルール

## バリデーション
- すべての入力値はzodスキーマでバリデーションを行う
- 400エラーには必ず詳細なエラーメッセージを含める

## レスポンス形式
- 成功時は { data: ..., status: "ok" } 形式で返す
- エラー時は { error: ..., status: "error" } 形式で返す

上記の例では、src/api/ 配下の TypeScript ファイルを編集しているときだけ、このAPIルールが読み込まれます。フロントエンドのコードを編集しているときにはロードされないため、無関係な情報でコンテキストが汚染されません。

注意点:paths: フロントマターの動作については実装上の問題が報告されており、動作しない場合は globs: キーを代わりに試してみてください。公式GitHubのIssue(#17204)でも議論が続いています。


CLAUDE.md と rules/ の使い分け判断基準

どの情報をCLAUDE.mdに書き、どれをrules/に分割すべきかは以下の基準で判断するとよいでしょう。

内容の種類置き場所理由
ビルド・テストコマンドCLAUDE.md常に参照が必要
プロジェクト概要・アーキテクチャCLAUDE.md全体的な文脈として常に必要
コーディング規約・命名規則rules/code-style.mdテーマ別に独立して管理できる
テスト方針・モック規則rules/testing.mdテスト作業時に特化して参照
セキュリティチェックリストrules/security.mdセキュリティ関連作業時のみ必要
API設計規則rules/api.md(paths指定あり)API関連ファイル操作時のみ必要
フロントエンド固有ルールrules/frontend/react.md(paths指定あり)フロント作業時のみ必要


グローバルルールとプロジェクトルールの使い分け

rules/ ディレクトリはプロジェクト固有のものだけでなく、個人のホームディレクトリ(~/.claude/rules/にも設置できます。これにより、すべてのプロジェクトに共通して適用したい個人ルールを管理できます。

# グローバルrulesディレクトリの例
~/.claude/rules/
├── preferences.md      # 個人の作業スタイル・返答形式の好み
├── workflows.md        # よく使うワークフロー・手順
└── shortcuts.md        # よく使うコマンドエイリアスなど

グローバルルールとプロジェクトルールは併用可能で、両方が読み込まれます。個人の作業スタイルはグローバルに、プロジェクト固有のコーディング規約はプロジェクトに、というように責務を分離するのがベストプラクティスです。


シンボリックリンクを使った共有ルール管理

チームで複数のプロジェクトを管理している場合、共通のルールをシンボリックリンクで参照させることができます。これにより、ルールの変更が一箇所で完結し、すべてのプロジェクトに自動的に反映されます。

# 共有ルールディレクトリを参照するシンボリックリンクを作成
ln -s ~/shared-claude-rules .claude/rules/shared

# 個別ファイルのシンボリックリンクも可能
ln -s ~/company-standards/security.md .claude/rules/security.md


よくある活用パターン:チーム開発での設定例

実際のチーム開発での設定例を紹介します。以下は TypeScript + React のフロントエンドプロジェクトにおける構成例です。

my-project/
├── .claude/
│   ├── CLAUDE.md               # プロジェクト概要・ビルドコマンド
│   ├── settings.json            # ツール権限設定
│   └── rules/
│       ├── code-style.md        # TypeScript命名規則・フォーマット
│       ├── testing.md           # Vitestルール・モック方針
│       ├── git.md               # コミットメッセージ規約
│       └── frontend/
│           └── react.md         # Reactコンポーネント設計指針
├── src/
└── package.json

settings.json にはチームで統一したいツール実行権限を記述し、CLAUDE.mdにはプロジェクトのコア情報を、rules/ 以下にはテーマ別のルールを配置します。このような構成にすることで、新しいメンバーがプロジェクトに参加した際もClaude Codeがすぐに正しいルールで動作するようになります。


rules/ ディレクトリ活用のベストプラクティス

  • 1ファイル1テーマ:ファイル名を testing.mdsecurity.md のように役割が明確になるよう命名する
  • Gitで管理する:ルールもコードと同様にバージョン管理し、変更をレビューできるようにする
  • ファイルの冒頭に目的を書く:そのルールファイルがいつ・なぜ適用されるかをコメントで明記する
  • 小さく始める:最初から大量のルールを書かず、実際に必要になったものを追加していく
  • パス限定ルールを積極活用:対象が限定できるルールはpaths/globsで絞り込み、コンテキストを節約する
  • 定期的に見直す:プロジェクトの成長に合わせてルールを更新・整理する


まとめ

.claude/rules/ ディレクトリは、Claude Codeの指示管理をモジュール化・スケールアップするための強力な仕組みです。CLAUDE.md だけでは管理しきれなくなってきたプロジェクトや、チームで統一したルールを適用したい場面で特に効果を発揮します。

今回紹介した内容をまとめると:

  • .claude/ ディレクトリには CLAUDE.md・settings.json・rules/ などが格納される
  • rules/ 内のMarkdownファイルは起動時に自動で一括ロードされる
  • YAMLフロントマターのpaths/globsでパス限定ルールを設定できる
  • グローバル(~/.claude/rules/)とプロジェクト(.claude/rules/)を使い分けることで柔軟な管理が可能
  • シンボリックリンクでチーム共通ルールを複数プロジェクトに適用できる

ぜひ自身のプロジェクトで .claude/rules/ の活用を試してみてください。Claude Codeとの協働がより快適になるはずです。


参考リソース

コメント

タイトルとURLをコピーしました