iT邦幫忙

2026 iThome 鐵人賽

0
Claude AI

把 Claude 練成專家:30 天打造可驗證的 Agent Skills系列 第 29 篇

Day 30|30 天總結:讓 Skill 可驗證、可發布,也能持續維護

  • 分享至 

  • xImage
  •  

從一段指令,到一份可以驗收的契約
這個系列從「agent 為什麼需要 Skill」出發,逐步拆出範圍、輸入、來源、程式、測試、安裝與維護。走到 Day 30,我想保留的不是「寫完一份 SKILL.md」,而是讓每一個結論都有可以回頭檢查的依據。

ticket-source-guard 是本系列的教學案例。它不是購票工具,也不替票券真偽背書;它示範如何把來源查核的邊界寫成能測試的契約。以下回顧整理設計方法,不宣稱已交付一個經過完整測試的公開產品。

第一段:先說清楚什麼不做
前幾天先區分 Skill、prompt、工具介面與不同的工作分工,再固定範圍與觸發條件。SKILL.md 不是越長越好;description 要讓 agent 知道什麼時候該用,正文則說明怎麼完成,以及何時必須停下。

Agent Skills 規格定義以 SKILL.md 為核心的目錄結構,並區分 metadata、指令與按需載入的資源。規格提供共同格式,但不會替使用者決定業務邊界,也不保證結果正確。

本系列採用的邊界很明確:查核來源,不做交易;依證據分類,不用肯定語氣替未知補洞。

第二段:把判斷放進能重現的程式
來源資料不只是域名清單。還需要有效期、來源依據、維護責任與例外規則。URL 解析、host 正規化、registry 載入和分類,適合拆成 deterministic script,避免每次靠文字臨場猜測。

輸入
→ 固定解析規則
→ 有版本的來源資料
→ 狀態、理由與證據
→ 受限制的 next_step

REGISTERED_SOURCE 表示符合本範例的登錄條件,不是安全購買保證。UNCONFIRMED 表示尚未確認,不是已證明欺詐。狀態與自然語言之間的這條界線,要一路留到最後回答。

第三段:測試不只看程式有沒有跑完
固定日期與合成 fixture,能讓邊界案例不隨今天的日期漂移。schema 檢查管欄位與型別;script 測試管分類與退出碼;任務型 eval 再確認最後文字有沒有保留理由、未知與下一步。

pytest 支援一般 assert,也可用 pytest.raises 檢查預期例外。但測試工具不會替我們選擇正確的契約;測到什麼,仍由案例設計決定。

不同證據,回答不同問題
格式驗證:檔案與 metadata 合規嗎?
script 測試:固定輸入得到預期結果嗎?
任務 eval:完整路徑保留限制了嗎?
安裝驗收:讀者照文件能重現嗎?

不要讓一種證據冒充另一種。格式正確不是行為正確,通過 smoke test 也不是完整驗收。

第四段:發布與安裝也是契約的一部分
後半段處理漸進式揭露、發行物、陌生環境安裝、diff 審查與 CI。發布的不是開發者腦中記得的做法,而是讀者實際拿到的檔案、版本、文件與限制。

被索引或被找到,不能推導成被認證。CLI 提供的更新機制,也不能代替我們檢查更新後的差異與相容性。像 vercel-labs/skills README 所記錄的 skills update,是更新已安裝內容的工具操作,不是品質或安全保證。

Day 29 的最後驗收把這些層次串起來:從需求到安裝,再到完整任務結果,確認驗證紀錄對應最後發行物。

第五段:維護讓證據不會偷偷失效
Day 26 到 Day 28 處理測試責任、來源重驗與失敗回歸。程式沒有改,來源也可能過期;來源沒有改,環境與依賴仍可能變動。

維護紀錄至少要回答:誰負責、什麼時候重驗、用什麼版本、哪個 case 失敗、什麼還沒修好。回退能限制影響,但不能復活撤銷來源,也不能把根因未明寫成結案。

下一個版本的最小循環

收到變更或失敗
→ 固定版本與最小案例
→ 重驗受影響的契約
→ 比對最後發行物
→ 記錄結果與剩餘限制
→ 更新文件及下一次重驗條件

這個循環不要求每次重做全部事情,但要求每個「已驗證」都能指向具體版本與證據。

30 天後,我會留下什麼
不是一個永遠正確的 Skill,而是一個可以被反駁、被修正、被重新驗證的設計。需求說得清楚,失敗就能留下案例;版本固定,結果才有意義;未知被保留,使用者才不會把語氣當保證。

系列收尾清單

[ ] 範圍、觸發與停止條件有文字契約
[ ] scripts、來源資料與 schema 有明確版本
[ ] 邊界案例與任務 eval 留有逐筆結果
[ ] README、發行物與驗證版本互相對得上
[ ] 來源重驗與維護責任有人接手
[ ] 已知限制與未測項目沒有消失

如果要繼續做下一版,我會先挑一個尚未驗證的環境或失敗案例,走完這個循環,而不是先加更多功能。

參考資料
https://agentskills.io/specification
https://docs.pytest.org/en/stable/how-to/assert.html
https://github.com/vercel-labs/skills?tab=readme-ov-file

謝謝一路讀到這裡。30 天的文章可以結束,版本、來源與測試的維護不會因此結束。


上一篇
Day 29|發布前的最後驗收:從需求、安裝到任務結果
系列文
把 Claude 練成專家:30 天打造可驗證的 Agent Skills 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言