Claude Codeのrulesとは?CLAUDE.mdとの違いとpathsの使い方

Claude Codeの.claude/rules/が何をするフォルダで、CLAUDE.mdとどう違うのかを、トップページを生成させて確かめます。

この記事でわかること

  • .claude/rules/ とは何か(役割と置き場所)
  • CLAUDE.mdとの違いと使い分け
  • pathsで「特定のファイルを触るときだけ効くルール」を作る方法

先に結論だけ: rules は機能としては CLAUDE.md と同じように効きます。ポイントは3つです。

  • rulesはトピックごとにファイル分割できる
  • rulesはCLAUDE.md に直接書いたときと同等の効果が得られる(CLAUDE.md が無くても効く)
  • だからCLAUDE.md(方針・索引)と rules(領域別ルール)は役割を分けて書ける

この記事は連載「AIにコードを書かせる前に知っておきたい設定ファイル」の第3回です。第1回(CLAUDE.mdとは?効いた・効かなかった3パターンで検証)/第2回(settings.jsonって何?確認ダイアログを減らすまでの実録)も公開しています。

目次

rulesとは

.claude/rules/ は、ルールをトピック別の Markdown ファイルに分割して置く場所です。CLAUDE.md が「プロジェクト全体の指示書」なら、rules はそれを章立てで分けたルール集にあたります。

公式ドキュメントによると、paths frontmatter を付けないファイルはセッション開始時に読み込まれます。つまり CLAUDE.md に書かなくても、rules に置けばそのまま効きます。ここが今回の肝です。

置き場所は2か所です。

./.claude/rules/        # プロジェクト用(Git管理に含める)
~/.claude/rules/        # 個人用(全プロジェクト共通)

CLAUDE.md との違い

観点CLAUDE.md.claude/rules/*.md
役割開始時に読む基本の指示書トピック別に分けた詳細ルール
向く内容プロジェクトの方針領域別・長めのルール
読み込み開始時に自動paths なしなら開始時、ありなら対象操作時

目安は「全体方針は CLAUDE.md、トピック別の詳細は .claude/rules/ に分割」です。CLAUDE.md から @.claude/rules/xxx.md で索引として繋ぐこともできます。

実験:rules を「なし → 1枚 → 複数」と増やす

同じプロンプトで、.claude/rules/ の中身だけを変えて3回作らせます。②③とも CLAUDE.md は置かず、rules だけで検証します。第1回同様、各ステップは新しいセッションで実行します。

用意するルールは2ファイルです。

# .claude/rules/frontend.md(コード規約)

htmlとjsとcssはそれぞれ別で記述すること
cssのセレクタはスネークケースで記述すること
# .claude/rules/theme.md(デザイン規約・③で追加)

赤色をベースカラーとしてください。

プロンプトは出力フォルダ名だけ変えて揃えます。

{フォルダ名}配下に、かっこいいIT企業のトップページを作成してください。
名前は架空の名称であるN_U_X_4としてください。

①rulesなし

.claude/rules/ を置かずに実行。index.html 1枚に HTML・CSS・JS が同居しました。これが基準です。

図1:rulesなし。without-rules配下がindex.html 1枚だけ
図1:rulesなし。生成物は index.html 1枚。

②rules 1枚(CLAUDE.mdと同等の効果)

.claude/rules/frontend.md だけを置いて実行。3ファイルに分離し、セレクタもスネークケースになりました。配色は指定していないので、既定の青系で仕上がります。

図2:rules1枚。frontend.md準拠で3ファイルに分離
図2:rules 1枚。frontend.md だけで3ファイル分離・スネークケース。CLAUDE.md は無し。

図3:rules1枚の見た目。配色ルールがないので既定の青系
図3:②の見た目。配色は指定していないため、既定の青系。

今回用意した2行のルールが、CLAUDE.md ではなく .claude/rules/ に置いただけで効きました。ルールは CLAUDE.md でも rules でも同じように効き、CLAUDE.md が無くても構いません。

③rules 複数(トピック別に分割)

frontend.md に加え、配色ルールを別ファイル theme.md(赤色をベースに)として置きます。

図4:rules複数。.claude/rules/ に frontend.md と theme.md の2ファイル
図4:.claude/rules/frontend.md(構成)と theme.md(配色)を分けて配置。

実行すると、両方のルールが同時に効きました。3ファイル分離はそのまま、ベースカラーが②の青系から赤系に変わっています。

図5:rules複数の見た目。theme.mdが効いてベースカラーが赤系に
図5:③の見た目。theme.md が効き、②の青系(図3)から赤系へ変わった。

rules は関心ごとにファイルを分けても、それぞれ独立して効くわけです。

3ステップのまとめ

観点①なし②rules1枚③rules複数
ファイル構成1枚3ファイル3ファイル
セレクタケバブケーススネークケーススネークケース
配色なしなし赤系ベース
効いたルールfrontend.mdfrontend.md+theme.md

rules は出力を変える魔法ではなく、ルールを整理し、役割分担するための仕組みです。

paths で適用範囲を絞る

ここまでのルールは paths を付けず、常に読み込ませていました。次は、paths で「特定のファイルを触るときだけ効くルール」を試します。

.claude/rules/js.md に、JS ファイル限定のルールを置きます。

---
paths:
  - "**/*.js"
---

JSファイルの先頭に必ず `// NUX_RULE_OK` という行を記述すること

この状態で with-paths-rule 配下にトップページを作らせると、結果が分かれました。

図6:paths検証。script.jsの先頭に // NUX_RULE_OK が入っている
図6:script.js の先頭に // NUX_RULE_OK が入った(=JS には効いた)。

図7:paths検証。style.cssには先頭コメントが入っていない
図7:style.css には入っていない(=対象外なので効かない)。

paths: "**/*.js" のとおり、ルールは JS を触るときだけ 適用され、CSS には及んでいません。「フロントエンド全体の約束(frontend.md)」と「JS だけの約束(js.md)」を分けて持てる、というのが paths の使いどころです。

補足:paths の解釈は Claude Code のバージョンによって挙動が分かれることがあります。範囲が効くか確かめたいときは、今回のように対象ファイルと対象外ファイルで結果を見比べるのが確実です。

まとめ

  • .claude/rules/ はルールをトピック別ファイルに分割する場所。paths なしなら開始時に読まれる
  • rules は CLAUDE.md 直書きと同等の効果。CLAUDE.md が無くても rules 単体で効く
  • rules は複数ファイルに分けても、それぞれ独立して効く(構成=frontend.md/配色=theme.md)
  • だから CLAUDE.md(方針・索引)と rules(領域別ルール)は役割を分けて書ける
  • paths を付ければ、特定のファイルを触るときだけ効くルールにできる(例:JS だけの約束)

CLAUDE.md が長くなってきたら、まず1トピックだけ .claude/rules/ に切り出してみてください。

次のステップ

検証に使ったルールとコードは xpendev/claude-md-html — rules-md で公開しています。手元で確かめてみてください。

連載ナビ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次