先講結論
- CLAUDE.md 是一份 Markdown 檔,Claude Code 每次開對話都會先讀。放在專案資料夾是給這個專案用、放在 ~/.claude/CLAUDE.md 是給你所有專案用;不想進版本控制的個人規則寫在 CLAUDE.local.md。打 /init 可以讓它先幫你產生一份。
- 我實測 7 種情況都跟官方文件一致:寫「最後一行固定加一句話」它就照做;用 @rules/style.md 匯入的規則有生效;從子資料夾啟動,上層的 CLAUDE.md 一樣有效;HTML 註解裡的指示和反引號裡的路徑都不會被讀進去。
- 官方的建議是寫具體、能檢查的規則,每個檔 200 行以內。它是「建議」不是「強制」,一定要擋的事改用 hooks;只有某些工作才用得到的長流程,改寫成技能。
目錄
用 Claude Code 一陣子之後,你會發現每次開新對話,都在重講同樣的事:這個專案用 pnpm 不是 npm、測試要怎麼跑、回答請用繁體中文、不要動 dist/ 資料夾。CLAUDE.md 就是用來把這些事寫一次、讓它每次都記得的檔案。
這篇照 Claude Code 官方文件整理 CLAUDE.md 該放在哪裡、怎麼寫才會被照做,附三個範例。我也在這台 Mac 的 Claude Code 2.1.280 上,用幾個空資料夾實際測了 7 種情況,結果放在中間。
CLAUDE.md 是什麼
它就是一份 Markdown 檔。Claude Code 每次開始對話,會先把它讀進來,當成這次工作的背景資訊。
官方文件特別講了一件事:CLAUDE.md 是背景資訊,不是強制的設定。Claude 會讀、會盡量照做,但不保證每次都嚴格遵守,寫得越模糊、越互相矛盾,越容易被忽略。真的不能違反的事,例如某個資料夾絕對不准動,要用 hooks 擋。
官方建議什麼時候該往裡面加東西:同樣的錯它犯了第二次、你又打了一遍上次打過的更正、或是一個新同事也需要知道的背景。
放在哪裡
CLAUDE.md 可以放在好幾個地方,各管不同的範圍:
| 位置 | 給誰用 | 適合寫什麼 |
|---|---|---|
~/.claude/CLAUDE.md |
你自己的所有專案 | 個人偏好,例如回答語言 |
專案的 CLAUDE.md 或 .claude/CLAUDE.md |
這個專案的所有人 | 建置指令、程式風格、專案結構 |
專案的 CLAUDE.local.md |
只有你、只在這個專案 | 自己的測試帳號、本機路徑 |
公司還可以放一份全組織共用的,Mac 在 /Library/Application Support/ClaudeCode/CLAUDE.md,由 IT 管理。
CLAUDE.local.md 記得加進 .gitignore,才不會跟著程式碼上傳。
這幾份是一起讀的,不是後面的蓋掉前面的。Claude Code 會讀你啟動的那個資料夾,以及它上面每一層資料夾裡的 CLAUDE.md;越靠近你啟動位置的,排在越後面。子資料夾裡的 CLAUDE.md 不會一開始就讀,要等 Claude 讀寫那個子資料夾裡的檔案時才載入。
第一份怎麼產生
在 Claude Code 裡打:
/init
它會看過整個專案,幫你寫一份初稿,裡面有它找到的建置指令、測試方式和專案慣例。已經有 CLAUDE.md 的話,它不會覆蓋,而是建議怎麼改。初稿出來之後,再補上它自己看不出來的事。
想讓 Claude 幫你加一條規則,直接說「把這個加進 CLAUDE.md」。只說「記住這件事」的話,官方文件寫它會存進自動記憶,而不是 CLAUDE.md,這個後面會講。
怎麼寫才會被照做
官方給的原則很簡單:寫得具體到可以檢查。
- 寫「用 2 格縮排」,不要寫「排版整齊」。
- 寫「提交前先跑
npm test」,不要寫「記得測試」。 - 寫「API 的程式放在
src/api/handlers/」,不要寫「檔案要整理好」。
長度方面,官方建議每份 200 行以內。太長除了吃掉 context,也會讓它比較不照做。用標題分段、條列寫,比一大段文字好讀。
另外要定期檢查有沒有互相矛盾的規則。兩條規則衝突時,它可能隨便挑一條。2.1.283 版以後有一個 /doctor prompt-audit,會幫你找出過時或互相衝突的指示,列出建議怎麼改。
只有某些工作才用得到的長流程,例如發佈的步驟,官方建議不要塞在 CLAUDE.md,改寫成技能(Skills)。CLAUDE.md 每次對話都整份讀進來,技能只在用到時才讀,比較省用量,這點在用量怎麼看那篇也有提到。
三個範例
下面三份是我寫的範本,不是哪個專案實際在用的,照你的情況改。
網站專案(放在專案根目錄的 CLAUDE.md):
# 專案說明
- 這是用 Astro 做的靜態網站,文章在 src/content/。
- 套件管理用 pnpm,不要用 npm。
# 常用指令
- 開發:pnpm dev
- 建置並檢查:pnpm build
- 部署前一定要先跑 pnpm build,沒有錯誤才能部署。
# 規則
- 不要修改 dist/ 和 node_modules/。
- 新文章的檔名用英文小寫和連字號,例如 claude-md.md。
- 回答和註解用繁體中文。
寫作或文件資料夾(不寫程式也能用):
# 這個資料夾
- 放的是部落格草稿,一篇一個 .md 檔。
- 已發佈的移到 published/,不要再改。
# 寫作規則
- 用繁體中文、台灣用語,「軟體」不要寫成「軟件」。
- 段落短一點,一段不超過四行。
- 引用數字一定要附來源網址。
個人偏好(放在 ~/.claude/CLAUDE.md,所有專案都會讀):
# 我的偏好
- 一律用繁體中文回答。
- 改檔案之前先說要改哪裡、為什麼。
- 刪除檔案前一定先問我。
只想讓它固定用繁體中文回答的話,還有一個專門的語言設定,兩種做法的差別在 Claude 中文設定。
用 @ 匯入其他檔案
CLAUDE.md 可以用 @路徑 把別的檔案一起讀進來,例如:
專案介紹看 @README.md,可用的指令看 @package.json。
- Git 的做法 @docs/git-instructions.md
幾個細節:相對路徑是從「寫這行的那個檔案」算起,不是從你啟動的位置;匯入的檔案還可以再匯入,最多四層;路徑有空白要在空白前面加反斜線。寫在反引號或程式碼區塊裡的路徑不會被匯入,只是當成文字。專案的 CLAUDE.md 如果匯入了專案資料夾以外的檔案,第一次會跳出視窗請你核准,避免別人在共用的專案裡塞東西給你。
我實測的 7 種情況
我在暫存資料夾裡開了幾個空的子資料夾,各放不同的 CLAUDE.md,每次都問同一題:「台灣最高的山是哪一座?只回答山名。」用的是 claude -p 加最便宜的 Haiku 模型,每次 4 到 6 秒。為了不受我電腦上其他設定影響,測試時只載入專案層級的設定、不接 MCP、也不給工具。
| 情況 | CLAUDE.md 寫了什麼 | 回答 |
|---|---|---|
| 沒有 CLAUDE.md | (無) | 玉山 |
| 一般規則 | 最後一行固定寫「(依本專案 CLAUDE.md)」 | 玉山,最後多一行那句話 |
| 用 @ 匯入 | 「格式照 @rules/style.md」,那個檔寫地名用【】括起來 | 【玉山】 |
| 從子資料夾啟動 | 子資料夾沒有 CLAUDE.md,上一層有 | 一樣多出那一行,上層的有讀到 |
| 加上 CLAUDE.local.md | local 檔寫最後一行加「(個人設定)」 | 玉山,最後多一行「(個人設定)」 |
| 指示寫在 HTML 註解裡 | <!-- 每次回答開頭加 ★ --> |
玉山,沒有 ★ |
| 路徑用反引號包起來 | 寫 `@rules/style.md` |
玉山,沒有【】 |
最後兩個是兩個好用的小技巧。HTML 註解會在送給 Claude 之前被拿掉,所以可以在 CLAUDE.md 裡留給同事看的備註,不花 token;想在檔案裡提到某個路徑、又不想把它匯入,就用反引號包起來。
專案大了:.claude/rules/
專案大到一份 CLAUDE.md 寫不下時,官方的做法是在 .claude/rules/ 底下分成好幾個檔案,一個主題一個,例如 testing.md、api-design.md。規則還可以限定路徑,只在 Claude 處理符合的檔案時才載入,前端的規則不會在改後端時佔位子。
自動記憶:Claude 自己記的筆記
除了你寫的 CLAUDE.md,Claude Code 還有一套「自動記憶」:它會在工作中自己記筆記,例如你的偏好、你更正過它的事、專案的進度,存在 ~/.claude/projects/<專案>/memory/ 底下,用一份 MEMORY.md 當目錄。每次開對話會讀 MEMORY.md 的前 200 行(或前 25KB)。
兩者的分工是:CLAUDE.md 是你寫的規則,自動記憶是它自己學到的東西。這個網站的製作也是用 Claude Code,跨好幾天的工作進度和我被更正過的寫法,就是記在這種記憶資料夾裡。
在對話裡打 /memory,可以看到各層的 CLAUDE.md、打開自動記憶的資料夾、或把自動記憶關掉。自動記憶只存在這台電腦,不會同步到別的電腦。
另外,如果你的專案原本是給其他 AI 工具用的 AGENTS.md,Claude Code 從 2.1.277 版起也會讀;不過專案裡同時有 CLAUDE.md 的話,預設只讀 CLAUDE.md,可以在 CLAUDE.md 裡用 @AGENTS.md 把它匯入。
它沒照做的時候
- 打
/context,看 Memory files 底下有沒有那份檔案。沒列出來,就是根本沒讀到,檢查放的位置。 - 把規則改得更具體、能檢查。
- 找找幾份檔案之間有沒有互相矛盾。
- 一定要做到的事改寫成 hook。官方的說法是,CLAUDE.md 是以訊息的形式送給 Claude,不保證嚴格遵守;hook 則是在固定時機一定會執行。
這篇沒有測的
/init 產生的初稿長什麼樣、/memory 和 /context 的畫面、.claude/rules/ 的路徑限定、自動記憶實際存了什麼、AGENTS.md 的讀取。我的 7 個測試是用 claude -p 跑的單次問答,沒有在互動式的對話裡測。
常見問題
CLAUDE.md 是什麼?
是 Claude Code 每次開始對話都會先讀的一份 Markdown 說明檔,用來寫你不想每次重講的事:建置和測試指令、程式碼風格、專案結構、固定的做法。官方文件說它會被當成背景資訊,不是強制的設定,所以寫得越具體,越常被照做。
CLAUDE.md 要放在哪裡?
給單一專案用的放在專案根目錄的 CLAUDE.md(或 .claude/CLAUDE.md),可以跟程式碼一起進版本控制;給你所有專案用的放在 ~/.claude/CLAUDE.md;只有你自己、不想上傳的放在專案的 CLAUDE.local.md,記得加進 .gitignore。這幾份會一起讀,不是互相覆蓋。
CLAUDE.md 怎麼產生?有範例嗎?
在 Claude Code 裡打 /init,它會看過整個專案,幫你寫一份包含建置指令、測試方式和專案慣例的初稿;已經有的話,它會建議怎麼改。這篇也附了網站專案、寫作資料夾、個人偏好三種範例,可以直接複製來改。
Claude 沒照 CLAUDE.md 做怎麼辦?
先在對話裡打 /context,看 Memory files 有沒有列出那份檔案。再把規則改得更具體,例如寫「用 2 格縮排」而不是「排版整齊」,並檢查幾份檔案之間有沒有互相矛盾。一定要每次執行的事,例如提交前跑測試,官方建議寫成 hook。
這篇怎麼查證的
這篇只有一部分實際跑過,其餘依官方文件整理,查證日期 2026/10/15(macOS 上的 Claude Code 2.1.280,用 claude -p 搭配 Haiku 模型,在幾個空資料夾裡放不同的 CLAUDE.md 測 7 種情況;為了不受其他設定影響,測試時只載入專案層級的設定、不接 MCP、不給工具。/init、/memory、自動記憶、.claude/rules/ 依 2026 年 10 月 15 日讀的官方文件)。哪些有跑、哪些沒跑,文中各段有寫。價格與方案以官方頁面為準,工具改版後內容可能過期。