打造 Claude Code 的經驗談:我們如何運用技能 (Skills)

@trq212
英語4 個月前 · 2026年3月17日
6.9M
16.4K
2.3K
386
44.0K

TL;DR

Anthropic 分享了關於建構 Claude Code 技能的內部見解,詳細介紹了九大核心類別,以及在情境工程 (Context Engineering) 與團隊分發方面的最佳實踐。

技能已經成為 Claude Code 中最常用的擴展點之一。它們靈活、易於建立,也便於分享。

但這種靈活性也讓人難以判斷什麼做法最好。哪些類型的技能值得製作?寫好一個技能的秘密是什麼?何時該與他人分享?

我們 Anthropic 團隊在 Claude Code 中大量使用了技能,目前有數百個技能正在活躍使用中。以下是我們在使用技能加速開發過程中所學到的心得。

什麼是技能?

如果你對技能還不熟悉,我建議你 閱讀我們的文件 或觀看我們在 Skilljar 上關於 Agent 技能的最新課程,這篇文章會假設你已經對技能有一定程度的了解。

我們常聽到一個誤解,認為技能「只是 markdown 檔案」,但技能最有趣的地方在於它們不只是文字檔。技能是資料夾,裡面可以包含腳本、素材、資料等內容,讓 Agent 可以探索、讀取和操作。

在 Claude Code 中,技能還擁有 多種配置選項,包括註冊動態鉤子。

我們發現 Claude Code 中一些最有趣的技能,正是巧妙地運用了這些配置選項和資料夾結構。

技能類型

在整理所有技能後,我們注意到它們可以歸類為幾個常見的類別。最好的技能通常只屬於一個類別;比較令人困惑的技能則可能橫跨多個類別。這不是一份絕對的清單,但它是一個很好的思考框架,可以幫助你檢視自己的組織是否有缺少哪些類型的技能。

Thariq - inline image

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 — 「為什麼我們的儲存/流量費用暴增」並提供具體的儲存桶和查詢模式

製作技能的技巧

Thariq - inline image

一旦你決定要製作哪個技能,該如何撰寫呢?以下是我們發現的一些最佳實踐、技巧和小訣竅。

我們最近也推出了 Skill Creator,讓在 Claude Code 中建立技能變得更容易。

不要陳述顯而易見的事

Claude Code 對你的程式碼庫了解很多,而 Claude 本身也對程式設計有許多知識,包括許多預設的意見。如果你發布的技能主要是在傳遞知識,請試著專注於能讓 Claude 跳脫其慣常思維模式的資訊。

前端設計技能 就是一個很好的例子——它是由 Anthropic 的一位工程師透過與客戶反覆迭代,來改善 Claude 的設計品味,避免使用 Inter 字型和紫色漸層等經典模式。

建立一個常見陷阱章節

Thariq - inline image

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

使用檔案系統與漸進式揭露

Thariq - inline image

就像我們之前說的,技能是一個資料夾,而不只是一個 markdown 檔案。你應該把整個檔案系統視為一種情境工程和漸進式揭露的形式。告訴 Claude 你的技能中有哪些檔案,它就會在適當的時機讀取它們。

最簡單的漸進式揭露形式是指向其他 markdown 檔案供 Claude 使用。例如,你可以將詳細的函式簽名和使用範例拆分到 references/api.md 中。

另一個例子:如果你的最終輸出是一個 markdown 檔案,你可以在 assets/ 中包含一個模板檔案供 Claude 複製使用。

你可以建立參考資料、腳本、範例等資料夾,這有助於 Claude 更有效率地工作。

避免過度限制 Claude

Claude 通常會盡量遵循你的指示,而且因為技能的複用性很高,你要小心不要在指示中太過具體。給予 Claude 所需的資訊,但也要給它靈活性來適應不同情況。例如:

Thariq - inline image

考慮設定流程

Thariq - inline image

有些技能可能需要使用者提供一些設定資訊才能運作。例如,如果你製作一個將你的站會報告發布到 Slack 的技能,你可能希望 Claude 詢問要發布到哪個 Slack 頻道。

一個好的做法是將這些設定資訊儲存在技能目錄中的 config.json 檔案裡,就像上面的範例一樣。如果設定尚未完成,Agent 就可以反過來詢問使用者資訊。

如果你希望 Agent 呈現結構化的多選題,你可以指示 Claude 使用 AskUserQuestion 工具。

描述欄位是給模型看的

當 Claude Code 啟動一個會話時,它會建立一份包含每個可用技能及其描述的清單。Claude 掃描這份清單來決定「這個請求是否有對應的技能?」。這意味著描述欄位不是一個摘要——它是一個觸發這個 PR 的時機的說明。

Thariq - inline image

記憶與資料儲存

Thariq - inline image

有些技能可以透過在自身內部儲存資料來包含某種形式的記憶。你可以將資料儲存在最簡單的純文字日誌檔案或 JSON 檔案中,也可以儲存在更複雜的 SQLite 資料庫中。

例如,一個 standup-post 技能可能會維護一個 standups.log 檔案,記錄每次發布的內容。這樣下次執行時,Claude 會讀取自己的歷史記錄,並能判斷出自昨天以來發生了什麼變化。

儲存在技能目錄中的資料可能會在技能升級時被刪除,因此你應該將其儲存在一個穩定的資料夾中。目前,我們提供 ${**CLAUDE_PLUGIN_DATA**} 作為每個 Plugin 儲存資料的穩定資料夾。

儲存腳本與生成程式碼

給予 Claude 程式碼是最強大的工具之一。給予 Claude 腳本和函式庫,可以讓 Claude 把精力花在組合上,決定下一步要做什麼,而不是重新建構樣板程式碼。

例如,在你的資料科學技能中,你可能有一個函式庫,包含從事件來源擷取資料的函式。為了讓 Claude 能夠進行複雜的分析,你可以給它一組像這樣的輔助函式:

Thariq - inline image

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

Thariq - inline image

隨需鉤子

技能可以包含僅在技能被呼叫時才啟動的鉤子,其效果持續到會話結束。當你有一些比較有主觀意見的鉤子,不想一直執行,但有時候卻非常有用時,可以使用這個功能。

例如:

  • /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 遇到新的邊緣案例時人們不斷添加內容而變得越來越好。

希望這些對你有幫助,如果有任何問題,歡迎告訴我。

存到 YouMind

使用 YouMind 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章