核心矛盾:測什麼?

Skill 主體是給 LLM 看的文件。「測試一個 skill」必須分層:

層級測什麼成本
Staticfrontmatter 完整、必要章節存在、無 TODO 殘留毫秒,無 API
Behavioral內附 scripts/ 能正常退出秒,無 API
LLM-driventrigger prompt 能否正確觸發慢、貴、flaky(延後)

MVP 選 Static + Behavioral:cheap、deterministic、能在 sgov bump 前自動跑、能抓 90% 退化。LLM 層留給 Phase 3.1。

三維治理

維度機制
VersionSemVer + tar.gz 快照 + Changelog + 鎖定快照
AuditHook + JSONL + SQLite + sgov audit,新調用即時記錄
Maintainability14 個 rules + default suite + custom spec + bump regression gate

Baseline Sweep 揪出的真問題

1,290 個測試案例,99.77% 通過(1,287/1,290)。 失敗的那幾個正是價值所在:skill-stocktake frontmatter 缺 name:(list 看不出,因為 scan 用目錄名 fallback); perl-testing 內文還有未完成的 TODO:

關鍵教訓

default spec 自動套用:215 個 skill 不可能逐一手寫 spec。預設套件讓 sgov test all 第一天就有用。

規則用裝飾器註冊@rule("name") 一行加一個規則;class 階層對 14 個簡單規則太重。維持 stdlib-only。

逃生口要可稽核:bump gate 允許 --skip-tests,但 audit log 會記錄這個規避事件。

一個壞規則不該炸掉整個 sweep:每個規則包 try/except,crash 視為 fail 並繼續。

來源:個人開發日誌 2026-05-15(Phase 1a–3 + baseline fixes)· v1.0.0 · 3,000+ 行 Python · 215 skills 入冊