技能已經成為 Claude Code 中最常用的擴展點之一。它們靈活、易於建立,也便於分享。
但這種靈活性也讓人難以判斷什麼做法最好。哪些類型的技能值得製作?寫好一個技能的秘密是什麼?何時該與他人分享?
我們 Anthropic 團隊在 Claude Code 中大量使用了技能,目前有數百個技能正在活躍使用中。以下是我們在使用技能加速開發過程中所學到的心得。
什麼是技能?
如果你對技能還不熟悉,我建議你 閱讀我們的文件 或觀看我們在 Skilljar 上關於 Agent 技能的最新課程,這篇文章會假設你已經對技能有一定程度的了解。
我們常聽到一個誤解,認為技能「只是 markdown 檔案」,但技能最有趣的地方在於它們不只是文字檔。技能是資料夾,裡面可以包含腳本、素材、資料等內容,讓 Agent 可以探索、讀取和操作。
在 Claude Code 中,技能還擁有 多種配置選項,包括註冊動態鉤子。
我們發現 Claude Code 中一些最有趣的技能,正是巧妙地運用了這些配置選項和資料夾結構。
技能類型
在整理所有技能後,我們注意到它們可以歸類為幾個常見的類別。最好的技能通常只屬於一個類別;比較令人困惑的技能則可能橫跨多個類別。這不是一份絕對的清單,但它是一個很好的思考框架,可以幫助你檢視自己的組織是否有缺少哪些類型的技能。

1. 函式庫與 API 參考
解釋如何正確使用某個函式庫、命令列工具或 SDK 的技能。這類技能可以針對公司內部的函式庫,或是 Claude Code 有時難以處理的常見函式庫。這些技能通常會包含一個參考程式碼片段的資料夾,以及一份 Claude 在撰寫腳本時應避免的常見陷阱清單。
範例:
- billing-lib — 你的內部帳務函式庫:邊界案例、常見陷阱等
- internal-platform-cli — 你的內部命令列包裝器的每個子命令,以及使用時機的範例
- frontend-design — 讓 Claude 更擅長你的設計系統
2. 產品驗證
描述如何測試或驗證程式碼是否正常運作的技能。這類技能通常會搭配 Playwright、tmux 等外部工具來進行驗證。
驗證技能對於確保 Claude 的輸出正確性非常有用。值得讓工程師花一週時間來把驗證技能做到最好。
可以考慮一些技巧,例如讓 Claude 錄製其輸出結果的影片,這樣你就能確切看到它測試了什麼,或在每個步驟強制執行程式化的狀態斷言。這些通常是透過在技能中包含各種腳本來實現的。
範例:
- signup-flow-driver — 在無頭瀏覽器中執行註冊 → 電子郵件驗證 → 引導流程,並在每個步驟設定用於斷言狀態的鉤子
- checkout-verifier — 使用 Stripe 測試卡號驅動結帳 UI,驗證發票確實處於正確狀態
- tmux-cli-driver — 用於互動式命令列測試,當你要驗證的內容需要 TTY 環境時使用
3. 資料擷取與分析
連接你的資料和監控平台的技能。這類技能可能包含用於擷取資料的函式庫、憑證資訊、特定儀表板 ID 等,以及關於常見工作流程或資料取得方式的說明。
**範例。
範例:
- funnel-query — 「我需要串聯哪些事件才能看到 註冊 → 啟動 → 付費 流程」,以及實際包含標準 user_id 的資料表
- cohort-compare — 比較兩個群組的留存率或轉換率,標記統計上顯著的差異,並連結到區隔定義
- grafana — 資料來源 UID、叢集名稱、問題與儀表板的對照表
4. 業務流程與團隊自動化
將重複性工作流程自動化為單一指令的技能。這類技能通常包含簡單的指令,但可能與其他技能或 MCP 有較複雜的依賴關係。對於這些技能,將之前的結果儲存在日誌檔案中有助於模型保持一致,並能參考先前執行該工作流程的經驗。
範例:
- standup-post — 彙整你的任務追蹤器、GitHub 活動和之前的 Slack 訊息 → 格式化為站會報告,只顯示差異部分
- create-<ticket-system>-ticket — 強制執行規格(有效的列舉值、必填欄位)加上建立後的流程(通知審查者、在 Slack 中貼上連結)
- weekly-recap — 合併的 PR + 關閉的票證 + 部署 → 格式化為週報
5. 程式碼腳手架與模板
為程式碼庫中的特定功能產生框架樣板的技能。你可以將這些技能與可組合的腳本結合使用。當你的腳手架包含無法完全由程式碼涵蓋的自然語言需求時,這類技能尤其有用。
範例:
- new-<framework>-workflow — 使用你的註解腳手架一個新的服務/工作流程/處理器
- new-migration — 你的遷移檔案模板加上常見陷阱
- create-app — 預先配置好驗證、日誌記錄和部署配置的內部新應用程式
6. 程式碼品質與審查
在組織內強制執行程式碼品質並協助審查程式碼的技能。這類技能可以包含確定性的腳本或工具來達到最大化的穩健性。你可能希望作為鉤子的一部分或在 GitHub Action 中自動執行這些技能。
範例:
- adversarial-review — 產生一個全新視角的子 Agent 來進行批評,實作修正,並迭代直到發現的問題只剩下小毛病
- code-style — 強制執行程式碼風格,特別是 Claude 預設做得不好的風格
- testing-practices — 關於如何撰寫測試以及該測試什麼的說明
7. CI/CD 與部署
幫助你在程式碼庫中擷取、推送和部署程式碼的技能。這些技能可能會參照其他技能來收集資料。
範例:
- babysit-pr — 監控 PR → 重試不穩定的 CI → 解決合併衝突 → 啟用自動合併
- deploy-<service> — 建置 → 冒煙測試 → 逐步流量發布,並進行錯誤率比較 → 回歸時自動回滾
- cherry-pick-prod — 隔離的工作目錄 → 揀選提交 → 解決衝突 → 使用模板建立 PR
8. 操作手冊
接收一個症狀(例如 Slack 討論串、警示或錯誤特徵),引導完成多工具調查,並產生結構化報告的技能。
範例:
- <service>-debugging — 為你的高流量服務建立症狀 → 工具 → 查詢模式的對照表
- oncall-runner — 擷取警示 → 檢查常見原因 → 格式化發現報告
- log-correlator — 給定一個請求 ID,從可能觸及該請求的所有系統中拉取匹配的日誌
9. 基礎設施操作
執行例行維護和操作程序的技能,其中一些可能涉及破壞性操作,最好有安全防護機制。這類技能讓工程師更容易在關鍵操作中遵循最佳實踐。
範例:
- <resource>-orphans — 尋找孤立 Pod/儲存卷 → 發布到 Slack → 觀察期 → 使用者確認 → 串聯清理
- dependency-management — 你的組織的依賴項核准流程
- cost-investigation — 「為什麼我們的儲存/流量費用暴增」並提供具體的儲存桶和查詢模式
製作技能的技巧

一旦你決定要製作哪個技能,該如何撰寫呢?以下是我們發現的一些最佳實踐、技巧和小訣竅。
我們最近也推出了 Skill Creator,讓在 Claude Code 中建立技能變得更容易。
不要陳述顯而易見的事
Claude Code 對你的程式碼庫了解很多,而 Claude 本身也對程式設計有許多知識,包括許多預設的意見。如果你發布的技能主要是在傳遞知識,請試著專注於能讓 Claude 跳脫其慣常思維模式的資訊。
前端設計技能 就是一個很好的例子——它是由 Anthropic 的一位工程師透過與客戶反覆迭代,來改善 Claude 的設計品味,避免使用 Inter 字型和紫色漸層等經典模式。
建立一個常見陷阱章節

任何技能中最重要的內容就是「常見陷阱」章節。這些章節應該從 Claude 在使用你的技能時常遇到的失敗點來建立。理想上,你應該隨著時間更新你的技能,以捕捉這些陷阱。
使用檔案系統與漸進式揭露

就像我們之前說的,技能是一個資料夾,而不只是一個 markdown 檔案。你應該把整個檔案系統視為一種情境工程和漸進式揭露的形式。告訴 Claude 你的技能中有哪些檔案,它就會在適當的時機讀取它們。
最簡單的漸進式揭露形式是指向其他 markdown 檔案供 Claude 使用。例如,你可以將詳細的函式簽名和使用範例拆分到 references/api.md 中。
另一個例子:如果你的最終輸出是一個 markdown 檔案,你可以在 assets/ 中包含一個模板檔案供 Claude 複製使用。
你可以建立參考資料、腳本、範例等資料夾,這有助於 Claude 更有效率地工作。
避免過度限制 Claude
Claude 通常會盡量遵循你的指示,而且因為技能的複用性很高,你要小心不要在指示中太過具體。給予 Claude 所需的資訊,但也要給它靈活性來適應不同情況。例如:

考慮設定流程

有些技能可能需要使用者提供一些設定資訊才能運作。例如,如果你製作一個將你的站會報告發布到 Slack 的技能,你可能希望 Claude 詢問要發布到哪個 Slack 頻道。
一個好的做法是將這些設定資訊儲存在技能目錄中的 config.json 檔案裡,就像上面的範例一樣。如果設定尚未完成,Agent 就可以反過來詢問使用者資訊。
如果你希望 Agent 呈現結構化的多選題,你可以指示 Claude 使用 AskUserQuestion 工具。
描述欄位是給模型看的
當 Claude Code 啟動一個會話時,它會建立一份包含每個可用技能及其描述的清單。Claude 掃描這份清單來決定「這個請求是否有對應的技能?」。這意味著描述欄位不是一個摘要——它是一個觸發這個 PR 的時機的說明。

記憶與資料儲存

有些技能可以透過在自身內部儲存資料來包含某種形式的記憶。你可以將資料儲存在最簡單的純文字日誌檔案或 JSON 檔案中,也可以儲存在更複雜的 SQLite 資料庫中。
例如,一個 standup-post 技能可能會維護一個 standups.log 檔案,記錄每次發布的內容。這樣下次執行時,Claude 會讀取自己的歷史記錄,並能判斷出自昨天以來發生了什麼變化。
儲存在技能目錄中的資料可能會在技能升級時被刪除,因此你應該將其儲存在一個穩定的資料夾中。目前,我們提供 ${**CLAUDE_PLUGIN_DATA**} 作為每個 Plugin 儲存資料的穩定資料夾。
儲存腳本與生成程式碼
給予 Claude 程式碼是最強大的工具之一。給予 Claude 腳本和函式庫,可以讓 Claude 把精力花在組合上,決定下一步要做什麼,而不是重新建構樣板程式碼。
例如,在你的資料科學技能中,你可能有一個函式庫,包含從事件來源擷取資料的函式。為了讓 Claude 能夠進行複雜的分析,你可以給它一組像這樣的輔助函式:

Claude 接著可以動態產生腳本來組合這些功能,以對「星期二發生了什麼事?」這類提示進行更高級的分析。

隨需鉤子
技能可以包含僅在技能被呼叫時才啟動的鉤子,其效果持續到會話結束。當你有一些比較有主觀意見的鉤子,不想一直執行,但有時候卻非常有用時,可以使用這個功能。
例如:
- /careful — 透過 Bash 的 PreToolUse 匹配器,阻止 rm -rf、DROP TABLE、force-push、kubectl delete 等操作。你只在知道要操作生產環境時才需要它——如果一直開啟會讓人崩潰
- /freeze — 阻止任何不在特定目錄中的編輯/寫入操作。在除錯時很有用:「我想加入日誌,但我不小心一直「修正」不相關的程式碼」
分發技能
技能的最大好處之一是可以與團隊中的其他人分享。
有兩種方式可以與他人分享技能:
- 將你的技能簽入到你的儲存庫中(放在 ./.claude/skills 下)
- 製作一個 plugin,並建立一個 Claude Code Plugin 市場,讓使用者可以上傳和安裝 Plugin(在此文件中了解更多)
對於在相對較少的儲存庫中工作的小型團隊,將技能簽入儲存庫效果很好。但每個簽入的技能也都會稍微增加模型的上下文內容。隨著規模擴大,一個內部 Plugin 市場可以讓你分發技能,並讓你的團隊決定要安裝哪些技能。
管理市場
如何決定哪些技能應該進入市場?人們如何提交技能?
我們沒有集中的團隊來做決定;相反地,我們試著自然地找出最有用的技能。如果你有一個技能想讓別人試試看,你可以將它上傳到 GitHub 中的一個沙盒資料夾,並在 Slack 或其他論壇中引導人們前往。
一旦某個技能獲得了關注(這由技能擁有者自行決定),他們就可以提交一個 PR,將它移入市場。
需要注意的是,建立不良或冗餘的技能可能非常容易,因此在發布前確保有一些策展方法是很重要的。
組合技能
你可能希望有互相依賴的技能。例如,你可能有一個檔案上傳技能用於上傳檔案,還有一個 CSV 生成技能用來產生 CSV 並上傳它。這種依賴管理目前還沒有原生建置在市場或技能中,但你可以直接透過名稱來引用其他技能,如果它們已安裝,模型就會調用它們。
衡量技能
為了了解技能的表現如何,我們使用了一個 PreToolUse 鉤子,讓我們能夠在公司內部記錄技能使用情況(範例程式碼在此)。這意味著我們可以找出哪些技能受歡迎,或者哪些技能與我們的預期相比觸發次數不足。
結論
技能對於 Agent 來說是極其強大且靈活的工具,但現在仍處於早期階段,我們都還在摸索如何最好的使用它們。
與其把這當作一份最終指南,不如把它視為一個收集了我們看到過的有效技巧的錦囊。了解技能的最佳方式就是開始嘗試、實驗,並看看什麼對你有效。我們大多數的技能都是從幾行程式碼和一個陷阱開始的,然後因為 Claude 遇到新的邊緣案例時人們不斷添加內容而變得越來越好。
希望這些對你有幫助,如果有任何問題,歡迎告訴我。





