/doctor prompt-audit 拆開來看:稽核設定檔的,本身也是一段 prompt
你在 session 裡打下 /doctor prompt-audit,接下來把你那一整疊 CLAUDE.md 從頭讀到尾、判斷哪一句已經過期的,到底是哪一段程式?
答案有點好笑:沒有那段程式。官方指令表把 /doctor 歸在 Skill 類型,跟你自己寫的 skill 是同一種東西,就是一段交給 Claude 的 prompt。稽核你 prompt 的,也是一段 prompt,負責讀的是 Claude 自己。
這個子指令是 v2.1.283 加進來的,CHANGELOG 把它記在 9 月 25 日那一版。下面是照官方的指令參考、記憶體管理文件和 CHANGELOG 拆的。我只讀了文件,沒有實際跑過,所以這裡不會出現任何一份真實的稽核報告。
冰箱門上的便利貼
合租的公寓,冰箱門上貼滿便利貼。有一張寫「第二層那盒豆腐週五前吃掉」,豆腐早就沒了。有一張寫「飲料放第二層」,旁邊另一張寫「第二層只放蔬菜」。還有幾張是寫給上一個室友的,人搬走了,便利貼還在。
每天打開冰箱照著便利貼做事的,是現在的室友。要問哪幾張已經不適用,問他最準。他每天都在照做,或者照不了。
CLAUDE.md 那一疊就是冰箱門。官方記憶體文件列的三類問題,剛好對得上這三張便利貼:指向不存在的檔案或指令(豆腐早就沒了)、檔案之間互相矛盾(第二層到底放什麼)、instructions written for older models,也就是寫給舊模型的指示(寫給上一個室友的)。/doctor prompt-audit 做的事,是請每天讀便利貼的那一位把整片冰箱門讀一遍,告訴你哪幾張該撕。
它到底讀了哪些東西
範圍比名字暗示的大。記憶體文件那一節原文是這樣:
Claude reads your CLAUDE.md, CLAUDE.local.md, and AGENTS.md files, plus the rules, skills, commands, subagents, and output styles under
.claude/and~/.claude/.
重點在後半句。除了專案裡的 .claude/,還有家目錄的 ~/.claude/。你個人的全域規則、全域 skills、自訂 subagents,全在它的閱讀清單上。
如果你的 CLAUDE.md 已經拆成好幾份規則檔,每份尾巴還掛著一段越長越長的教訓紀錄,CLAUDE.md 裡再放一張一行一個路徑的檔案地圖,它要讀的東西就很可觀。檔案一多、路徑一多、規則彼此引用,過期路徑和互相矛盾最愛長在這種地方。我還沒拿它去跑自己的設定,它會抓到什麼,現在說不出來。
不想一次吃下整片冰箱門,可以帶路徑:
1 | /doctor prompt-audit # 全部:指示檔,加上 .claude/ 與 ~/.claude/ 底下的 rules、skills、commands、subagents、output styles |
引擎是跟隔壁借的
拆到這裡,最讓我意外的是文件中間夾著的一句話:
The audit runs through the bundled
/claude-apiskill, so it’s unavailable while that skill is turned off inskillOverridesor withdisableBundledSkills.
/doctor prompt-audit 背後跑的,是另一個內建 skill /claude-api。
/claude-api 本來就有一個叫 prompt-audit 的子命令,需要 v2.1.221 以上。官方對它的描述是 flag instructions written for older models in your prompts, skills, and tool descriptions and propose fixes as a diff。它看的是你專案裡拿去呼叫 Claude API 的那些 prompt、skill 和 tool description。
兩個 prompt-audit 擺在一起:
1 | /claude-api prompt-audit # v2.1.221+|對象:你的 prompts、skills、tool descriptions|提議以 diff 呈現 |
同一個名字,兩批對象,而且文件明講後者借前者的 skill 在跑。我的讀法是:稽核的能力本來就在,這次新增的是把「Claude Code 自己吃的設定檔」接成它的輸入。這是我從那一句文件推出來的,官方沒有寫得這麼白。
這個設計有個後果,而且不會在你眼前炸開。
如果你曾經用 skillOverrides 關掉內建的 /claude-api,或用 disableBundledSkills 把內建 skills 整批關掉,/doctor prompt-audit 會跟著不能用。文件只寫 unavailable,沒說你會看到什麼訊息,我沒跑過,說不出畫面長怎樣。關掉 /claude-api 的那一刻,你想的大概不是稽核設定檔,所以這層關聯很容易忘。
報告的第一頁放什麼
這幾類問題不是平起平坐。同一版 CHANGELOG 還有一條:
Improved
prompt-auditon Claude Code configuration: stale paths, stale commands and contradicting instruction files now lead the report, and thinking keywords that Claude Code documents are kept
過期路徑、過期指令、互相矛盾的指令檔,排在報告最前面。另外,Claude Code 文件自己有記載的 thinking 關鍵字會被保留,不會被當成舊時代的寫法建議刪掉。
這裡列的三項跟冰箱門那三張不是同一組。記憶體文件把不存在的檔案和指令併成一類,另外列了「寫給舊模型」;CHANGELOG 把路徑和指令拆開算,排在前面的名單裡沒有「寫給舊模型」。
這條跟「新增 /doctor prompt-audit」記在同一個版本號底下。哪個行為先有、哪個後補,CHANGELOG 沒拆開寫,我也不猜。
排序我覺得排對了。「這個路徑存不存在」可以驗,檔案在就在、不在就不在,Claude 講錯你一秒就抓得到。「這句是不是寫給舊模型的」是判斷,而官方文件只給了這個類別的名字,沒列出哪些寫法算數。可驗的擺前面,靠判斷的往後放,讀報告的人先處理不會吵架的那一半。
所以我會先信 CHANGELOG 排在前面的這三項,對「寫給舊模型」那一類保留。會讓我改觀的條件很具體:哪天看到它每一條這類發現都附上依據的是哪一份官方指引,我就把它跟那三項放在同一個信任等級。在那之前,這一類我只當成值得看一眼的建議,不會整批套用。
讀完之後,檔案動了沒
沒有。記憶體文件寫得很清楚:
You get a report of findings and a set of proposed edits, and nothing in your files changes until you ask Claude to apply them.
報告跟修改是兩步,中間隔著你的一句話。
這裡有兩個容易混的地方。一個是提議的格式:/claude-api prompt-audit 明寫 propose fixes as a diff,/doctor prompt-audit 只寫 a set of proposed edits,沒說是不是 diff,兩個不能畫等號。
另一個是不帶子命令的 /doctor。它做整套 checkup,其中一項是修剪 checked-in 的 CLAUDE.md,把 Claude 能從程式碼推出來的內容砍掉,那是 v2.1.206 就有的 trim check,跟 prompt-audit 是兩回事。官方的說法是 /doctor prompt-audit 會 instead of running the checkup,整套體檢換成只做稽核。一般的 checkup 在 7 月那篇《Claude Code 的 /doctor:幫你的設定做一次全身體檢》寫過,那時候還沒有這個子命令。終端機直接打的 claude doctor 又是第三件事:不開 session,只印唯讀的安裝診斷。
這招不只適用 CLAUDE.md
你給 code review agent 的審查清單、CI 裡某個 LLM 步驟的 system prompt、團隊共用的 PR 模板,一樣會過期。最常照著它們做事的那一位,通常也最適合被問「哪一句你已經照不了」。/doctor prompt-audit 的做法可以直接抄:讓它指出該撕哪張,撕不撕留給人決定。
要試的話,先帶路徑、一次一個檔,報告讀完再開口叫它套用。
剩下沒解的是判準。它說某一句是「寫給舊模型」的時候,拿的是哪一份依據,文件沒寫。換成審查清單或 system prompt 也一樣,被問的那一位回答得再順,判準從哪裡來,你得自己心裡有數。
原文來源:Commands - Claude Code Docs、How Claude remembers your project - Claude Code Docs、Claude Code CHANGELOG














































































































































































































