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

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

摘要

  • 需求描述:jsc-meta:skill-check 例行稽核(2026-08-25)。本 repo 修掉資料遺失風險:還原步驟用 git clean -fd 刪除未追蹤檔案,卻引用一個從未實作的前提當安全依據;良性退碼也會被路由到那條還原路徑。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
skills/pkg-update/SKILL.md 步驟 2 補上真實指令與完成條件,明確要求 git status --porcelain 零輸出(含 ?? 未追蹤列)才能繼續;退碼路由改成表格,良性退碼一律 report and stop,不再進還原;還原步驟據實說明 gitignore 路徑不會被清掉;每個步驟補完成條件
tools/install-deps.sh 「找不到專案目錄」從 exit 3 拆成 exit 6(停手),exit 3 只保留「這個生態沒有相依來源檔」(跳過);補參數個數檢查;來源檔檢查移到指令檢查之前
tools/build-test.sh 補 python3 檢查;「找不到專案目錄」對齊 exit 6
tools/apply-version.sh 補目錄檢查(原本路徑打錯會回 exit 3 被當成跳過);補 python3 檢查
tools/list-packages.sh 補目錄檢查(原本路徑打錯回 exit 0 加零筆,步驟 1 會誤讀成「沒有套件」);補 python3 檢查
tools/latest-version.sh 補 curl 與 python3 檢查;補完整退碼說明
README.md 新增「結束碼總表」作為退碼慣例的單一來源,並要求新工具沿用
三份 manifest、兩份 marketplace 同步升版至 0.0.5,marketplace 與正本對齊

設計重點

  • 破壞性指令的前提必須自己成立,不能只在註解裡宣稱。原本步驟 5 寫「步驟 2 已證明工作樹乾淨」,但步驟 2 沒有指令、沒有完成條件,而且用「uncommitted changes」措辭,並不明確涵蓋未追蹤檔案——偏偏 git clean -fd 刪的就是未追蹤檔案。
  • 良性退碼不該走破壞性路徑。「這個生態沒有相依來源檔」是缺輸入,不是失敗;把它和真正的失敗混在一起,會讓一次零失敗的執行刪掉使用者的未追蹤檔案。
  • 一個數字一個意思。拆退碼時發現 apply-version.sh 與 list-packages.sh 也有同一類 bug 還活著,一併修掉。

測試結果

  • 實測:工作樹有未追蹤檔案時流程停在步驟 2,git clean -fd 走不到,檔案仍在;非 git 目錄 rev-parse exit 128 也停手。
  • 實測每支工具對「找不到專案目錄」都回 exit 6;exit 3 只在「目錄存在但沒有來源檔」出現。
  • python3 缺席時的 before/after:build-test.sh 由誤報 exit 5(無法推斷指令)改為 exit 4;latest-version.sh 由 exit 4(誤報套件不在註冊庫、會靜默跳過每個套件)改為 exit 5;list-packages.sh 由 exit 0 零筆改為 exit 4。
  • 還原範圍實測:追蹤檔還原、未追蹤 lock 檔移除、gitignore 的 node_modules 留存——與步驟 5 現在的敘述一致。
  • sh -n 與 dash -n 全部通過;ste100-lint.sh exit 0。

前置 Push Request

  • 無
## 摘要 - 需求描述:jsc-meta:skill-check 例行稽核(2026-08-25)。本 repo 修掉資料遺失風險:還原步驟用 `git clean -fd` 刪除未追蹤檔案,卻引用一個從未實作的前提當安全依據;良性退碼也會被路由到那條還原路徑。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `skills/pkg-update/SKILL.md` | 步驟 2 補上真實指令與完成條件,明確要求 `git status --porcelain` 零輸出(含 `??` 未追蹤列)才能繼續;退碼路由改成表格,良性退碼一律 report and stop,不再進還原;還原步驟據實說明 gitignore 路徑不會被清掉;每個步驟補完成條件 | | `tools/install-deps.sh` | 「找不到專案目錄」從 exit 3 拆成 exit 6(停手),exit 3 只保留「這個生態沒有相依來源檔」(跳過);補參數個數檢查;來源檔檢查移到指令檢查之前 | | `tools/build-test.sh` | 補 python3 檢查;「找不到專案目錄」對齊 exit 6 | | `tools/apply-version.sh` | 補目錄檢查(原本路徑打錯會回 exit 3 被當成跳過);補 python3 檢查 | | `tools/list-packages.sh` | 補目錄檢查(原本路徑打錯回 exit 0 加零筆,步驟 1 會誤讀成「沒有套件」);補 python3 檢查 | | `tools/latest-version.sh` | 補 curl 與 python3 檢查;補完整退碼說明 | | `README.md` | 新增「結束碼總表」作為退碼慣例的單一來源,並要求新工具沿用 | | 三份 manifest、兩份 marketplace | 同步升版至 0.0.5,marketplace 與正本對齊 | ## 設計重點 - 破壞性指令的前提必須自己成立,不能只在註解裡宣稱。原本步驟 5 寫「步驟 2 已證明工作樹乾淨」,但步驟 2 沒有指令、沒有完成條件,而且用「uncommitted changes」措辭,並不明確涵蓋未追蹤檔案——偏偏 `git clean -fd` 刪的就是未追蹤檔案。 - 良性退碼不該走破壞性路徑。「這個生態沒有相依來源檔」是缺輸入,不是失敗;把它和真正的失敗混在一起,會讓一次零失敗的執行刪掉使用者的未追蹤檔案。 - 一個數字一個意思。拆退碼時發現 `apply-version.sh` 與 `list-packages.sh` 也有同一類 bug 還活著,一併修掉。 ## 測試結果 - 實測:工作樹有未追蹤檔案時流程停在步驟 2,`git clean -fd` 走不到,檔案仍在;非 git 目錄 `rev-parse` exit 128 也停手。 - 實測每支工具對「找不到專案目錄」都回 exit 6;exit 3 只在「目錄存在但沒有來源檔」出現。 - python3 缺席時的 before/after:`build-test.sh` 由誤報 exit 5(無法推斷指令)改為 exit 4;`latest-version.sh` 由 exit 4(誤報套件不在註冊庫、會靜默跳過每個套件)改為 exit 5;`list-packages.sh` 由 exit 0 零筆改為 exit 4。 - 還原範圍實測:追蹤檔還原、未追蹤 lock 檔移除、gitignore 的 `node_modules` 留存——與步驟 5 現在的敘述一致。 - `sh -n` 與 `dash -n` 全部通過;`ste100-lint.sh` exit 0。 ## 前置 Push Request - 無
jiantw83 added 3 commits 2026-08-25 07:03:51 +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 4bf662ce0b into develop 2026-08-25 07:15:17 +00:00
admin deleted branch fix/skillset-audit-compliance-and-guard-fixes 2026-08-25 07:15:17 +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/pkg#7