--- tags: [環境治理, 規約] gloss: hook 路徑規約是 ISEP 裡「hook 找自己用什麼變數、找專案檔案用什麼變數」的強制寫法。 --- # hook 路徑規約 ← [[isep/00-INDEX]] **來源**:`README.md`「路徑規約(薄殼一直壞掉的根)」段 **最後更新**:2026-08-20 ## 摘要 hook 腳本裡有兩種完全不同的「路徑需求」,必須用不同變數,混用就是舊薄殼一直壞掉的根因。 ## 重點 - **hook 找自己(或要 source 的其他 hook 檔)→ 一律用官方 `${CLAUDE_PLUGIN_ROOT}`**。 這是 plugin 安裝到哪裡,跟正在操作哪個專案無關,任何情境下都成立。 - **禁止寫死絕對路徑**:本機測試時寫死看起來能跑,換一台機器或雲端就斷。 - **禁止用 `$CLAUDE_PROJECT_DIR` 指 hook 自己**:這個變數指的是「目前操作的專案在哪」, 雲端執行時 cwd 不是本機那個真身目錄,用它找 hook 自己一定找不到—— 這正是舊薄殼「雲端 33 支 guard 一支都沒生效」的根因(見 [[真身薄殼合一]])。 - **腳本內部要指專案裡的檔案(`system-dev/wiki/`、`system-dev/docs/` 等)才用 `$CLAUDE_PROJECT_DIR`**:這時候是對的,因為那些檔案本來就該住在被操作的那個 repo 裡, 不是住在 plugin 安裝目錄裡。 - ISEP 0.1.0 一次把 51 條 hook 路徑登記全部改成 `${CLAUDE_PLUGIN_ROOT}`,零漏網。 ## 實體 - **`${CLAUDE_PLUGIN_ROOT}`** — 官方變數,指 plugin 實際被安裝到的目錄,本機雲端都成立。 - **`$CLAUDE_PROJECT_DIR`** — 指目前正在操作的專案根目錄,本機雲端可能是不同的路徑。 ## 關聯 ### 內文知識關係 - ${CLAUDE_PLUGIN_ROOT} >> 用於定位 >> hook 自己 - $CLAUDE_PROJECT_DIR >> 用於定位 >> 專案內檔案 ### 卡片關係 - [[hook路徑規約]] >> 修正自 >> [[真身薄殼合一]]