我寫一個不存在的 setting,然後在那邊抓 bug 一小時
AI 開發實踐·6 分鐘

我寫一個不存在的 setting,然後在那邊抓 bug 一小時

Claude Code 跳「212 skill descriptions dropped」我寫了 130 個 skillOverrides 想要關掉它們,結果根本不是真實 feature。AI 時代寫 config 前要驗證的教訓

Y
Young Tsai

你有沒有過這種經驗:照著自己寫的筆記做,做完發現筆記是錯的,而且筆記也是自己寫的?

我今天踩到了


事情是這樣的

Claude Code 開機跳一行紅字:

212 skill descriptions dropped · /doctor for details

我裝了 222 個 skill,超過 Claude Code 預設的 1% context 額度,所以 212 個被「dropped」— 描述不會載入,等於 auto-trigger 失效

那要怎麼關掉不常用的?我打開兩個月前自己寫的 rules 文件:

~/.claude/rules/anchor-summon.md

裡面寫得很清楚:

設 ~/.claude/settings.local.json 的 skillOverrides:

{
  "skillOverrides": {
    "ref-low-priority": "off"
  }
}

好,照辦

我跑了一個 script,把 130 個不常用的 skill 塞進 skillOverrides 標 "off",restart Claude Code

結果開機訊息:

212 skill descriptions dropped · /doctor for details

一個都沒少


我先怪錯三個地方

第一個反應:是不是改錯路徑了?

我用的是 Claude Code Junyi variant,config dir 在 ~/.claude-junyi/,不是 ~/.claude/,前兩天剛踩過這個雷

跑 env | grep CLAUDE_CONFIG_DIR 確認

CLAUDE_CONFIG_DIR=/Users/young/.claude-junyi

~/.claude-junyi/settings.local.json 是 symlink 到 ~/.claude/settings.local.json 嗎?

不是

我建 symlink:

ln -s ~/.claude/settings.local.json ~/.claude-junyi/settings.local.json

restart

仍然 212

第二個反應:是不是 value 不對?也許不是 "off" 是 "disabled"?

開始 grep 各種 keyword

第三個反應:是不是 Junyi 不支援這個 setting?

開始懷疑雙 Claude 架構

一小時就這樣過去


真相是

我打開 Claude Code 的 --help:

claude --help 2>&1 | grep -i skill
--bare       ... Skills still resolve via /skill-name
--disable-slash-commands       Disable all skills

沒有 skillOverrides

我去 WebSearch「Claude Code skillOverrides」

只搜到三個結果,全部都是我自己寫的 rule 文件

skillOverrides 從來沒有存在過

我兩個月前憑著「合理推測」寫了一個我覺得 Claude Code「應該」要有的 setting,命名也很合理,看起來像真的,連我自己過了兩個月都被騙

Claude Code 看到那個 unknown key 直接 silently ignore,不報錯不警告

我塞 130 個 entries 到一個工具不認得的 key 裡,當然不會有效果


真正能用的是這個

回到官方 docs。Claude Code v2.1.129 之後其實有正式機制:

// ~/.claude/settings.json
{
  "skillListingBudgetFraction": 0.02
}

預設 0.01(1% context),改 0.02 = 加倍 budget

或者直接跑:

/skills

打開 UI picker 個別 toggle disable

或者最強的:每個 SKILL.md frontmatter 加:

disable-model-invocation: true

這三個是 Anthropic 真的有實作的,看 --help 跟官方 docs 都查得到

我的 skillOverrides?是我的想像


真正的教訓

不是「我寫錯 setting」,這只是表面

真正的問題是:

我兩個月前寫筆記時沒有驗證

當時的我覺得「Claude Code 應該要有這個 feature」,順手寫進 rule 文件當成真實 SOP

兩個月後的我,照著筆記做,掉進自己挖的坑

更慘的是:那份筆記如果再不發現,我可能會繼續餵給未來的 AI session,繼續誤導下一個我

AI 時代寫 config / 寫 SOP 的鐵律:

  1. CLI 真的 support 這個 key 嗎? 跑 <tool> --help 看
  2. 官方 docs 真的記載這個 setting 嗎? WebSearch 或 fetch 官方
  3. GitHub issue 有人問過嗎? 看 feature request 或 bug report
  4. 改完真的有 observable behavior change 嗎? 跑一個必然會變的 sentinel test

四題沒過,就標 [待驗證],不要寫進 SOP

更不要寫進「未來的我會照著做」的筆記


後記

我把這個教訓寫成 feedback memory:

memory/feedback-imagined-feature-not-verified.md

然後在 CLAUDE.md 加一條覆寫規則:寫任何 config key 前必先驗證

最後寫了一個 skill-budget-fix skill,把真實的修法 SOP 化,下次看到「N skill descriptions dropped」就跑這個 skill,不會再寫想像出來的東西

是說,這篇文章本身也是一個防呆機制 — 寫公開出來,公開後就改不掉了

你的 rule 文件,有沒有像我這個 skillOverrides 一樣,是兩個月前的你自己編出來的?

下次 onboarding 新工具時,要不要做一輪 audit 看看?

claude-codeskill-managementai-toolingdebugginglessons-learned