我的規則檔案要放哪裡?
專案層放 .claude/rules/,個人層放 ~/.claude/rules/,後者對你機器上所有專案都適用。每個 .md 一個主題。
為什麼我的路徑規則每個 session 都出現?
先檢查 frontmatter 的 YAML 有沒有寫壞:文件說解析失敗時會當成沒有 paths,變成無條件載入。用 claude --debug 看解析錯誤。
rules 和 Skill 差在哪?
規則在每個 session 或開啟符合檔案時載入;skill 只在你叫用或 Claude 判斷相關時才載入。不需要一直在 context 的任務型指示,文件建議用 skill。
不是工程師,一句話懂?
把規則想成員工手冊:全公司都要遵守的放總則,只有會計部才需要的,等你走進會計部才發給你。
CLAUDE.md 越寫越長,是很多人遇到的第一個問題:官方建議每個檔案約 200 行以內,更長會耗用更多 context 並降低遵守度。官方給的出路之一是 .claude/rules/:把規則拆成多個檔案,還可以讓某些規則只在 Claude 碰到特定檔案時才載入。本文是照官方文件整理的上手步驟。除了標明的地方,都出自官方記憶文件(How Claude remembers your project);步驟我沒有在自己機器上跑過,請你照著試一次再確認。
your-project/
├── .claude/
│ ├── CLAUDE.md
│ └── rules/
│ ├── code-style.md # no paths: loads at launch
│ └── api.md # has paths: loads on matching files
└── src/api/users.ts
每個 .md 檔案放一個主題,檔名要能看出內容(文件的例子是 testing.md、api-design.md),可以遞迴放進 frontend/、backend/ 之類的子目錄。沒有 paths 的規則在啟動時載入,優先順序和 .claude/CLAUDE.md 相同。
---
paths:
- "src/api/**/*.ts"
---
API rules
- Validate all input before using it
- Return errors in the standard error format
文件說 paths 是規則檔案裡 Claude Code 唯一會讀的 frontmatter 欄位,其他欄位會被忽略而且不報錯;載入前會把 frontmatter 拿掉。paths 可以是 YAML 清單,也可以是逗號分隔的字串。
路徑限定的規則,在 Claude 用 Read、Write 或 Edit 對符合的檔案操作時載入;用 Bash 的 cat 或 head 看單一檔案、屬於文件定義的「算讀取」時也會載入。也就是說,只是開了一個 session 還沒碰到檔案,這條規則不在 context 裡。沒有 paths 的規則則是無條件載入、套用到所有檔案。
**/*.ts:任何目錄下的所有 TypeScript 檔案src/**/*:src/ 下的所有檔案*.md:專案根目錄的 Markdown 檔案src/components/*.tsx:特定目錄的 React 元件src/**/*.{ts,tsx};一個規則的整個 paths 清單共用 1,000 個展開樣式與 4 MiB 的額度,超過的樣式會以未展開的形式使用,大括號就變成字面字元、什麼都匹配不到。paths 來載入。也就是說你本來想「只在 API 檔案出現」的規則,會變成每個 session 都載入。要看解析錯誤,執行 claude --debug。[ 當成括號運算式的開頭,無法解讀的樣式(如 photos [2024/)無效、什麼都匹配不到,其他樣式仍正常;要匹配字面的 [,寫成 photos \[2024/。.claude/rules/ 支援 symlink,可以把共用規則連進多個專案,但指向工作目錄之外的 symlink 要先核准外部匯入;核准後,只有「沒有 paths 欄位」的規則會載入。要免核准共用,放在 ~/.claude/rules/,對你機器上所有專案都適用。我能確認的官方資訊是:文件有 InstructionsLoaded hook 可以在指令檔載入時觸發,以及 claude --debug 看 frontmatter 解析錯誤。第三方整理(claudefa.st)說 /memory 會列出已載入的 CLAUDE.md 與規則檔,我沒有自己查證,請以你的版本為準。比較直接的做法(我的建議,未實測):先開新 session、不碰任何檔案,問 Claude「現在有哪些 API 規則」;再請它讀 src/api/users.ts,同樣的問題再問一次,兩次的答案應該不同。
文件的說法是:規則在每個 session 或打開符合的檔案時載入;不需要一直在 context 的任務型指示,改用 skill,它只在你叫用或 Claude 判斷相關時才載入。我的整理:全專案都適用的短規則放 CLAUDE.md;只和某類檔案有關的放路徑限定規則;一個完整的工作流程放 skill。另外第三方整理說壓縮之後,路徑限定的規則要等 Claude 再讀到符合的檔案才會回來,這點我沒有在官方文件找到,只當作可能性。