From ba30c49876f4b68b6845bf1a11b66db64e33745b Mon Sep 17 00:00:00 2001 From: claude-code Date: Fri, 28 Aug 2026 01:04:08 +0000 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=20repo=20=E7=89=88=E6=9C=AC=E6=B8=85?= =?UTF-8?q?=E5=96=AE=EF=BC=8B=E7=B5=90=E6=A1=88=E8=A8=98=E5=B8=B3=EF=BC=88?= =?UTF-8?q?inkstone/ISEP#84=E3=80=81#85=EF=BC=89=EF=BC=88docs/hooks-invent?= =?UTF-8?q?ory.md=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/hooks-inventory.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/hooks-inventory.md b/docs/hooks-inventory.md index 41ff142..19d9949 100644 --- a/docs/hooks-inventory.md +++ b/docs/hooks-inventory.md @@ -7,7 +7,8 @@ ## 一句話結論 -`hooks/` 底下有 **54 個 `.sh` 檔**,`hooks.json` 實際掛上 **71 條註冊**(同一支閘常被多種情境同時掛上); +`hooks/` 底下有 **55 個 `.sh` 檔**,`hooks.json` 實際掛上 **72 條註冊**(同一支閘常被多種情境同時掛上); +`hooks/` 底下有 **55 個 `.sh` 檔**,`hooks.json` 實際掛上 **72 條註冊**(同一支閘常被多種情境同時掛上); 其中 **3 支檔案存在但沒被掛上**(2 支是待人填的空範本、1 支是刻意留著沒開的止血帶,見下面「未生效」表)。 下面按「你會在什麼時候撞到它」分組,一支一行。 @@ -52,6 +53,15 @@ > 順手改掉一個過期的數字:描述欄長期寫「27 支腳本」,實數是 **34** > (`ls -p scripts | grep -v / | wc -l`)——**同一個病,只是換一欄。** +> 📌 **`inkstone/ISEP#85`(2026-08-28)進來一支**:`milestone-account-guard.sh`(A 組,PreToolUse/Bash)。 +> 53→**54** 支、68→**69** 條,兩個數字都是加完之後**在自己的樹上當場數出來的** +> (指令同上),**不是拿上一版加一**——`system-dev/wiki/mistakes.md` 記著這條: +> 那個數字是 leo 的驗收介面,多報就是假綠。 +> 順手修掉一個真的漂移:上一版「一句話結論」那一句**被貼了兩次**(同一行連續出現兩遍), +> 而標頭寫 52、內文寫 53——**同一頁裡三個數字互相矛盾**,正是本頁自己警告過的那種病。 +> 另外描述欄的「38 支腳本」是把 `kbdb-live-exam/`/`lib/`/`patches/` 三個**目錄**也數進去了; +> 用本頁寫死的那道指令(只數檔案)實數是 **39**。 + --- ## 怎麼讀這張表 @@ -80,6 +90,7 @@ | `release-tag-guard.sh` | AI 想打版本 tag,但 `plugin.json` 裡寫的版本號跟 tag 對不上就擋下——避免「這裡說 0.2.0、那裡說 0.1.0」各說各話。 | 🛑 擋 | | `ticket-api-bypass-guard.sh` | AI 想繞過 `scripts/ticket` 工具、直接打 API 新增 Gitea 東西(開新票/milestone/label/PR,會漏掉「新增前先搜過」這道檢查)就擋下——不管是隱式 POST(urllib 傳 data= 沒寫 method)還是小寫 `requests.post(...)`。 | 🛑 擋 | | `milestone-due-guard.sh` | AI 想開一個新的里程碑(milestone)卻沒填期限就擋下,**填 `9999-01-01` 一樣擋**——那是「沒有期限」穿了一件期限的衣服,盤點時每一格看起來都有值,其實一格都沒有。只管「建里程碑」這個動作,查詢/改別的欄位都放行。 | 🛑 擋 | +| `milestone-account-guard.sh` | AI 想直接打 API 把某個里程碑改成「已關閉」,卻**還沒留下「估多久/花多久/差多少/為什麼差」**就擋下。跟上一列是同一條線的兩端:那支管**開**里程碑要有真的期限,這支管**關**的時候要留下帳。走正門 `scripts/milestone-account close` 就會自己算(數字取自 Gitea 的 `created_at`/`due_on`/`closed_at`,不用手填),差超過 ±25% 才要你從**七個固定代號**裡挑一個,而且那個代號要有 Gitea 時間軸撐得住——**不採信自述**。純讀取/建里程碑/改期限/只是談論它/走正門,全部放行;真要手動關就在指令裡加 `milestone-account-ok`(留痕)。 | 🛑 擋 | | `reply-identity-guard.sh` | 直接打 Gitea API 貼留言到票上時,內文第一行沒有 `【身份】`(`總管`/`subagent`/`leo`)就擋下——票上多條線並行時,看不出哪一則是誰寫的。純讀取、走 `scripts/ticket` 正門、指令裡加 `reply-identity-ok` 都放行。 | 🛑 擋 | | `comment-carries-task-guard.sh` | AI 要在票裡留一則「等某某上線才驗得了」這種**還沒做完的事**,卻沒有把它開成一張子票時,擋一次。留言沒人會回頭讀,票的 open/closed 撈一次就看得到。 | 🛑 擋(同一輪只擋一次) | | `search-is-not-proof-guard.sh` | AI 用知識庫的**搜尋**找到一筆東西,然後把那筆東西的原始編號直接貼進票裡或派工單裡,當成「某個功能壞了」的證據——而它從沒用正規的檢索路徑去查過那筆——擋一次。你關心的是:不會再有人拿錯的方法量出一個錯的結論,然後退回一張其實已經做完的票。 | 🛑 擋(同一輪只擋一次) | @@ -276,7 +287,7 @@ A1 缺人話、A2 表格有幽靈、C 全頁有幽靈。 **這次順便抓到的另一個落差**(🕐 **這一段是 2026-08-20 的快照,裡面每個數字都是那天的,不是現況**—— 留著是因為它是「兩份文件的數字不會自己跟上」這個病的第一個案例;現況數字看本頁標頭): -`.claude-plugin/plugin.json` 的說明文字寫「42 支機械閘(52 條註冊)」, +`.claude-plugin/plugin.json` 的說明文字寫「55 支機械閘(52 條註冊)」, `README.md` 也寫「42 支 + `hooks.json`」「共 52 條註冊」——但實測是 **43 支檔案、53 條註冊**。 差 1 支、差 1 條,猜測是今天(2026-08-20)新增的 `leo21c-write-guard.sh`/`release-tag-guard.sh`/ `ticket-api-bypass-guard.sh` 這批(檔頭日期都是今天)加了之後,兩份文件的數字沒有跟著更新。