寫好一個 Skill 有多難?Anthropic 踩了幾百個坑之後的答案

作者:Feisky
日期:2026年3月18日 下午2:21
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

寫好 Claude Code Skill 嘅核心:善用文件系統、Gotchas 同避免寫 Claude 已知嘅嘢

整理版摘要

呢篇文章係 Anthropic 工程師 Thariq 分享佢哋內部用咗幾百個 Skill 之後嘅經驗。佢想解決嘅問題係:好多開發者以為 Skill 係一個 Markdown 文件,但其實用好 Skill 嘅關鍵係充分利用文件夾結構、配置同埋動態 Hook。整體結論係:寫好 Skill 唔靠初始版本多完整,而係靠不斷補充 Gotchas(踩坑清單),同埋記住「唔好寫 Claude 已知嘅嘢」。

Thariq 將內部嘅 Skill 分成 9 類,包括庫參考、驗證、數據分析、自動化、腳手架、代碼質素、CI/CD、Runbook 同基礎設施運維。佢認為最好嘅 Skill 通常乾淨利落地屬於某一類,而橫跨多類反而會令人困惑。佢特別強調驗證類同自動化類最易見效,因為佢哋解決嘅係每日重複嘅痛點。

至於點樣寫好 Skill,Thariq 提出咗幾個原則:首先,重點放喺 Claude 唔識嘅嘢,例如內部約定同踩坑經驗;其次,善用文件系統做漸進式披露,例如將詳細 API 拆到獨立文件;另外,description 字段要寫俾模型睇嘅觸發條件,而唔係俾人睇嘅摘要;最後,可以透過儲存數據實現記憶,同埋放腳本俾 Claude 組合使用。呢啲原則好多都係踩過坑先領悟到嘅。

  • Skill 係一個文件夾,唔係單一 Markdown 文件;善用文件夾結構同配置先叫用好。
  • Anthropic 將 Skill 分為 9 類,驗證類同業務流程自動化類最易見效,建議團隊從呢度入手。
  • 必寫 Gotchas 清單,記錄 Claude 成日犯嘅錯,隨住使用不斷補充,呢個先係 Skill 嘅真正價值
  • 唔好寫 Claude 已知嘅編碼規範或最佳實踐,要專注於團隊特有嘅知識同內部約定。
  • description 字段要寫明「咩時候觸發」,而唔係「呢個 Skill 做咩」,咁樣模型先會準確調用。
值得記低
連結 x.com

Thariq 原文

Anthropic 工程師 Thariq 發佈嘅原文,詳細講述寫好 Claude Code Skill 嘅經驗。

連結 code.claude.com

Claude Code Skills 文檔

官方文檔,包含 Skill 嘅完整配置參考同 frontmatter 說明。

連結 anthropic.skilljar.com

Agent Skills 課程

Anthropic 官方提供嘅 Agent Skills 課程,適合進階學習。

連結 claude.com

Skill Creator 博客

Anthropic 關於 Skill Creator 嘅官方博客,介紹點樣測試、衡量同改進 Agent Skills。

整理重點

先糾正一個常見誤解:Skill 係文件夾,唔係單一 Markdown

好多人以為 Skill 就係一個 SKILL.md 文件,但其實呢個只係最基本嘅用法。Skill 嘅本質係一個文件夾,入面可以放 腳本、數據、模板、配置,Claude 可以主動發現、探索同操作呢啲文件。

另外,Skill 仲支援好多配置選項,包括動態註冊 HookAnthropic 內部用得最好嘅 Skill,恰恰係充分利用咗文件夾結構同配置選項嘅。

整理重點

9 類 Skill:睇下你嘅團隊仲缺邊啲

Thariq 將內部所有 Skill 盤點之後,發現大致可以歸為 9 類。最好嘅 Skill 通常乾淨利落地屬於某一類,而令人困惑嘅 Skill 往往橫跨好幾類。呢個分類可以當作自查清單:

  • 庫同 API 參考:教 Claude 正確使用某個庫、CLISDK,通常附帶代碼片段同踩坑清單。
  • 產品驗證:配合 Playwright、tmux 等工具驗證代碼正確性,Thariq 認為值得工程師花一週打磨。
  • 數據獲取與分析:連接到數據同監控系統,包含帶憑據嘅腳本、Dashboard ID 同常見查詢。
  • 業務流程自動化:將重複工作流一鍵化,例如自動生成 standup 並發到 Slack,依賴其他 Skill 或 MCP
  • 代碼腳手架:為特定功能生成框架代碼,尤其適合有自然語言需求嘅場景。
  • 代碼質量與審查:強制執行團隊編碼標準,可透過 HookGitHub Action 自動觸發。
  • CI/CD 與部署:監控 PR、自動重試 flaky CI、解決合併衝突、灰度發佈自動回滾。
  • Runbook:從症狀出發,走多工具調查流程,輸出結構化報告,將 on-call 經驗沉澱。

如果團隊啱開始用 Skill,可以從呢個清單出發,睇下邊幾類最快產生價值。我個人覺得驗證類同業務流程自動化類最易見效,因為佢哋解決嘅係每日重複嘅痛點。

整理重點

點樣先寫好一個 Skill?六大原則幫你避開常見嘅坑

Anthropic 最近發佈咗 Skill Creator 簡化創建,但即使有工具輔助,下面呢啲原則仍然要靠自己把握。

重點一:唔好寫 Claude 已經知道嘅嘢。

Claude 本身識好多編程知識,所以 Skill 應該專注喺能夠將佢推出預設思維模式嘅資訊。例如 frontend-design Skill 會教 Claude 避免 AI 審美(例如 Inter 字體配紫色漸變),呢啲先係需要糾正嘅地方,而唔係「請寫出高質量代碼」。

重點二:好好寫 Gotchas 部分。

任何 Skill 入面信息量最高嘅就係 Gotchas(踩坑清單)。將 Claude 使用你嘅 Skill 時成日犯嘅錯記低,隨住使用不斷補充。我自己寫 Skill 嘅經驗都係:一開始二三十行,用咗一個月之後 Gotchas 部分比正文仲長。

重點三:用好文件系統同漸進式披露。

整個文件系統係 漸進式披露 嘅手段。喺 SKILL.md 話俾 Claude 知呢個 Skill 有咩文件,佢會喺適當時候去讀。最簡單係將詳細函數簽名同用法拆到 references/api.md,將模板放喺 assets/。

重點四:唔好將 Claude 釘死。

Skill 會被反覆使用,如果指令太具體,Claude 喺某啲場景下就會變得好死板。應該寫「通常流程係 A→B→C→D,但可以根據實際情況調整順序或跳過某啲步驟」,而唔係「必須按 A→B→C→D 執行」。

重點五:想清楚初始化流程。

如果 Skill 需要用戶提供上下文(例如 standup Skill 需要知道發去邊個頻道),可以將配置存到 config.json。第一次運行時如果唔存在就問用戶,之後直接讀取,唔好重複問。

重點六:description 字段係寫俾模型睇嘅。

Claude Code 啓動時會掃描所有 Skill 嘅 description,所以應該寫清楚「咩時候觸發」,例如「當用戶要求格式化代碼或代碼風格不一致時觸發」,而唔係「用於格式化代碼」。

重點七:為 Skill 加記憶同放腳本。

透過儲存數據(例如日誌文件)實現記憶,令 Claude 知道歷史變化。放輔助腳本同庫函數俾 Claude 組合,佢就可以專注喺決策而唔使寫樣板代碼。

整理重點

Hook、統計同分發:令 Skill 更強大

Skill 可以包含 動態 Hook,喺被調用先激活,持續到會話結束。適合比較有態度嘅 Hook,例如 /careful 攔截 rm -rf、DROP TABLE 等危險操作,或者 /freeze 限制 Claude 編輯特定目錄之外嘅文件。

統計使用情況:用 PreToolUse Hook 記錄 Skill 使用日誌。

Anthropic 內部用一個 PreToolUse Hook 記錄每個 Skill 嘅使用情況,從而發現邊啲 Skill 高頻使用、邊啲觸發率低,幫助團隊調整。

分發方面,小團隊直接將 Skill 提交到倉庫嘅 .claude/skills 目錄就得。規模大咗之後,可以搭建內部 Plugin Marketplace,由團隊成員自行選擇安裝。Anthropic 內部冇中央團隊決定上架,而係先放 sandbox 目錄試用,有口碑再提 PR。


題記:呢篇文係編譯自 Anthropic 工程師 Thariq(@trq212)發表嘅長文。上次佢篇文章分享咗《像 Agent 一樣思考:Claude Code 工具設計嘅進化史》,今次就講 Skill 點樣寫先至好用。原文連結:https://x.com/trq212/status/2033949937936085378。


寫過 Claude Code Skill 嘅人應該都有一個體會:寫出嚟容易,但寫得好就好難。

之前我推薦過唔少好用嘅 Skill(《十個頂級 Claude Code Skills,裝上就唔想卸》《OpenClaw 必備 Skill 清單》),但「好用嘅 Skill 到底係點樣寫出嚟」呢個問題一直都冇點樣傾過。市面上嘅教程大多數都停喺「創建一個 SKILL.md 文件」呢一步,至於寫啲咩、點樣組織、啲資訊邊啲應該放邊啲唔應該放,基本上冇人系統咁講過。

Anthropic 內部而家有幾百個 Skill 喺日常用緊,Thariq 最近將佢哋踩過嘅坑整理咗成一篇長文。我睇完覺得資訊密度幾高,好多坑自己都踩過,但一直冇諗清楚點解。呢篇文就將裏面最有價值嘅部分整理出嚟。

先糾正一個常見嘅誤解

好多人覺得 Skill 就係一個 Markdown 檔案。行到,但係冇用好。

Skill 嘅本質係一個資料夾,裏面可以放腳本、數據、模板、配置,Claude 可以發現、探索同操作呢啲檔案。另外,Skill 仲支援好多配置選項(詳見官方文檔嘅 frontmatter 參考),包括動態註冊 Hook。

Anthropic 內部用得最好嘅嗰啲 Skill,正正係充分利用咗資料夾結構同配置選項嘅。後面會具體傾到。

9 類 Skill:你個團隊仲欠邊啲?

Thariq 將 Anthropic 內部所有嘅 Skill 做咗一次盤點,發現佢哋大致可以歸做 9 類。佢話最好嘅 Skill 通常乾淨利落咁屬於某一類,而嗰啲令人困惑嘅 Skill 往往橫跨好幾類。

Skill 分類
Skill 分類

呢個分類唔係咩權威定義,但作為一個自查清單幾實用,可以睇嚇你個團隊仲缺邊幾類。

庫同 API 參考

教 Claude 點樣正確使用某個庫、CLI 或者 SDK。可以係內部庫,亦可以係 Claude 成日用錯嘅外部庫。呢類 Skill 通常會帶一個代碼片段資料夾同一份「踩坑清單」。

例如你內部嘅計費庫有一堆邊界情況,或者你嘅 CLI 工具有一啲 Claude 唔知道嘅子命令同用法。

產品驗證

描述點樣測試同驗證代碼係咪正確。通常會配合 Playwright、tmux 呢類嘅外部工具嚟做驗證。

呢類 Skill 嘅價值在於確保 Claude 嘅輸出係啱嘅,而唔係「佢話啱就信佢」。Thariq 嘅原話係:俾一個工程師花一個禮拜時間專門打磨驗證類 Skill,係值得嘅。

可以考慮嘅技巧包括俾 Claude 錄製測試影片方便返睇,或者喺每一步強製做斷言。呢啲通常透過喺 Skill 入面放腳本來實現。

數據獲取同分析

連接到你嘅數據同監控系統。呢類 Skill 可能會包含帶憑據嘅數據獲取腳本、Dashboard ID、常見查詢工作流程。

例如「邊啲事件表可以睇到註冊→激活→付費嘅轉化漏斗」,或者「Grafana 裏面邊個 dashboard 對應邊個問題」。

業務流程自動化

將重複性工作流一鍵化。例如自動聚合 ticket tracker、GitHub 活動同 Slack 消息嚟生成 standup,或者自動創建 ticket 並觸發後續嘅 review 同通知流程。

呢類 Skill 指令通常比較簡單,但依賴其他 Skill 或者 MCP。一個有用嘅技巧係將每次執行嘅結果保存到日誌檔案裏面,Claude 下次執行時可以參考上次嘅結果,保持一致性。

代碼腳手架

為代碼庫中嘅特定功能生成框架代碼。當你嘅腳手架有一啲冇辦法純粹用代碼覆蓋嘅自然語言需求時,Skill 嘅優勢就體現出嚟啦。例如新建一個帶你哋標準認證、日誌同部署配置嘅內部應用。

代碼質量同審查

喺團隊內部強制執行代碼質量標準。可以包含確定性腳本來保證魯棒性。你可能想透過 Hook 自動觸發呢啲 Skill,或者放到 GitHub Action 裏面跑。

例如啟動一個全新視角嘅子 Agent 嚟挑剔,迭代到剩低 nitpick 級別嘅問題為止。

CI/CD 同部署

幫你拉代碼、推代碼同部署嘅 Skill。例如監控 PR 狀態,自動重試 flaky CI,解決合併衝突,開啟 auto-merge。或者做灰度發佈時自動對比錯誤率,有迴歸就自動回滾。

Runbook

收到一個症狀(Slack 線程、告警或者錯誤簽名),行一次多工具調查流程,輸出結構化報告。呢個就係將 on-call 經驗沉澱成可執行嘅標準流程。

基礎設施運維

執行日常維護同運維操作,有啲涉及破壞性操作,所以 Skill 裏面可以內置安全護欄。例如揾孤立嘅 Pod/Volume,先發到 Slack 等一段時間確認,用戶同意之後再級聯清理。

呢 9 類基本覆蓋咗一個工程團隊日常工作嘅方方面面。如果你個團隊啱啱開始用 Skill,可以從呢個清單出發,睇嚇邊幾類可以最快產生價值。我自己嘅體感係驗證類同業務流程自動化類最容易見效,因為佢哋解決嘅係每日都在重複嘅痛點。

知道咗應該做咩類型嘅 Skill,接下來嘅問題就係點樣寫喇。

點樣將 Skill 寫好?

呢部分係我覺得全文最有價值嘅,因為好多坑唔踩一次真係諗唔到。

Tips for Making Skills
寫好 Skill 嘅貼士

Anthropic 最近都發佈咗 Skill Creator 嚟簡化 Skill 嘅創建過程,但即使有工具輔助,下面呢啲原則都仲係要自己把握。

唔好寫 Claude 已經知道嘅嘢

Claude 本身已經識好多編程知識,對你嘅代碼庫都有唔少了解。如果你嘅 Skill 主要係知識類嘅,重點就擺喺嗰啲可以將 Claude 推出佢默認思維模式嘅資訊上。

frontend-design Skill 係一個好例子。佢係 Anthropic 嘅工程師同客戶反覆迭代出嚟嘅,核心就係教 Claude 避免嗰啲經典嘅 AI 審美,例如 Inter 字體配紫色漸變。呢啲先係 Claude 需要被糾正嘅地方,而唔係話俾佢聽「請寫出高質素代碼」。

認真寫好 Gotchas 部分

Gotchas Section
Gotchas 部分

任何 Skill 裏面資訊量最高嘅部分就係 Gotchas(踩坑清單)。將 Claude 使用你嘅 Skill 時成日犯嘅錯記低,隨住使用不斷補充。

我自己寫 Skill 嘅經驗都係咁。一開始寫嘅 Skill 可能得二三十行,用咗一個月之後 Gotchas 部分比正文仲長。因為每次 Claude 犯一個新錯,你就加一條,呢啲積累先係 Skill 真正嘅價值所在。

用好檔案系統同漸進式披露

Progressive Disclosure
漸進式披露

前面講咗,Skill 係一個資料夾,唔只係 Markdown。你應該將成個檔案系統當作上下文工程同漸進式披露(Progressive Disclosure)嘅手段。喺 SKILL.md 裏面話俾 Claude 知呢個 Skill 裏面有邊啲檔案,佢會喺合適嘅時候去睇。

最簡單嘅做法係將詳細嘅函數簽名同用法示例拆到 references/api.md 裏面。如果你嘅最終輸出係 Markdown 檔案,可以喺 assets/ 裏面放一個模板俾 Claude 複製使用。

腳本、示例、參考文檔,呢啲都可以分門別類放進 Skill 資料夾。Claude 知道佢哋喺嗰度,需要嘅時候自己會去揾。

呢個思路喺上一篇《好似 Agent 咁思考》裏面都傾過。從被動接收上下文到主動探索上下文,漸進式披露係 Claude Code 工具設計嘅核心理念之一。

唔好將 Claude 釘死

Avoid Railroading
避免過度限制

Claude 會盡量遵守你嘅指令,但 Skill 係會俾人反覆使用嘅,如果指令太具體,佢喺某啲場景下就會變得好死板。俾 Claude 佢需要嘅資訊,但都要俾佢根據具體情況靈活調整嘅空間。

例如唔好寫「必須按 A→B→C→D 四個步驟執行」,而係寫「通常嘅流程係 A→B→C→D,但可以根據實際情況調整順序或者跳過某啲步驟」。

諗清楚初始化流程

Setup
設定

有啲 Skill 需要用戶先提供一啲上下文先用得。例如一個發 standup 去 Slack 嘅 Skill,需要知道發去邊個頻道。

一個好嘅做法係將呢啲配置資訊存到 Skill 目錄下嘅 config.json 裏面。第一次運行時,如果配置唔存在,Claude 就問用戶;配置好咗之後就直接用,唔再重複問。

如果你想俾 Claude 同用戶提結構化嘅選擇題而唔係開放式提問,可以俾佢調用 AskUserQuestion 工具。

description 字段係寫俾模型睇嘅

Description Field
Description 字段

Claude Code 啟動時會構建一個所有可用 Skill 嘅清單,每個 Skill 帶上佢嘅 description。Claude 掃呢個清單嚟決定「當前呢個請求有冇對應嘅 Skill」。

所以 description 唔係俾人睇嘅摘要,而係俾模型睇嘅觸發條件。你應該寫清楚「咩時候應該觸發呢個 Skill」,而唔係「呢個 Skill 做咗啲咩」。

呢個細節我之前都冇太大注意,但仔細諗嚇確實重要。如果 description 寫嘅係「用於格式化代碼」,Claude 可能喺好多場景下都唔確定用唔用好。但如果寫嘅係「當用戶要求格式化代碼、或代碼風格不一致時觸發」,觸發率會準確得多。

俾 Skill 加記憶

Memory & Storing Data
記憶同儲存數據

有啲 Skill 可以透過存儲數據嚟實現記憶功能。可以簡單到向一個文本日誌裏面追加內容,亦可以複雜到用 SQLite 數據庫。

例如前面提到嘅 standup Skill,如果每次執行都將內容追加到 standups.log 裏面,下次運行時 Claude 睇一次歷史,就知道邊啲係新變化,唔需要從頭分析。

需要注意嘅係,Skill 目錄下嘅數據喺升級 Skill 時可能會被刪除。所以應該將數據存到穩定嘅位置。目前 Claude Code 提供咗 ${CLAUDE_PLUGIN_DATA} 作為每個 Plugin 嘅穩定存儲目錄。

放腳本,俾 Claude 組合

Store Scripts
儲存腳本

俾 Claude 代碼係你可以做嘅最有力嘅事之一。將輔助腳本同庫函數放到 Skill 裏面,Claude 就可以將精力花喺組合同決策上,而唔係從頭寫重複嘅樣板代碼。

例如喺數據分析 Skill 裏面放一組從數據源拉數據嘅輔助函數,Claude 就可以按需組合呢啲函數嚟回答「星期二發生咗啲咩」呢類問題。

Claude 生成腳本
Claude 生成腳本

按需 Hook

Skill 可以包含只係被調用時先激活嘅 Hook,持續到會話結束。適合嗰啲比較「有態度」嘅 Hook,平時開住太煩,但某啲場景下非常有用。

比如 /careful,通過 PreToolUse 攔截 Bash 裏面嘅 rm -rfDROP TABLEforce-pushkubectl delete。你只係掂生產環境時先想開佢,平時開住只會令人抓狂。再例如 /freeze,阻止 Claude 編輯特定目錄之外嘅檔案。除錯嘅時候特別有用,你只想加日誌,唔想 Claude 順手將唔相關嘅代碼都修埋。

唔好唔記得統計

順便提一下分發同統計。Anthropic 內部用一個 PreToolUse Hook 嚟記錄 Skill 嘅使用情況(示例代碼),咁就可以發現邊啲 Skill 被高頻使用、邊啲觸發率低過預期。

分發方面,小團隊直接將 Skill 提交到倉庫嘅 .claude/skills 目錄就得。規模大咗之後,可以搭建內部嘅 Plugin Marketplace,俾團隊成員自己選擇安裝邊啲。Anthropic 內部冇一個集中嘅團隊嚟決定邊啲 Skill 上架。有人做咗一個好用嘅 Skill,先放到一個 sandbox 目錄俾人試用,有咗口碑再提 PR 進入正式市場。

仲有一個需要注意嘅問題:Skill 之間嘅組合同依賴。例如你嘅 CSV 生成 Skill 依賴一個檔案上傳 Skill。目前 Marketplace 仲未有原生嘅依賴管理,但你可以喺 Skill 裏面直接引用其他 Skill 嘅名,Claude 會自動調用已安裝嘅。

最後

返轉頭睇呢篇文章,最令我感觸嘅係 Gotchas 部分。我自己寫 Skill 嘅經歷都驗證咗呢一點,Skill 嘅價值唔在於初始版本寫得幾完整,而在於使用過程中不斷補充 Claude 犯過嘅錯。一開始寫個十幾行嘅骨架,用一段時間之後自然會長成一個成熟嘅 Skill。

另一個令我重新審視嘅係「唔好寫 Claude 已經知道嘅嘢」。我之前寫過一啲 Skill,裏面有大段嘅編碼規範同最佳實踐,呢啲其實 Claude 本來就會。真正應該寫入 Skill 嘅係嗰啲 Claude 唔知道嘅、你個團隊特有嘅知識,例如內部約定、踩過嘅坑、用咩工具查咩問題。

如果你已經喺用 Skills 但覺得效果一般,不妨返去對照一下上面嘅原則,睇嚇有邊啲地方可以調整。如果你仲未開始,從一個細嘅 Gotchas 清單開始就得,唔需要一開始就搞到好複雜。


相關資源:

  • • 原文連結:https://x.com/trq212/status/2033949937936085378
  • • Claude Code Skills 文檔:https://code.claude.com/docs/en/skills
  • • Agent Skills 課程:https://anthropic.skilljar.com/introduction-to-agent-skills
  • • Skill Creator 博客:https://claude.com/blog/improving-skill-creator-test-measure-and-refine-agent-skills
  • • Anthropic 官方 Skills 倉庫:https://github.com/anthropics/skills
  • • Skill 使用日誌 Hook 示例:https://gist.github.com/ThariqS/24defad423d701746e23dc19aace4de5

好啦,今日就傾到呢度。如果你都在探索 AI 編程工具,歡迎關注 Feisky 公眾號,我會定期分享實踐中嘅發現同踩坑經驗。



題記:本文編譯自 Anthropic 工程師 Thariq(@trq212)發表的長文。上次他的文章分享了《像 Agent 一樣思考:Claude Code 工具設計的進化史》,這次聊的是 Skill 怎麼寫才好用。原文連結:https://x.com/trq212/status/2033949937936085378。


寫過 Claude Code Skill 的人應該都有一個體會:寫出來容易,寫好很難。

之前我推薦過不少好用的 Skill(《十個頂級 Claude Code Skills,裝上就不想卸》《OpenClaw 必備 Skill 清單》),但“好用的 Skill 到底是怎麼寫出來的”這個問題一直沒怎麼聊過。市面上的教程大都停在”創建一個 SKILL.md 文件”這一步,至於寫什麼、怎麼組織、哪些信息該放哪些不該放,基本沒人系統講過。

Anthropic 內部現在有幾百個 Skill 在日常使用,Thariq 最近把他們踩過的坑整理成了一篇長文。我讀完覺得信息密度挺高的,很多坑自己也踩過,但一直沒想清楚為什麼。這篇就把裏面最有價值的部分整理出來。

先糾正一個常見誤解

很多人覺得 Skill 就是一個 Markdown 文件。能跑,但沒用好。

Skill 的本質是一個文件夾,裏面可以放腳本、數據、模板、配置,Claude 能發現、探索和操作這些文件。另外,Skill 還支持很多配置選項(詳見官方文檔的 frontmatter 參考),包括動態註冊 Hook。

Anthropic 內部用得最好的那些 Skill,恰恰是充分利用了文件夾結構和配置選項的。後面會具體聊到。

9 類 Skill:你的團隊還缺哪些?

Thariq 把 Anthropic 內部所有的 Skill 做了一次盤點,發現它們大致可以歸為 9 類。他說最好的 Skill 通常乾淨利落地屬於某一類,而那些讓人困惑的 Skill 往往橫跨好幾類。

Skill 分類
Skill 分類

這個分類不是什麼權威定義,但作為一個自查清單挺實用的,可以看看你的團隊還缺哪幾類。

庫和 API 參考

教 Claude 怎麼正確使用某個庫、CLI 或 SDK。可以是內部庫,也可以是 Claude 經常用錯的外部庫。這類 Skill 通常會帶一個代碼片段文件夾和一份“踩坑清單”。

比如你內部的計費庫有一堆邊界情況,或者你的 CLI 工具有一些 Claude 不知道的子命令和用法。

產品驗證

描述怎麼測試和驗證代碼是否正確。通常會配合 Playwright、tmux 之類的外部工具來做驗證。

這類 Skill 的價值在於確保 Claude 的輸出是對的,而不是“它說對了就信它”。Thariq 的原話是:讓一個工程師花一週時間專門打磨驗證類 Skill,是值得的。

可以考慮的技巧包括讓 Claude 錄製測試視頻方便回看,或者在每一步強制做斷言。這些通常通過在 Skill 中放腳本來實現。

數據獲取與分析

連接到你的數據和監控系統。這類 Skill 可能會包含帶憑據的數據獲取腳本、Dashboard ID、常見查詢工作流。

比如“哪些事件表能看到註冊→激活→付費的轉化漏斗”,或者“Grafana 裏哪個 dashboard 對應哪個問題”。

業務流程自動化

把重複性工作流一鍵化。比如自動聚合 ticket tracker、GitHub 活動和 Slack 消息來生成 standup,或者自動創建 ticket 並觸發後續的 review 和通知流程。

這類 Skill 指令通常比較簡單,但依賴其他 Skill 或 MCP。一個有用的技巧是把每次執行的結果保存到日誌文件裏,Claude 下次執行時可以參考上次的結果,保持一致性。

代碼腳手架

為代碼庫中的特定功能生成框架代碼。當你的腳手架有一些無法純粹用代碼覆蓋的自然語言需求時,Skill 的優勢就體現出來了。比如新建一個帶你們標準認證、日誌和部署配置的內部應用。

代碼質量與審查

在團隊內部強制執行代碼質量標準。可以包含確定性腳本來保證魯棒性。你可能想通過 Hook 自動觸發這些 Skill,或者放到 GitHub Action 裏跑。

比如啓動一個全新視角的子 Agent 來挑刺,迭代到只剩 nitpick 級別的問題為止。

CI/CD 與部署

幫你拉代碼、推代碼和部署的 Skill。比如監控 PR 狀態,自動重試 flaky CI,解決合併衝突,開啓 auto-merge。或者做灰度發佈時自動對比錯誤率,有迴歸就自動回滾。

Runbook

拿到一個症狀(Slack 線程、告警或錯誤簽名),走一遍多工具調查流程,輸出結構化報告。這就是把 on-call 經驗沉澱成了可執行的標準流程。

基礎設施運維

執行日常維護和運維操作,有些涉及破壞性操作,所以 Skill 裏可以內置安全護欄。比如查找孤立的 Pod/Volume,先發到 Slack 等一段時間確認,用戶同意後再級聯清理。

這 9 類基本覆蓋了一個工程團隊日常工作的方方面面。如果你的團隊剛開始用 Skill,可以從這個清單出發,看看哪幾類能最快產生價值。我自己的體感是驗證類和業務流程自動化類最容易見效,因為它們解決的是每天都在重複的痛點。

知道了該做什麼類型的 Skill,接下來的問題就是怎麼寫了。

怎麼把 Skill 寫好?

這部分是我覺得全文最有價值的,因為很多坑不踩一遍真想不到。

Tips for Making Skills
Tips for Making Skills

Anthropic 最近也發佈了 Skill Creator 來簡化 Skill 的創建過程,但即使有工具輔助,下面這些原則還是得自己把握。

別寫 Claude 已經知道的

Claude 本身就懂很多編程知識,對你的代碼庫也有不少了解。如果你的 Skill 主要是知識類的,重點放在那些能把 Claude 推出它默認思維模式的信息上。

frontend-design Skill 是個好例子。它是 Anthropic 的工程師跟客戶反覆迭代出來的,核心就是教 Claude 避免那些經典的 AI 審美,比如 Inter 字體配紫色漸變。這些才是 Claude 需要被糾正的地方,而不是告訴它“請寫出高質量代碼”。

好好寫 Gotchas 部分

Gotchas Section
Gotchas Section

任何 Skill 裏信息量最高的部分就是 Gotchas(踩坑清單)。把 Claude 使用你的 Skill 時經常犯的錯記下來,隨着使用不斷補充。

我自己寫 Skill 的經驗也是這樣。一開始寫的 Skill 可能只有二三十行,用了一個月之後 Gotchas 部分比正文還長。因為每次 Claude 犯一個新錯,你就加一條,這些積累才是 Skill 真正的價值所在。

用好文件系統和漸進式披露

Progressive Disclosure
Progressive Disclosure

前面說了,Skill 是文件夾,不只是 Markdown。你應該把整個文件系統當作上下文工程和漸進式披露(Progressive Disclosure)的手段。在 SKILL.md 裏告訴 Claude 這個 Skill 裏有哪些文件,它會在合適的時候去讀。

最簡單的做法是把詳細的函數簽名和用法示例拆到 references/api.md 裏。如果你的最終輸出是 Markdown 文件,可以在 assets/ 裏放一個模板讓 Claude 複製使用。

腳本、示例、參考文檔,這些都可以分門別類放進 Skill 文件夾。Claude 知道它們在那兒,需要的時候自己會去找。

這個思路在上一篇《像 Agent 一樣思考》裏也聊過。從被動接收上下文到主動探索上下文,漸進式披露是 Claude Code 工具設計的核心理念之一。

別把 Claude 釘死

Avoid Railroading
Avoid Railroading

Claude 會盡量遵守你的指令,但 Skill 是會被反覆使用的,如果指令太具體,它在某些場景下就會變得很死板。給 Claude 它需要的信息,但也給它根據具體情況靈活調整的空間。

比如不要寫“必須按 A→B→C→D 四個步驟執行”,而是寫“通常的流程是 A→B→C→D,但可以根據實際情況調整順序或跳過某些步驟”。

想清楚初始化流程

Setup
Setup

有些 Skill 需要用戶先提供一些上下文才能用。比如一個發 standup 到 Slack 的 Skill,需要知道發到哪個頻道。

一個好的做法是把這些配置信息存到 Skill 目錄下的 config.json 裏。第一次運行時,如果配置不存在,Claude 就問用戶;配置好了以後就直接用,不再重複問。

如果你想讓 Claude 給用戶提結構化的選擇題而不是開放式提問,可以讓它調用 AskUserQuestion 工具。

description 字段是寫給模型看的

Description Field
Description Field

Claude Code 啓動時會構建一個所有可用 Skill 的清單,每個 Skill 帶上它的 description。Claude 掃這個清單來決定“當前這個請求有沒有對應的 Skill”。

所以 description 不是給人看的摘要,而是給模型看的觸發條件。你應該寫清楚“什麼時候應該觸發這個 Skill”,而不是“這個 Skill 做了什麼”。

這個細節我之前也沒太注意,但仔細想想確實重要。如果 description 寫的是“用於格式化代碼”,Claude 可能在很多場景下都不確定要不要用。但如果寫的是“當用戶要求格式化代碼、或代碼風格不一致時觸發”,觸發率會準確得多。

給 Skill 加記憶

Memory & Storing Data
Memory & Storing Data

有些 Skill 可以通過存儲數據來實現記憶功能。可以簡單到往一個文本日誌裏追加內容,也可以複雜到用 SQLite 數據庫。

比如前面提到的 standup Skill,如果每次執行都把內容追加到 standups.log 裏,下次運行時 Claude 讀一遍歷史,就能知道哪些是新變化,不需要從頭分析。

需要注意的是,Skill 目錄下的數據在升級 Skill 時可能被刪掉。所以應該把數據存到穩定的位置。目前 Claude Code 提供了 ${CLAUDE_PLUGIN_DATA} 作為每個 Plugin 的穩定存儲目錄。

放腳本,讓 Claude 組合

Store Scripts
Store Scripts

給 Claude 代碼是你能做的最有力的事之一。把輔助腳本和庫函數放到 Skill 裏,Claude 就可以把精力花在組合和決策上,而不是從頭寫重複的樣板代碼。

比如在數據分析 Skill 裏放一組從數據源拉數據的輔助函數,Claude 就可以按需組合這些函數來回答“週二發生了什麼”這類問題。

Claude 生成腳本
Claude 生成腳本

按需 Hook

Skill 可以包含只在被調用時才激活的 Hook,持續到會話結束。適合那些比較“有態度”的 Hook,平時開着太煩,但某些場景下非常有用。

比如 /careful,通過 PreToolUse 攔截 Bash 裏的 rm -rfDROP TABLEforce-pushkubectl delete。你只在碰生產環境時才想開它,平時開着只會讓人抓狂。再比如 /freeze,阻止 Claude 編輯特定目錄之外的文件。調試的時候特別有用,你只想加日誌,不想 Claude 順手把不相關的代碼也修了。

別忘了統計

順便提一下分發和統計。Anthropic 內部用一個 PreToolUse Hook 來記錄 Skill 的使用情況(示例代碼),這樣就能發現哪些 Skill 被高頻使用、哪些觸發率低於預期。

分發方面,小團隊直接把 Skill 提交到倉庫的 .claude/skills 目錄就行。規模大了以後,可以搭建內部的 Plugin Marketplace,讓團隊成員自己選擇安裝哪些。Anthropic 內部沒有一個集中的團隊來決定哪些 Skill 上架。有人做了一個好用的 Skill,先放到一個 sandbox 目錄讓人試用,有了口碑再提 PR 進入正式市場。

還有一個需要注意的問題:Skill 之間的組合和依賴。比如你的 CSV 生成 Skill 依賴一個文件上傳 Skill。目前 Marketplace 還沒有原生的依賴管理,但你可以在 Skill 裏直接引用其他 Skill 的名字,Claude 會自動調用已安裝的。

寫在最後

回頭看這篇文章,最讓我有感觸的是 Gotchas 部分。我自己寫 Skill 的經歷也驗證了這一點,Skill 的價值不在初始版本寫得多完整,而在於使用過程中不斷補充 Claude 犯過的錯。一開始寫個十幾行的骨架,用一段時間後自然會長成一個成熟的 Skill。

另一個讓我重新審視的是“別寫 Claude 已經知道的”。我之前寫過一些 Skill,裏面有大段的編碼規範和最佳實踐,這些其實 Claude 本來就會。真正該寫進 Skill 的是那些 Claude 不知道的、你的團隊特有的知識,比如內部約定、踩過的坑、用什麼工具查什麼問題。

如果你已經在用 Skills 但覺得效果一般,不妨回去對照一下上面的原則,看看有哪些地方可以調整。如果你還沒開始,從一個小的 Gotchas 清單開始就行,不需要一上來就做得很複雜。


相關資源:

  • • 原文連結:https://x.com/trq212/status/2033949937936085378
  • • Claude Code Skills 文檔:https://code.claude.com/docs/en/skills
  • • Agent Skills 課程:https://anthropic.skilljar.com/introduction-to-agent-skills
  • • Skill Creator 博客:https://claude.com/blog/improving-skill-creator-test-measure-and-refine-agent-skills
  • • Anthropic 官方 Skills 倉庫:https://github.com/anthropics/skills
  • • Skill 使用日誌 Hook 示例:https://gist.github.com/ThariqS/24defad423d701746e23dc19aace4de5

好了,今天就聊到這兒。如果你也在探索 AI 編程工具,歡迎關注 Feisky 公眾號,我會定期分享實踐中的發現和踩坑經驗。