Files
ISEP/system-dev/wiki/cards/isep/hook路徑規約.md
Leo 45bf7b4a52 ISEP #3:裝一套自己的 wiki,接手 session 不必回頭翻 InkStoneCo
骨架照 inkstone/system-dev-template 的 wiki template 裝(三層+標籤橫切:
INDEX/TAXONOMY/status/mistakes/principles + cards/<bucket>/),不自創格式。

內容只記 ISEP 自己的事:
- 真身薄殼合一(為什麼環境設定收斂成一個 plugin)
- hook 路徑規約(${CLAUDE_PLUGIN_ROOT} vs $CLAUDE_PROJECT_DIR)
- repo 邊界與紅線(wiki 是這條紅線目前唯一開的例外,且例外本身也劃了邊界)

不複製 InkStoneCo 頂層 wiki 的任何內容——複製即 fork,fork 即漂移。

實測:hooks/session-start-recall.sh 以 ISEP 為 cwd 執行,exit 0,principles/mistakes
兩段真的印出剛寫的內容;wiki-secret-scan.sh 對全部新檔案掃過,exit 0;
wiki-recall/update/capture 三支 command 描述的路徑全部存在。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 13:00:36 +08:00

37 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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路徑規約]] >> 修正自 >> [[真身薄殼合一]]