Files
ISEP/system-dev/wiki/cards/isep/hook路徑規約.md
T
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

1.9 KiB
Raw Blame History

tags, gloss
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 >> 用於定位 >> 專案內檔案

卡片關係