Day 105Claude Code 有個 InstructionsLoaded hook
叫 Claude 把每次讀進來的 CLAUDE.md 和規則檔記下來
交給你的是 哪個檔 還有 5 種讀進來的原因是哪一種





在專案的 .claude/settings.json 加上(指令是 bash 的 grep):
{
"hooks": {
"InstructionsLoaded": [
{
"hooks": [
{
"type": "command",
"command": "grep -oE '\"(file_path|load_reason)\":\"[^\"]*\"' >> .claude/loaded.log"
}
]
}
]
}
}
加好之後 跟 Claude 說:
在 src/api/users.py 新增 get_user(user_id) 函式,用 user_id 找出對應的人
這是什麼
InstructionsLoaded 是 Claude Code 的 hook 事件。
Claude 每讀進一個 CLAUDE.md 或規則檔,就記一筆。
紀錄寫哪個檔,和 5 種讀進來的原因是哪一種。
這個 hook 只記錄,不能擋也不能改載入。
怎麼設
- 打開專案裡的
.claude/settings.json。 - 在
hooks底下寫InstructionsLoaded。 - 在
command放一行指令,讀進一個檔就跑一次。 - 作者的指令是 bash 的
grep,把紀錄寫進.claude/loaded.log。 - 看
file_path:哪個檔。 - 看
load_reason:為什麼讀進來。
5 種原因
load_reason 欄位有 5 個值:
- 開工:
session_start - 碰到規則範圍:
path_glob_match - 進子資料夾:
nested_traversal - 被匯入:
include - 壓縮之後:
compact
怎麼測
- 加好 hook。
- 對 Claude 說
在 src/api/users.py 新增 get_user(user_id) 函式,用 user_id 找出對應的人。
作者的結果:
- 改
src/api:紀錄裡有CLAUDE.md(session_start)和style.md(include)。 - 另外多一筆
api.md,原因是path_glob_match。規則檔碰到才載入。 - 改
src/ui:多的是src/ui裡的CLAUDE.md,原因是nested_traversal。 - 這次
api.md沒被載入。