fix/skillset-audit-compliance-and-guard-fixes #15

Merged
admin merged 3 commits from fix/skillset-audit-compliance-and-guard-fixes into develop 2026-08-25 07:15:00 +00:00
Member

摘要

  • 需求描述:jsc-meta:skill-check 例行稽核(2026-08-25)。本 repo 修掉四個 blocker:版本閘門在非 Claude 機器擋死所有技能呼叫、codex 的 notify 寫進錯誤的 TOML 層級而永遠失效、閘門完全沒接環境變數輸入、接線腳本對沒有護欄的 CLI 謊稱 wired。另修 SDLC 模型標籤查表撿錯列。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
hooks/version-guard.sh 只有「本機落後遠端」才擋;查不到本機版本、站台、遠端版本一律安靜放行(exit 0)。三段 python3 heredoc 改純 shell。遠端查詢改走 gitea.sh,不再自行 curl、不寫死 master。補環境變數輸入。report 改用同一份快取與 TTL,並在沒有註冊表時印 noregistry
hooks/sdlc-gate.sh 模型標籤查表改成完全相符優先、其次最長前置碼;移除反向包含,gpt-5.x 不再被 gpt-5.x-mini 撿走標籤
hooks/lib.sh 新增 jsc_gitea_sh() 與 cli_bin(),CLI 代號到執行檔的對應收成單一來源
hooks/session-timer.sh 新增 restart,供無法提供 session id 的 CLI 在 sessionStart 重置計時
tools/wire-cli.sh notify 區塊插在第一個 TOML table 之前;copilot、antigravity 改回報 degraded;寫檔後自我驗證才回報 wired;補 command -v claude;rc 檔寫入失敗不再被吞掉
tools/jsc-wrap.sh 改執行 cli_bin 對應的真實執行檔,antigravity 不再因為找不到 antigravity 而回 127
tools/report-error.sh 新增。補上 ERROR 頁的產生者,走 gitea.sh 的 wiki-repo ERROR 解析
skills/hooks-install/SKILL.md 刪掉與腳本重複的退碼與設定檔路徑表,補完成條件與 report-error 呼叫步驟
README.md、AGENTS.md 五支 hook 的覆蓋範圍據實敘述,補 JSC_WIKI_REPO_ERROR 與 restart
三份 manifest、兩份 marketplace 同步升版至 0.0.11,marketplace 與正本對齊

設計重點

  • 版本閘門的護欄不該變成故障點。本機版本、站台、遠端版本全部讀自 Claude 專屬檔案與 Gitea API,沒裝 Claude 或離線的機器一筆都拿不到;原本的 fail-closed 等於在沒有任何版本證據時停掉每一次技能呼叫。現在只有「確定落後」才擋。
  • 不退回 installed_plugins.json 的註冊 version 欄位。註冊值可能比實際載入的版本新,拿它比對會放過真正被載入的舊版;寧可查不到而放行。
  • codex 的 notify 是 root 層級的鍵。附加到檔尾會掉進最後一個 table,而且檔案照樣是合法 TOML,所以不會報錯、只會靜默失效——驗證因此移進腳本本身,寫完重讀確認位置正確才回報 wired。

測試結果

  • 隔離環境(env -i HOME=$(mktemp -d) 加 stub 執行檔)驗證:非 Claude 機器呼叫非豁免技能 exit 0;本機版本落後時仍 exit 2 並印出該 CLI 對應的更新指令(codex、antigravity、kiro、claude、copilot 五種各驗)。
  • 環境變數輸入:TOOL_NAME=Skill SKILL=jsc-ask:ask 現在會被看到;修改前同一輸入 exit 0。
  • TOML 位置:以結尾為 [mcp_servers.fs] 的設定實測,notify 落在 root,mcp_servers.fs 無 notify;重跑兩次仍只有一組標記。既有錯位的區塊會被修正。
  • 標籤查表 before/after:gpt-5.x 由 coding,fast,cheap 修正為含 reasoning-max 的自己那列,gpt-5.x-mini 與帶日期的 claude-haiku-4-5-20251001 不受影響。
  • sh -n 全部通過;ste100-lint.sh exit 0;hooks/ 底下已無 python3。

前置 Push Request

  • 無
## 摘要 - 需求描述:jsc-meta:skill-check 例行稽核(2026-08-25)。本 repo 修掉四個 blocker:版本閘門在非 Claude 機器擋死所有技能呼叫、codex 的 notify 寫進錯誤的 TOML 層級而永遠失效、閘門完全沒接環境變數輸入、接線腳本對沒有護欄的 CLI 謊稱 wired。另修 SDLC 模型標籤查表撿錯列。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `hooks/version-guard.sh` | 只有「本機落後遠端」才擋;查不到本機版本、站台、遠端版本一律安靜放行(exit 0)。三段 python3 heredoc 改純 shell。遠端查詢改走 gitea.sh,不再自行 curl、不寫死 master。補環境變數輸入。`report` 改用同一份快取與 TTL,並在沒有註冊表時印 `noregistry` | | `hooks/sdlc-gate.sh` | 模型標籤查表改成完全相符優先、其次最長前置碼;移除反向包含,`gpt-5.x` 不再被 `gpt-5.x-mini` 撿走標籤 | | `hooks/lib.sh` | 新增 `jsc_gitea_sh()` 與 `cli_bin()`,CLI 代號到執行檔的對應收成單一來源 | | `hooks/session-timer.sh` | 新增 `restart`,供無法提供 session id 的 CLI 在 sessionStart 重置計時 | | `tools/wire-cli.sh` | notify 區塊插在第一個 TOML table 之前;copilot、antigravity 改回報 degraded;寫檔後自我驗證才回報 wired;補 `command -v claude`;rc 檔寫入失敗不再被吞掉 | | `tools/jsc-wrap.sh` | 改執行 `cli_bin` 對應的真實執行檔,antigravity 不再因為找不到 `antigravity` 而回 127 | | `tools/report-error.sh` | 新增。補上 ERROR 頁的產生者,走 gitea.sh 的 wiki-repo ERROR 解析 | | `skills/hooks-install/SKILL.md` | 刪掉與腳本重複的退碼與設定檔路徑表,補完成條件與 report-error 呼叫步驟 | | `README.md`、`AGENTS.md` | 五支 hook 的覆蓋範圍據實敘述,補 `JSC_WIKI_REPO_ERROR` 與 `restart` | | 三份 manifest、兩份 marketplace | 同步升版至 0.0.11,marketplace 與正本對齊 | ## 設計重點 - 版本閘門的護欄不該變成故障點。本機版本、站台、遠端版本全部讀自 Claude 專屬檔案與 Gitea API,沒裝 Claude 或離線的機器一筆都拿不到;原本的 fail-closed 等於在沒有任何版本證據時停掉每一次技能呼叫。現在只有「確定落後」才擋。 - 不退回 `installed_plugins.json` 的註冊 version 欄位。註冊值可能比實際載入的版本新,拿它比對會放過真正被載入的舊版;寧可查不到而放行。 - codex 的 notify 是 root 層級的鍵。附加到檔尾會掉進最後一個 table,而且檔案照樣是合法 TOML,所以不會報錯、只會靜默失效——驗證因此移進腳本本身,寫完重讀確認位置正確才回報 wired。 ## 測試結果 - 隔離環境(`env -i HOME=$(mktemp -d)` 加 stub 執行檔)驗證:非 Claude 機器呼叫非豁免技能 exit 0;本機版本落後時仍 exit 2 並印出該 CLI 對應的更新指令(codex、antigravity、kiro、claude、copilot 五種各驗)。 - 環境變數輸入:`TOOL_NAME=Skill SKILL=jsc-ask:ask` 現在會被看到;修改前同一輸入 exit 0。 - TOML 位置:以結尾為 `[mcp_servers.fs]` 的設定實測,notify 落在 root,`mcp_servers.fs` 無 notify;重跑兩次仍只有一組標記。既有錯位的區塊會被修正。 - 標籤查表 before/after:`gpt-5.x` 由 `coding,fast,cheap` 修正為含 `reasoning-max` 的自己那列,`gpt-5.x-mini` 與帶日期的 `claude-haiku-4-5-20251001` 不受影響。 - `sh -n` 全部通過;`ste100-lint.sh` exit 0;`hooks/` 底下已無 python3。 ## 前置 Push Request - 無
jiantw83 added 3 commits 2026-08-25 07:03:49 +00:00
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、
把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。

Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。
完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。

How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有
documented exit codes,並以真實執行驗證每條路徑。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
What:更新 README、AGENTS.md、templates 與 references,讓文件敘述與實際行為一致。

Why:稽核發現多處文件與程式行為分歧,違反「每個意義只有單一真實來源」。

How:以實際程式行為為準改寫敘述,重複的規則收成單一來源並以一行指引指過去。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
What:三份 plugin manifest 版本同步 bump,兩份 marketplace 檔與 plugins/meta 正本對齊。

Why:準則要求技能異動必須同步升版;marketplace 副本必須與正本完全一致。

How:以 jsc-meta 的 tools/sync-skill-manifest.sh 升版,marketplace 檔由正本複製。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
admin merged commit 8fc1f18c31 into develop 2026-08-25 07:15:00 +00:00
admin deleted branch fix/skillset-audit-compliance-and-guard-fixes 2026-08-25 07:15:00 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/hooks#15