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>
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# ISEP 環境治理與 wiki 自身
|
||||
|
||||
> 桶子索引——只連不重寫,卡片全文見各自檔案。
|
||||
|
||||
## 環境治理
|
||||
|
||||
- [[真身薄殼合一]] — 為什麼環境設定收斂成一個 plugin、本機雲端裝同一份。
|
||||
- [[hook路徑規約]] — hook 找自己用 `${CLAUDE_PLUGIN_ROOT}`、找專案檔案用 `$CLAUDE_PROJECT_DIR`,不可混用。
|
||||
|
||||
## wiki 自身
|
||||
|
||||
- [[repo邊界與紅線]] — ISEP 裝什麼/不裝什麼;wiki 為什麼是例外、例外的邊界在哪。
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
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路徑規約]] >> 修正自 >> [[真身薄殼合一]]
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
tags: [wiki自身, 決策, 規約]
|
||||
gloss: repo 邊界與紅線是 ISEP 這個 repo「裝什麼、不裝什麼、wiki 記什麼、不記什麼」的界線定義。
|
||||
---
|
||||
# repo 邊界與紅線
|
||||
|
||||
← [[isep/00-INDEX]]
|
||||
|
||||
**來源**:`README.md`「裝什麼」段、`inkstone/ISEP#3` 票內文
|
||||
**最後更新**:2026-08-20
|
||||
|
||||
## 摘要
|
||||
ISEP 是「環境」repo(hooks/commands/skills/scripts),本來刻意不放「知識」(wiki/docs/
|
||||
_archive)。`inkstone/ISEP#3` 在這條界線上開了一個明確定義過的例外:ISEP 需要**自己的**
|
||||
wiki,但那份 wiki 只能記 ISEP 自己的事,不能變成 InkStoneCo 頂層 wiki 的複製品。
|
||||
|
||||
## 重點
|
||||
- **裝的東西(環境)**:41 支 hook(`hooks.json` 註冊 51 條)、7 支 slash command、2 支 skill、
|
||||
23 支腳本。全部只改這裡,改完兩邊(本機/雲端)各自 `/plugin update`,
|
||||
不再改 `InkStoneCo/.claude/hooks/`(退場中)。
|
||||
- **原本不裝的東西**:`.env`(違反 D36「金鑰只有一個家」)、`wiki/`、`docs/`、`_archive/`——
|
||||
這些被歸類為「知識」而非「環境」。
|
||||
- **`#3` 開的例外**:ISEP 現在有 `system-dev/wiki/`,理由是「接手 ISEP 的 session(含雲端)
|
||||
要能在 repo 內就查到『這裡的決定、踩過的坑、現在什麼狀態』,不必先 clone InkStoneCo」。
|
||||
這不是推翻原本的分類,是承認 ISEP 本身也是一個有歷史、有決策、會踩坑的專案,
|
||||
需要一份屬於它自己的知識庫——跟裝進去的 hooks/commands 一樣,都是「這個 repo 自己的東西」。
|
||||
- **紅線沒有放寬**:ISEP 的 wiki **只記 ISEP 自己的事**。不把 InkStoneCo 頂層 wiki
|
||||
(`status.md`/`mistakes.md`/`decisions-summary.md` 等)的內容抄過來——複製即 fork,
|
||||
fork 即漂移,跟 [[真身薄殼合一]] 要解的病是同一種結構性錯誤,只是這次的對象換成知識庫。
|
||||
查跨專案的事仍然去 InkStoneCo 頂層;查 ISEP 自己的事才查這裡。
|
||||
- 素材骨架取自 `inkstone/system-dev-template`(見該 repo 的 wiki template),照它的規約裝
|
||||
(三層 + 標籤橫切:`INDEX.md`/`TAXONOMY.md`/`status.md`/`mistakes.md`/`principles.md`/
|
||||
`cards/<bucket>/`),不是自己另外發明一套格式。
|
||||
|
||||
## 實體
|
||||
- **環境**(environment)— hooks/commands/skills/scripts,本機雲端要同步的那層。
|
||||
- **知識**(knowledge)— wiki/docs,只跟這個 repo 自己被讀到什麼有關,不強求同步到別處。
|
||||
|
||||
## 關聯
|
||||
### 內文知識關係
|
||||
- 環境 >> 對立於 >> 知識
|
||||
- ISEP 的 wiki >> 只記 >> ISEP 自己的事
|
||||
### 卡片關係
|
||||
- [[repo邊界與紅線]] >> 延續同一種錯誤形狀 >> [[真身薄殼合一]]
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
tags: [環境治理, 決策]
|
||||
gloss: 真身薄殼合一是把「本機在跑的環境設定」與「雲端另外產生的一份環境設定」收斂成同一個 Claude Code plugin 的決定。
|
||||
---
|
||||
# 真身薄殼合一
|
||||
|
||||
← [[isep/00-INDEX]]
|
||||
|
||||
**來源**:`README.md`、commit `c263866`(ISEP 0.1.0)
|
||||
**最後更新**:2026-08-20
|
||||
|
||||
## 摘要
|
||||
在 ISEP 出現之前,同一套 Claude Code 環境設定(hooks/commands/skills/scripts)存在兩份:
|
||||
本機真身 `InkStoneCo/.claude/`,以及由 `generate-shell-payload.py` 另外產生、塞進 GitHub 私 repo
|
||||
給雲端用的「薄殼」。兩份必然漂移,且已經實測漂移過兩次。
|
||||
|
||||
## 重點
|
||||
- **薄殼比真身少 7 支閘**:`inkstone/InkStoneCo#57` 實測結果,其中兩支閘是前一天才立的——
|
||||
代表新立的規矩,雲端根本沒收到。
|
||||
- **雲端 33 支 guard 一支都沒生效**:`inkstone/InkStoneCo#14`,更早發現的同一個病,比上面那次更嚴重。
|
||||
- **解法不是修同步機制,是拿掉「兩份」這個結構**:ISEP 這個獨立 repo 本身就是唯一真相源,
|
||||
本機與雲端用同一個 plugin 安裝機制裝進去。改動只有一個地方能改。
|
||||
- **總管自己也吃這套**(leo 原話:「你自己可以 dogfooding」)——壞掉時是總管先踩到,
|
||||
不是雲端替他踩到才發現。
|
||||
- ISEP **不放** `.env`(金鑰另有家,見 D36)、`wiki/`、`docs/`、`_archive/`——那些原本被歸類為
|
||||
「知識」不是「環境」。**但 `inkstone/ISEP#3` 之後這條有了例外**:ISEP 需要自己的 wiki 才能被
|
||||
接手的 session 直接查到「這裡的事」,見 [[repo邊界與紅線]]。
|
||||
|
||||
## 實體
|
||||
- **ISEP**(InkStone Environment Plugin)— leo 的 Claude Code 環境唯一真相源 repo,2026-08-20 建立。
|
||||
- **真身**(`InkStoneCo/.claude/`)— 舊的、本機在跑的那份環境設定,現已退場中。
|
||||
- **薄殼**(shell payload)— 舊的、由腳本產生塞進 GitHub 私 repo 給雲端用的那份環境設定副本。
|
||||
|
||||
## 關聯
|
||||
### 內文知識關係
|
||||
- 真身 >> 與...漂移於 >> 薄殼
|
||||
- ISEP >> 取代 >> 真身
|
||||
- ISEP >> 取代 >> 薄殼
|
||||
### 卡片關係
|
||||
- [[真身薄殼合一]] >> 是...的前提 >> [[hook路徑規約]]
|
||||
- [[真身薄殼合一]] >> 帶出例外 >> [[repo邊界與紅線]]
|
||||
Reference in New Issue
Block a user