.claude/rulesとは何ですか?
公式のメモリドキュメントによれば、プロジェクト内の.claude/rules/ディレクトリで、各.mdファイルが1つのトピック(例:testing.md、api-design.md)を扱い、再帰的に検出されるのでサブディレクトリも使える。個人用は~/.claude/rules/に置き、マシン上の全プロジェクトに適用される。
なぜ存在しますか?
公式は単一のCLAUDE.mdを約200行以内に勧めており、それより長いとコンテキストを消費し遵守度が下がる。複数のルールファイルに分ければチームで保守しやすく、パス指定によりコードの一部にしか関係しないルールが毎セッションのコンテキストを占めずに済む。
どう動きますか?
pathsのないルールは起動時に読み込まれ、優先度は.claude/CLAUDE.mdと同じだ。paths(globのYAMLリストまたはカンマ区切り文字列)を持つルールは、Claudeが一致するファイルに対しRead、Write、Edit、または読み取りと数えられるBashコマンド(単一ファイルへのcatやheadなど)を使ったときに読み込まれる。pathsは読まれる唯一のfrontmatterフィールドで、読み込み前にfrontmatterは取り除かれる。
私にとってどういう意味ですか?
3点に注意する。frontmatterのYAMLが解析に失敗すると、ルールはpathsなしとして無条件に読み込まれる(claude --debugでエラーを確認)。globの[は[と書く。作業ディレクトリ外を指すシンボリックリンクは外部インポートの承認が先に必要で、その後に読み込まれるのはpathsのないルールだけだ。
公式ドキュメントの例:paths: ["src/api/**/*.ts"]を持つルールファイルで、全APIエンドポイントが入力検証、標準エラー形式、OpenAPIコメントを持つよう定める。Claudeがsrc/api配下のTypeScriptファイルに触れたときだけコンテキストに入る。
メリット:ルールがモジュール化され、関連するときだけコンテキストを使う。デメリット:追跡すべき読み込みタイミングが1つ増え、YAMLが壊れると静かに無条件読み込みになる。