Skills 襲捲整個軟體業已經不是一兩天的事,自從 skills 的出現,我們把本來對於 MCP 的狂熱,轉移到處處搜刮別人推薦的 skills,俗話說「技多不壓身」,那 skills 是不是也是多多益善呢?
什麼是 Skills
剛開始轉移到 skills 時,我對於 skills 的刻板印象還停留在
.md 的文件檔,想說這不就是把常用的 prompt 文件化,減去重複輸入類似指令的麻煩?
然而 markdown 僅僅是 skills 的一小部分,skills 的資料夾內還可以包含 scripts、assets、data 等多類型的檔案,讓後續 agent 在操作時,可以進行更複雜的運用。
官方也推薦了這三份文件,作為學習 skills 的入門:
- Introduction to agent skills
- Extend Claude with skills
- Improving skill-creator: Test, measure, and refine Agent Skills
Skills 有哪些種類
隨著我們收集(搜刮?)的 skills 越來越多,不僅 skills 的資料夾變得越來越龐雜,來自各方的 skills 也可能相互重複,這時我們會需要一套分類系統,來整歸放這些 skills,雖然官方沒有硬性的分類方式,但會建議「一個 skills 只存放在一個種類資料夾內」。
Claude 工程師 Thariq 也在 Lessons from Building Claude Code: How We Use Skills 一文中,提供下面幾種類別的分類方式,讓毫無頭緒的 P 人們,可以有個初步整理概念:
Library & API Reference
用於教導 Claude Code 如何正確使用套件、函式庫、CLI、SDK 等,避免他們在操作上亂用或是使用錯誤的版本。
通常這些 skills 裡面也會方一些參考用的程式代碼片段(reference code snippets),以及常見的錯誤(gotchas)與對應的解法,讓 agents 可以避開這些地雷。
- 極端案例(edge case)、容易踩雷的狀況
- 每一個指令的案例與使用情境
- 設計系統的規劃
Product Verification
用於驗證 agent 所產出的結果是否和預期的,也因為要有一個能對照的結果,通常會搭配 playwright、tmux 這類可以操作瀏覽器、終端機的套件,來模擬人類的行為,確認最終的結果是否正確。
我們甚至可以透過 skill 裡面預先寫好的 script,讓 agent 將結果進行錄影或是進行斷言驗證,確保最終的結果正確無誤。
- 除了跑測試,也需要定義功能流程的成功標準,讓 agent 可以在每個步驟進行驗證
- 不單是 UI 上的操作,同時也要確認狀態的轉換是否正確
- 讓 agent 可以模擬 CLI input 並讀取對應的 output
Data & Analysis
讓 agent 可以連接資料庫與類似 Grafana 的監控工具,並且提供資料庫的操作方法進而取得資料,並且進行分析與處理資料。
Business Automation
這邊只要放置那些將「重複性作業」化為單一指令的 skills,這些 skills 本身看起來其實不複雜,更像是一連串簡單的操作步驟,但操作的過程中有可能會需要倚賴其他的套件與 MCP,像是:「將先前的輸出結果存為 log 檔案留存」等。
Scaffolding & Templating
這類型的 skills 通常用於快速建立模板或框架,通常這些 skills 中會搭配 scripts 協助使用者建立與設定專案,而這些 skills 存在的意義,也是為了滿足我們在開發過程中,有一些需求與其用程式碼說明,用熟悉的自然語言說明會來得更為輕鬆。
Code Quality & Review
相較於每位工程師對於程式審查的標準各不相同,透過 skills 可以將團隊審查的內容、方向標準化,像是有些工程師會將程式碼審查的工作交付給多個 sub-agent,讓他們彼此相互檢查、討論,直到重大問題都解決。這通常也會搭配一些 scripts 或是 lint 工具進行 code-style 驗證,我們甚至可以把這些 skills 改造成 hook 或是 GitHub Actions 的其中一環。
CI/CD & Deployment
主要用於 fetch、push、deploy 等部署更新的 skills,這些 skills 有時候也包含了搜集部署過程中的訊息,以便解決其中發生的錯誤。
Incident Runbooks
像我們做筆記一樣,這類型的 skills 主要用於記錄各式錯誤與狀況,並透過跨系統、多工具的方式進行排查,然後產出一份清晰明確的診斷紀錄,這份紀錄不僅說明了錯誤原因、影響範圍、建議的修復方式,甚至也可以給未來遇到類似錯誤時,作為參考資料。
Infrastructure Ops
這類型的 skills 主要用於日常維運的操作,其中通常會對一些破壞性的操作設下防護限制,一方面可以減輕工程師的負擔,另一方面也可以避免因為操作錯誤導致的災難性後果。
根據這些分類方式,其實隱隱約約能感受到,這就像依照軟體開發的進程,把工程師平常工作內容與學習的技能進行切分,而如果把這邊的每一個類別各用一句表示:
- 如何做事情並且把事情做對
- 判斷哪些事情有價值
- 哪些事情需要再優化
- 把例行公事、重複性的任務變得標準化、自動化
- 將最佳實踐(best practices)固化為模板,維持一致的品質
- 進行審查與修正,確保程式碼的正確與質量
- 將程式安全部署上線
- 紀錄 debug 經驗並記取教序
- 進行日常維運管理
在運用 AI 進行開發的進程裡,從最初我們只是把 AI 當作迅速找尋答案的工具,省去我們自己在 StackOverflow 爬文,到嫁接 MCP 允許 AI 能夠透過協議介面,以自然語言操作特定軟體,到現在我們像是「打造一個 AI 工程師」。
這種旅程裡,我們可以清楚感受到自己「手寫」的程式碼變少許多,然而對於知識的需求與焦慮卻是翻倍增加,感覺每一種技術我們都需要了解其原理,知道怎麼搭配才能最有效率地解決問題,我們像是從本來只需要精通一種風格的廚師,變成要熟稔各種食材組合的主廚,有種每天都有東西要認識,雖然苦痛卻也很興奮。