相依版本不符改為照樣更新並提醒、新增技能行為清單 #44
1 Participants
Notifications
Due Date
No due date set.
Blocks
#45 收攏技能行為清單與相依版本阻擋改動
plugins/cli
Reference: plugins/cli#44
Reference in New Issue
Block a user
摘要
deploy.sh update原本遇到相依版本不符就跳過那個 domain。跳過會讓落後的 domain 永遠拿不到它在等的相依版本,兩個 domain 互相等就死鎖。這次把阻擋移到技能叫用那一層,改由jsc-hooks的version-guard.sh執行。check-requires.sh同時把「版本落後」與「判不出結論」拆成兩個結束碼,避免環境壞掉被說成版本落後。另外新增references/behaviors.md,當作技能驗證的行為基準。變更內容
references/behaviors.mdtools/deploy.shcheck_requires()的分流。相依版本不符從「印 skip 並跳過該 domain」改成「印 warn 並照樣更新」;判不出結論印note,也照樣更新;只有檢查腳本自己出錯才印skip、跳過該 domain 並記為失敗。檔頭補上warn與compat兩列輸出格式,以及四種結束碼的分流說明tools/check-requires.shstatus一併從blocked改成unknown。檔頭同步記載新的結束碼約定與拆碼理由skills/deploy/SKILL.mdwarn行README.mdcheck-requires.sh那列與deploy技能段落,同步 warn 照樣更新、skip 只留給檢查腳本出錯的新行為plugin.json.claude-plugin/plugin.json.codex-plugin/plugin.json設計重點
jsc-hooks的version-guard.sh擋下該 domain 的技能。note,版本落後走warn,兩者講不同的話。混成同一句,操作者會去補一個根本不存在的版本問題。skip、跳過該 domain 並記為失敗。references/behaviors.md把技能行為寫成可比對的表,技能驗證不再靠人工讀 SKILL.md 推測。測試結果
bash -n tools/deploy.sh與bash -n tools/check-requires.sh:兩支都結束碼 0,語法通過。sh /root/plugins/meta/tools/lint-scripts.sh /root/plugins/cli:結束碼 0,輸出「腳本檢查通過:10 支(語法、可執行、結束碼宣告),其中 0 支判定為函式庫」。sh /root/plugins/meta/tools/check-behaviors.sh /root/plugins/cli:結束碼 0,輸出「行為清單檢查通過:/root/plugins/cli/references/behaviors.md 對上 5 支技能,五個欄位齊全」。sh /root/plugins/meta/tools/ste100-lint.sh掃五個異動檔(references/behaviors.md、tools/deploy.sh、tools/check-requires.sh、skills/deploy/SKILL.md、README.md):結束碼 0,沒有命中。deploy.sh update,也沒有實跑check-requires.sh的四種結束碼。這兩者都會改寫本機各 CLI 的外掛安裝狀態,不是唯讀操作,本次只做唯讀檢查。shellcheck未安裝在這台機器,因此沒有跑靜態檢查。前置 Push Request