develop
master
技能組的每一支技能在被呼叫前,先確認本機版本沒有落後遠端發佈版本;落後就擋下該次呼叫並提示更新指令。
判定在程式層——新增 hooks/version-guard.sh,掛在 PreToolUse(matcher Skill)。寫在技能內文的規則模型可以無視,只有 hook 擋得住。
hooks/version-guard.sh
PreToolUse
Skill
版本取值:比對的是遠端發佈版本與本機實際載入的版本。實際載入版本要讀 installed_plugins.json 的 installPath 底下那份 plugin.json,不能只看註冊欄位——兩者可能不同,只看註冊值會放過真正被載入的舊版。
installed_plugins.json
installPath
plugin.json
遠端站台從已註冊的 jsc marketplace 來源推導(known_marketplaces.json),其次才用 GITEA_HOST。查詢走公開 raw 路徑,不需要 token。
jsc
known_marketplaces.json
GITEA_HOST
jsc-cli:deploy
jsc-hooks:hooks-install
jsc-cli:models
model-tags.tsv
jsc-meta:*
JSC_VERSION_GUARD=off
JSC_VERSION_TTL
$JSC_HOME/version-cache/{domain}
實測六種情境全部符合預期:非 jsc 技能放行、四類豁免放行、逃生門放行,以及真實命中一次——本機 jsc-sdlc 0.0.8 對遠端 0.0.9,擋下並印出更新指令:
jsc-sdlc
[jsc][版本檢查][ERR]:jsc-sdlc 本機版本 0.0.8 落後遠端發佈版本 0.0.9,本次技能呼叫已擋下 更新指令:claude plugin marketplace update jsc && claude plugin update jsc-sdlc@jsc 更新整組:/jsc-cli:deploy | 確定要略過檢查:JSC_VERSION_GUARD=off
sh -n、hooks.json JSON 格式、STE100 lint 均通過。
sh -n
hooks.json
沒有 pre-tool hook 的 CLI(codex、copilot、kiro、antigravity)接不上這道檢查。hooks-install 已寫明要據實回報,不得暗示每個 CLI 都有保護。
hooks-install
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
變更摘要
技能組的每一支技能在被呼叫前,先確認本機版本沒有落後遠端發佈版本;落後就擋下該次呼叫並提示更新指令。
判定在程式層——新增
hooks/version-guard.sh,掛在PreToolUse(matcherSkill)。寫在技能內文的規則模型可以無視,只有 hook 擋得住。判準
master,擋下去維護者自己動不了版本取值:比對的是遠端發佈版本與本機實際載入的版本。實際載入版本要讀
installed_plugins.json的installPath底下那份plugin.json,不能只看註冊欄位——兩者可能不同,只看註冊值會放過真正被載入的舊版。遠端站台從已註冊的
jscmarketplace 來源推導(known_marketplaces.json),其次才用GITEA_HOST。查詢走公開 raw 路徑,不需要 token。豁免清單
jsc-cli:deployjsc-hooks:hooks-installjsc-cli:modelsmodel-tags.tsvjsc-meta:*逃生門與快取
JSC_VERSION_GUARD=off完全略過檢查(離線工作用)。fail-closed 沒有逃生門會讓離線時整組技能停擺。JSC_VERSION_TTL遠端查詢的快取秒數,預設 600。快取放$JSC_HOME/version-cache/{domain},避免每次呼叫都打網路。驗證
實測六種情境全部符合預期:非 jsc 技能放行、四類豁免放行、逃生門放行,以及真實命中一次——本機
jsc-sdlc0.0.8 對遠端 0.0.9,擋下並印出更新指令:sh -n、hooks.jsonJSON 格式、STE100 lint 均通過。注意事項
沒有 pre-tool hook 的 CLI(codex、copilot、kiro、antigravity)接不上這道檢查。
hooks-install已寫明要據實回報,不得暗示每個 CLI 都有保護。