feat/hooks-wire-cli-status #21

Merged
admin merged 1 commits from feat/hooks-wire-cli-status into develop 2026-08-26 02:51:19 +00:00
Member

摘要

  • 需求描述:體檢技能需要問出每個 CLI 的 hook 接線狀態,而且不能動到環境。既有三個子命令都會寫檔或執行 hook,所以補一個唯讀的。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/wire-cli.sh 新增 status {cli} 子命令:唯讀盤點五種 CLI 的接線點,逐項印出 present 或 missing
README.md 工具表補上 status 的用法、輸出格式與結束碼
三份 manifest 版本同步 bump 到 0.1.8

設計重點

  • 判讀邏輯與接線共用同一組檔案位置與標記字串。分兩份實作會各自漂移,體檢說沒接、實際上接著,是最難查的那種錯。
  • 結束碼分開 5 與 4。unwired(該接的段落缺了)用 5,沿用既有的 4 代表 failed,兩者語意不同:缺接線是待辦,執行失敗是故障。
  • codex 的 notify 位置單獨算一項。標記段落在、鍵卻被歸進某張表時,codex 讀不到 notify,hook 靜靜失效。只檢查標記會漏掉這種。
  • degraded 不是缺陷。只有 claude 能到 wired,另外四種 CLI 沒有 pre-tool hook,degraded 就是它們的健康狀態,回報時照實說明原因。
  • kiro 的 hook 檔綁在工作區,status 看的一律是目前工作目錄底下那一份,與 purge 的行為一致。

測試結果

  • sh -n tools/wire-cli.sh:通過。
  • status claude:status=wired,exit 0,hooks.json 判定 present。
  • status codex:status=degraded,exit 1,四個接線點(notify、notify-root、alias、ste100)全部 present。
  • status copilot、status antigravity:status=degraded,exit 1。
  • status kiro:status=unwired,exit 5,目前工作目錄沒有 .kiro/hooks/,兩個檔案都判 missing。
  • 未接線路徑:以假家目錄跑 status codex,四項全 missing,status=unwired、exit 5。
  • 用法錯誤:status bogus 印用法並 exit 2。

前置 Push Request

  • 無
## 摘要 - 需求描述:體檢技能需要問出每個 CLI 的 hook 接線狀態,而且不能動到環境。既有三個子命令都會寫檔或執行 hook,所以補一個唯讀的。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/wire-cli.sh` | 新增 `status {cli}` 子命令:唯讀盤點五種 CLI 的接線點,逐項印出 present 或 missing | | `README.md` | 工具表補上 `status` 的用法、輸出格式與結束碼 | | 三份 manifest | 版本同步 bump 到 0.1.8 | ## 設計重點 - **判讀邏輯與接線共用同一組檔案位置與標記字串**。分兩份實作會各自漂移,體檢說沒接、實際上接著,是最難查的那種錯。 - **結束碼分開 5 與 4**。`unwired`(該接的段落缺了)用 5,沿用既有的 4 代表 failed,兩者語意不同:缺接線是待辦,執行失敗是故障。 - **codex 的 `notify` 位置單獨算一項**。標記段落在、鍵卻被歸進某張表時,codex 讀不到 notify,hook 靜靜失效。只檢查標記會漏掉這種。 - **degraded 不是缺陷**。只有 claude 能到 `wired`,另外四種 CLI 沒有 pre-tool hook,`degraded` 就是它們的健康狀態,回報時照實說明原因。 - kiro 的 hook 檔綁在工作區,`status` 看的一律是目前工作目錄底下那一份,與 `purge` 的行為一致。 ## 測試結果 - `sh -n tools/wire-cli.sh`:通過。 - `status claude`:`status=wired`,exit 0,hooks.json 判定 present。 - `status codex`:`status=degraded`,exit 1,四個接線點(notify、notify-root、alias、ste100)全部 present。 - `status copilot`、`status antigravity`:`status=degraded`,exit 1。 - `status kiro`:`status=unwired`,exit 5,目前工作目錄沒有 `.kiro/hooks/`,兩個檔案都判 missing。 - 未接線路徑:以假家目錄跑 `status codex`,四項全 missing,`status=unwired`、exit 5。 - 用法錯誤:`status bogus` 印用法並 exit 2。 ## 前置 Push Request - 無
jiantw83 added 1 commit 2026-08-26 02:45:18 +00:00
What: wire-cli.sh 新增 status 子命令,只讀設定檔判斷 jsc 標記段落在不在,不寫檔也不執行 hook。每個接線點印一行 item,以 status=wired、degraded、unwired、skipped 回報。
Why: 體檢類技能要問「hook 接線在不在」,但既有三個子命令都會動到環境:不帶子命令會重新接線、purge 會刪掉、smoke 會真的執行 hook。體檢不該有副作用。
How: 沿用底下接線區塊的同一組檔案位置與標記字串,共用 has_block、toml_root_key、json_top_key 三個判讀函式。codex 的 notify 另外單獨檢查是否落在根層,標記在、鍵被歸進表裡時 codex 讀不到,等同沒接。
Who: 供 jsc-cli:doctor 呼叫的接線檢查。
jiantw83 added a new dependency 2026-08-26 02:46:54 +00:00
admin merged commit 388d967aab into develop 2026-08-26 02:51:19 +00:00
admin deleted branch feat/hooks-wire-cli-status 2026-08-26 02:51:19 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/hooks#21