feat(skills): 新增技能盤點頁與共用部署驗證流程,並把技能驗證移到新行程

技能盤點以前只回到對話裡,換一台機器就得重跑才知道裝了什麼。
現在新增技能盤點這個 wiki 頁類型,雜湊取「主機、工具名稱、登入帳號」三段。
每支 CLI 各有自己的 plugin 集合,也各有自己的 hook 接線,那是互相獨立的事實。
少了工具名稱那一段,同一台機器上五支 CLI 會算出同一個雜湊,五份盤點互相覆蓋,
讀的人還看不出被蓋掉。技能盤點新增寫入這兩頁的步驟,整步規定必須開 sub agent。
兩份樣板刻意分開:內容頁每次盤點覆寫整頁,目錄頁只更新自己那一列,
兩者的寫入語意剛好相反,合成一份遲早有人把別台機器的紀錄刪掉。

四支異動技能原本在部署完的同一個工作階段,就叫用剛做好的技能。
部署收尾自己立起重啟閘門,那支技能必被擋下,驗證做不完。
解法不是把它加進豁免清單。豁免擋得住閘門,擋不住「行程還載著舊版」這件事,
硬過關驗到的是舊版行為,等於假通過。所以把判路線、部署、驗證、失敗分流
抽成一份共用說明,驗證一律另開 CLI 行程執行,四支技能只留一行指標指過去。

新增腳本檢查工具,一次做完語法、執行權限與結束碼宣告三項檢查,
只被 source 的函式庫豁免後兩項,而且逐支記在錯誤輸出,不靜默略過。
新增部署路線判定工具,判定改動有沒有進存取庫的預設分支,
取代四支技能各抄一段、各自漂移的散文;判不出來就回報停下,不自己挑路線走。

同時把四支技能裡的中文段落抽到共用說明、指標改回英文,
修正六處相對路徑,把技能盤點的模糊描述改成查得出來的條件,
並讓 manifest 同步的每一個呼叫端逐碼分流。

七支技能改為併行執行:例行稽核從九步併成七步,技能盤點併成六步。
技能盤點不再重跑盤點腳本內部已經跑過的三支腳本,
而那三支原本兼作獨立交叉檢查,拿掉就少一層保護,
所以把少掉的是什麼、風險由誰擋住,明白寫進 Notes,不當作沒發生。
This commit is contained in:
2026-08-31 11:11:12 +08:00
parent 7dc5c32de3
commit 5aa4a3da57
12 changed files with 571 additions and 128 deletions
+31
View File
@@ -0,0 +1,31 @@
# 技能盤點目錄
> 由 `jsc-meta:tooling-guide` 維護。這是目錄頁 `TOOLING_CONTENTS`。
> 一列代表一組「機器、CLI、帳號」。同一台機器裝了幾支 CLI,就有幾列。
> `TOOLING_{HASH}` 的 `{HASH}` 交給 `jsc-gitea/tools/hash-id` 產生,雜湊來源見 `jsc-meta/references/guidelines.md` 的「Wiki 頁命名總表」。
| 盤點頁 | 主機 | 工具 | 帳號 | plugin 數 | 技能數 | hook 接線 | 最後盤點 |
| --- | --- | --- | --- | ---: | ---: | --- | --- |
| [[TOOLING_{HASH}]] | {主機名} | {claude、codex、copilot、antigravity、kiro 五選一} | {登入帳號} | {n} | {n} | {wired、degraded、unwired、unknown 四選一} | {yyyy-MM-dd HH:mm} |
## 欄位說明
| 欄位 | 內容 |
| --- | --- |
| 盤點頁 | 指向 `TOOLING_{HASH}` 的同 wiki 連結 |
| 主機 | 這次盤點的機器名,與雜湊第一段相同 |
| 工具 | CLI 代號,與雜湊第二段相同 |
| 帳號 | 執行盤點的登入帳號,與雜湊第三段相同 |
| plugin 數 | 該頁「已安裝 plugin」表的列數 |
| 技能數 | 該頁「可用技能」表的列數 |
| hook 接線 | 該頁「hook 接線狀態」對這支 CLI 的判定 |
| 最後盤點 | 該頁盤點時間,與內容頁標頭一致 |
## 寫入規則
- 先整頁讀回來,再比對主機、工具、帳號三欄。
- 三欄都相同就更新那一列,其餘欄位覆寫成本次結果。
- 三欄找不到相同的一列,才新增一列。
- 只動自己那一列,別人的列原樣保留。
- 禁止整頁覆蓋。這一頁是共用目錄,覆蓋等於刪掉別台機器的紀錄。
- 讀不到舊內容就中止,不新增列,也不寫入。
+129
View File
@@ -0,0 +1,129 @@
# 技能盤點 — {主機名}/{工具名稱}/{登入帳號}
> 由 `jsc-meta:tooling-guide` 維護。這是盤點頁 `TOOLING_{HASH}`。
> 這頁記的是「現在這台機器上這支 CLI 長什麼樣」。每次盤點覆寫整頁,不保留歷史。
> 覆寫是刻意的:舊的安裝內容與接線狀態早就不成立,留著只會讓人照著過期的事實下判斷。
> 目錄頁 `TOOLING_CONTENTS` 的規則相反,那頁只更新自己那一列,兩者不要混用。
> 要看技能組歷次異動請翻 `SKILLSET_{HASH}`,累積紀錄在那一頁。
## 本次盤點
| 項目 | 內容 |
| --- | --- |
| 盤點時間 | {yyyy-MM-dd HH:mm} |
| 主機 | {主機名} |
| 工具 | {claude、codex、copilot、antigravity、kiro 五選一} |
| 帳號 | {登入帳號} |
| 資料來源 | `meta/tools/inventory-tooling.sh` 單次執行的輸出 |
| plugins 根目錄 | {絕對路徑} |
| marketplace | {絕對路徑} |
> 全頁事實出自上面那一次執行。同一趟不重跑 `list-skills.sh`、`detect-clis.sh` 與 `wire-cli.sh status`,避免同一件事出現兩個答案。
## 資料新鮮度
對應輸出的 `Source freshness` 一節。
| 項目 | 狀態 |
| --- | --- |
| 本機 domain 清單 | {synced、stale accepted、blocked 三選一} |
| marketplace | {絕對路徑} |
## 現況摘要
對應輸出的 `現況摘要` 一節。
| 項目 | 數量 |
| --- | ---: |
| 已註冊 plugin domain | {n} |
| 已掃到技能 | {n} |
| 已偵測 CLI | {n} |
## 已安裝 plugin
對應輸出的 `Supported plugins` 一節。
| domain | 版本 | 本機路徑 |
| --- | --- | --- |
| {domain} | {版本或「缺本機存取庫」} | {絕對路徑} |
## 可用技能
對應輸出的 `Supported skills` 一節。
| domain | skill | 用途 |
| --- | --- | --- |
| {domain} | {技能名} | {一句用途} |
## 已偵測 CLI
對應輸出的 `Supported CLIs` 一節。只留這一頁對應的那支 CLI,其餘 CLI 各自有自己的盤點頁。
| CLI | 執行檔 | 版本 |
| --- | --- | --- |
| {工具名稱} | {絕對路徑} | {版本字串} |
## 可用工具
對應輸出的 `Supported tools` 一節。
| domain | tool | 用途 |
| --- | --- | --- |
| {domain} | {腳本檔名} | {檔頭第二行的說明} |
## hook 管理
對應輸出的 `Hook management` 一節。
| hook | 用途 |
| --- | --- |
| {腳本檔名} | {檔頭第二行的說明} |
## hook 接線狀態
對應輸出的 `Hook wiring status` 一節。只留這一頁對應的那支 CLI。
| CLI | 結束碼 | 狀態 |
| --- | ---: | --- |
| {工具名稱} | {n} | {狀態字串;查不到就寫「未知狀態,結束碼 {n}」} |
## plugin 與技能管理
對應輸出的 `Plugin and skill management` 一節。
| 需求 | 入口 |
| --- | --- |
| 新增技能 | `jsc-meta:skill-new` |
| 更新單一技能 | `jsc-meta:skill-update` |
| 批次更新技能組 | `jsc-meta:skillset-update` |
| 刪除技能 | `jsc-meta:skill-delete` |
| 安裝、更新、移除整組 plugin | `jsc-cli:deploy` |
| 例行稽核 | `jsc-meta:skill-check` |
| 重新接線 hook | `jsc-hooks:hooks-install` |
## 例行檢查
對應輸出的 `Operational checks` 一節。
| 檢查 | 負責的技能或 hook |
| --- | --- |
| 體檢目前環境 | `jsc-cli:doctor` |
| 修復體檢項目 | `jsc-cli:setup` |
| 版本前置檢查 | `jsc-hooks/hooks/version-guard.sh` |
| 部署後重啟閘門 | `jsc-hooks/hooks/restart-gate.sh` |
| 語言提示與掃描 | `jsc-hooks/hooks/ste100-guard.sh`、`jsc-hooks/hooks/lang-guard.sh` |
| 註解範圍檢查 | `jsc-hooks/hooks/comment-scope.sh` |
## 使用時機
對應輸出的 `Use this when` 一節。
- 這頁只回答「這台機器這支 CLI 現在裝了什麼」。
- 要動手安裝、更新或修復,照上面兩張表找對應的入口。
- 盤點時間離現在太久就重跑一次 `jsc-meta:tooling-guide`,不要拿舊頁當現況。
## 已知限制
| 限制 | 說明 |
| --- | --- |
| {限制項目} | {為什麼這一項在這台機器上查不到或不適用} |