メインコンテンツまでスキップ

rule のロード機構

/debug のライフサイクルで「.ts を開くと TypeScript の rule が付いてくる」場面を見ました。この章では、その仕組みを単体で掘り下げます。

rules は 2 種類ある

~/.claude/rules/ には規範を書いた Markdown が並んでいます(この環境では 34 件)。重要なのは、これらがいつ読み込まれるかで 2 つに分かれることです。

  • 常時ロード(7 件): 起動時に必ずコンテキストへ注入される。全応答に効く核
  • path-scoped(27 件): 特定のファイルを開いたときだけ読み込まれる

常時ロードは「どんな作業でも守ってほしい」核だけに絞られています。検証ファースト(fact-check.md)、質問は構造化(ask-user-question.md)、コミット規約(git-workflow.md)といった土台です。

切り替えは frontmatter の paths: で決まる

2 種類を分けているのは、rule ファイル冒頭の frontmatter に paths: があるかどうかです。paths: があればその glob にマッチするファイルを開いたときだけ、なければ常時ロードになります。この切り替え機構は Claude Code 標準(📦)で、34 件の rule の中身は筆者の自作(🔧)です。

typescript-strict.md の frontmatter(実物)
---
name: typescript-strict
description: TypeScript 型ルール統合版 (...)
paths:
- "**/*.ts"
- "**/*.tsx"
- "**/*.vue"
---

この paths: の glob では、**(任意の深さ)、*(任意の文字)、{a,b}(いずれかにマッチするブレース展開)が使えます。.ts / .tsx / .vue のどれかを開けば、この rule が注入される、という指定です。

設計ファイルにだけ効かせることもできる

paths: の指定しだいで、「ハーネスの設計ファイルを触るときだけ効く rule」も作れます。たとえば spec-first-pipeline.md は、rules や hooks など ~/.claude/ 配下の設計ファイルを開いたときだけ読み込まれます。

spec-first-pipeline.md の frontmatter(実物・一部)
paths:
- "**/.claude/rules/**"
- "**/.claude/agents/**"
- "**/.claude/hooks/**"
- "**/.claude/skills/*/SKILL.md"
- "**/.claude/references/**"
---

普段のアプリ開発では出てこず、ハーネス自体を設計するときだけ前に出てくる。規範を「効かせたい場面」にピンポイントで結びつけられるのが、path-scoped の利点です。

なぜ全部を常時ロードにしないのか

34 件すべてを常に抱えると、コンテキストが規範で埋まり、肝心の作業内容を圧迫します。さらに、Vue を書いているのに Terraform の規範が見えていると、判断のノイズにもなります。「いま触っているファイルに関係する規範だけ」を出す設計が、認知負荷を下げます。

複数マッチ時は全部ロードされる(優先度なし)

1 つのファイルが複数の rule の paths: にマッチすると、それら全部が読み込まれます。優先度や矛盾検出の仕組みはありません。.tsx を開けば typescript-strictreact-component の両方が効く、という具合です。規範どうしが矛盾しないように書く責任は、設計する側にあります。

rule には「出典」が書いてある

最後に、ロード機構ではなく中身の話を 1 つ。この環境の rule ファイルの多くには「出典」セクションがあり、どの失敗からこの規範が生まれたかを記録しています。「2026-04-20 のセッションでの明示指示」「平文質問の再発を hook で捕捉した経緯」といった具合です。

規範は思いつきで増やすものではなく、実際の失敗を 1 つずつ恒久化した結果です。出典が書いてあると、後から「この規範はまだ要るのか」を判断するときの材料にもなります。この育て方は Ratchet で詳しく扱います。

この章のまとめ

要点は次のとおりです。

  • rules は「常時ロード 7 件」と「path-scoped 27 件」に分かれる
  • 分岐は frontmatter の paths:(glob)の有無で決まる
  • 対象ファイルを開いたときだけ読み込むことで、認知負荷を抑えつつ規範を効かせる
  • 複数マッチ時は全 rule がロードされる(優先度なし)
  • rule には「出典」が記録され、どの失敗から生まれた規範かを後から追える

次は hooks の仕組み で、決定的な仕掛けの全体像を見ます。