編譯|冷貓
你還在為你的龍蝦笨笨的而煩惱嗎?
你還在為找不到合適的 Skills 安裝而焦頭爛額嗎?
你還在為網(wǎng)上找到的 Skills 可能不安全而心驚膽戰(zhàn)嗎?
養(yǎng)了這么久龍蝦,是時候開始構(gòu)建自己的 Skills 了。這時候,一篇來自 Anthropic 團(tuán)隊的 Skills 秘籍在外網(wǎng)廣為流傳,為想要構(gòu)建 Skills 的開發(fā)者和智能體用戶提供了絕佳的參考資料。
![]()
- 博客標(biāo)題:Lessons from Building Claude Code: How We Use Skills
- 博客鏈接:https://x.com/trq212/status/2033949937936085378
這篇文章來自于 Anthropic 的 Claude Code 團(tuán)隊工程師,Skills 功能核心參與者 Thariq Shihipar。內(nèi)容大多是 Anthropic 內(nèi)部使用 Skills 的實戰(zhàn)經(jīng)驗和總結(jié)。
我們對該博客進(jìn)行了全文編譯,希望讀者從中獲取關(guān)于 Skills 制作、使用和推廣分發(fā)相關(guān)的經(jīng)驗。
以下是博客全文:
Skills 已經(jīng)成為 Claude Code 中使用最廣泛的擴(kuò)展方式之一。它們靈活、易于創(chuàng)建,也方便分發(fā)。
但這種靈活性也帶來了一個問題:很難判斷什么才是最佳實踐。什么類型的 Skills 值得開發(fā)?寫出一個優(yōu)秀 Skill 的秘訣是什么?又應(yīng)該在什么時候?qū)⑺鼈兎窒斫o他人?
在 Anthropic 內(nèi)部,我們已經(jīng)在 Claude Code 中廣泛使用 Skills,目前有數(shù)百個 Skills 在實際運行中。
這些是我們在使用 Skills 來加速開發(fā)過程中總結(jié)的一些經(jīng)驗。
什么是 Skills ?
如果你剛接觸 Skills,建議先閱讀我們的文檔:
相關(guān)鏈接:https://code.claude.com/docs/en/skills
本文默認(rèn)你已經(jīng)對 Skills 有一定了解。
我們經(jīng)常聽到一個常見的誤解:認(rèn)為 Skills「只是一些 Markdown 文件」。但實際上,Skills 最有趣的地方在于 —— 它們并不僅僅是文本文件,而是一個文件夾,里面可以包含腳本、資源、數(shù)據(jù)等內(nèi)容,供智能體進(jìn)行發(fā)現(xiàn)、探索和操作。
在 Claude Code 中,Skills 還具備多種配置選項,包括注冊動態(tài)鉤子(hooks)等。
相關(guān)鏈接:https://code.claude.com/docs/en/skills#frontmatter-reference
我們發(fā)現(xiàn),一些最有意思的 Skills,正是通過巧妙利用這些配置選項和文件結(jié)構(gòu)來實現(xiàn)的。
Skills 類型
在整理我們所有 Skills 之后,我們發(fā)現(xiàn)它們大致可以分為幾個常見的類別。
最好的 Skills 通常能夠清晰地歸類到一個類別中,而那些更為復(fù)雜或難以理解的 Skills,則可能跨越多個類別。這并不是一個權(quán)威的分類列表,但它為你判斷在你的組織中是否缺少某些類型的 Skills 提供了一個很好的思路。
![]()
1. 庫與 API 參考
這些 Skills 解釋如何正確使用庫、CLI 或 SDK。這些 Skills 可以是針對內(nèi)部庫,也可以是針對 Claude Code 在使用常見庫時遇到困難的庫。它們通常包含一組參考代碼片段,以及 Claude 在編寫腳本時應(yīng)避免的一些常見問題。
示例:
- billing-lib — 你的內(nèi)部賬單庫:邊緣情況、常見陷阱等
- internal-platform-cli — 你內(nèi)部 CLI 包裝器的每個子命令,并提供何時使用它們的示例
- frontend-design — 使 Claude 更好地理解你的設(shè)計系統(tǒng)
2. 產(chǎn)品驗證
這些 Skills 描述了如何測試或驗證代碼是否正常工作。它們通常與外部工具(如 Playwright、tmux 等)配合使用,以進(jìn)行驗證。
驗證 Skills 對確保 Claude 輸出正確非常有用。可能值得讓工程師花一周時間,專注于提高驗證 Skills 的質(zhì)量。
考慮使用技術(shù),例如讓 Claude 記錄它的輸出視頻,這樣你就可以準(zhǔn)確看到它測試了什么,或者在每個步驟上強制進(jìn)行狀態(tài)的程序化斷言。這些通常通過在 Skills 中包含各種腳本來實現(xiàn)。
示例:
- signup-flow-driver — 在無頭瀏覽器中運行注冊 → 郵件驗證 → 入職流程,并在每個步驟上進(jìn)行狀態(tài)斷言
- checkout-verifier — 使用 Stripe 測試卡驅(qū)動結(jié)賬界面,驗證發(fā)票是否真正落入正確的狀態(tài)
- tmux-cli-driver — 用于需要 TTY 的交互式 CLI 測試
3. 數(shù)據(jù)抓取與分析
這些 Skills 連接到你的數(shù)據(jù)和監(jiān)控系統(tǒng)。這些 Skills 可能包括庫,用于通過憑證、特定的儀表盤 ID 等抓取數(shù)據(jù),以及常見工作流或獲取數(shù)據(jù)的方式說明。
示例:
- funnel-query — "我需要哪些事件來查看注冊 → 激活 → 付費" 以及實際包含標(biāo)準(zhǔn) user_id 的表
- cohort-compare — 比較兩個群體的留存率或轉(zhuǎn)化率,標(biāo)記統(tǒng)計顯著的差異,鏈接到細(xì)分定義
- grafana — 數(shù)據(jù)源 UID、集群名稱、問題 → 儀表盤查找表
4. 業(yè)務(wù)流程與團(tuán)隊自動化
這些 Skills 將重復(fù)的工作流自動化為一個命令。雖然這些 Skills 通常是相對簡單的指令,但可能有更復(fù)雜的依賴關(guān)系,涉及其他 Skills 或 MCP(多控制點)。
對于這些 Skills,將先前的結(jié)果保存在日志文件中有助于保持模型的一致性,并反映工作流的前期執(zhí)行。
示例:
- standup-post — 匯總你的任務(wù)追蹤器、GitHub 活動和 Slack 內(nèi)容 → 格式化的站立會議,僅顯示增量變化
- create--ticket — 強制執(zhí)行模式(有效的枚舉值、必填字段)以及創(chuàng)建后工作流(通知審閱者、在 Slack 中鏈接)
- weekly-recap — 合并的 PR + 關(guān)閉的票據(jù) + 部署 → 格式化的周報
5. 代碼腳手架與模板
這些 Skills 用于生成代碼庫中特定功能的框架模板。你可以將這些 Skills 與可組合的腳本結(jié)合使用。它們在你的腳手架有自然語言要求,而這些要求無法僅通過代碼覆蓋時尤為有用。
示例:
- new--workflow — 使用你的注釋腳手架一個新的服務(wù) / 工作流 / 處理器
- new-migration — 你的遷移文件模板以及常見的坑
- create-app — 新的內(nèi)部應(yīng)用,預(yù)先配置你的認(rèn)證、日志記錄和部署
6. 代碼質(zhì)量與審核
這些 Skills 強制執(zhí)行你組織中的代碼質(zhì)量并幫助審查代碼。它們可以包括確定性的腳本或工具,以確保最大程度的穩(wěn)健性。你可能希望將這些 Skills 自動運行,作為鉤子的一部分或 GitHub Actions 中的一部分。
示例:
- adversarial-review — 啟動一個新鮮眼光的子智能體進(jìn)行批評,實施修復(fù),迭代直到反饋降級為小瑕疵
- code-style — 強制執(zhí)行代碼風(fēng)格,特別是 Claude 默認(rèn)處理不好的一些風(fēng)格
- testing-practices — 關(guān)于如何編寫測試以及需要測試什么的說明
7. CI/CD 與部署
這些 Skills 幫助你在代碼庫內(nèi)獲取、推送和部署代碼。這些 Skills 可能引用其他 Skills 以收集數(shù)據(jù)。
示例:
- babysit-pr — 監(jiān)控 PR → 重試不穩(wěn)定的 CI → 解決合并沖突 → 啟用自動合并
- deploy- — 構(gòu)建 → 煙霧測試 → 漸進(jìn)式流量發(fā)布與錯誤率比較 → 回滾回退
- cherry-pick-prod — 隔離工作樹 → 衍生選擇 → 沖突解決 → 帶模板的 PR
8. 運行手冊
這些 Skills 通過癥狀(如 Slack 線程、警報或錯誤簽名),進(jìn)行多工具調(diào)查,并生成結(jié)構(gòu)化報告。
示例:
- -debugging — 映射癥狀 → 工具 → 查詢模式,適用于你最高流量的服務(wù)
- oncall-runner — 獲取警報 → 檢查常見問題 → 格式化結(jié)果
- log-correlator — 給定請求 ID,從可能涉及的所有系統(tǒng)中提取匹配的日志
9. 基礎(chǔ)設(shè)施操作
這些 Skills 執(zhí)行常規(guī)的維護(hù)和操作程序,其中一些涉及需要有防護(hù)措施的破壞性操作。它們使工程師更容易遵循最佳實踐,在關(guān)鍵操作中避免出錯。
示例:
- -orphans — 查找孤立的 pods/volumes → 發(fā)布到 Slack → 浸泡期 → 用戶確認(rèn) → 級聯(lián)清理
- dependency-management — 你組織的依賴審批工作流
- cost-investigation — "為什么我們的存儲 / 出站流量賬單突然飆升",并提供具體的存儲桶和查詢模式
制作 Skills 的技巧
![]()
一旦你決定要制作某個 Skills,如何編寫它呢?以下是我們總結(jié)的一些最佳實踐、技巧和竅門。
我們最近還發(fā)布了 Skill Creator,使得在 Claude Code 中創(chuàng)建 Skills 變得更加容易。
相關(guān)鏈接:https://claude.com/blog/improving-skill-creator-test-measure-and-refine-agent-skills
不要陳述顯而易見的內(nèi)容
Claude Code 已經(jīng)了解很多關(guān)于你的代碼庫的信息,也了解很多編碼的基礎(chǔ)知識,包括許多默認(rèn)的觀點。如果你發(fā)布的 Skills 主要是關(guān)于知識的,嘗試專注于那些能夠讓 Claude 脫離正常思維方式的信息。
示例:
前端設(shè)計 Skills就是一個很好的例子 —— 它是由 Anthropic 的一位工程師通過與客戶反復(fù)迭代,旨在提升 Claude 的設(shè)計品味,避免使用經(jīng)典的設(shè)計模式(例如 Inter 字體和紫色漸變)。
相關(guān)鏈接:https://github.com/anthropics/skills/blob/main/skills/frontend-design/SKILL.md
構(gòu)建陷阱部分
![]()
在任何 Skills 中,Gotchas(常見陷阱)部分是最有價值的內(nèi)容。這些部分應(yīng)該基于 Claude 在使用 Skills 時遇到的常見失敗點來構(gòu)建。理想情況下,你應(yīng)該隨著時間的推移更新你的 Skills,捕捉這些常見問題,以確保 Skills 的有效性和準(zhǔn)確性。
使用文件系統(tǒng)和漸進(jìn)式披露
![]()
正如我們之前提到的,Skills 是一個文件夾,而不僅僅是一個 Markdown 文件。你應(yīng)該將整個文件系統(tǒng)視為一種上下文工程和漸進(jìn)式披露的方式。告訴 Claude 你的 Skills 包含哪些文件,它將在適當(dāng)?shù)臅r候讀取它們。
漸進(jìn)式披露的最簡單形式是指向其他 Markdown 文件供 Claude 使用。例如,你可以將詳細(xì)的函數(shù)簽名和使用示例分離到 references/api.md 中。
另一個例子:如果你的最終輸出是一個 Markdown 文件,你可以在 assets/ 文件夾中包括一個模板文件供 Claude 復(fù)制和使用。
你可以有多個文件夾來存儲參考資料、腳本、示例等,這些都有助于 Claude 更有效地工作。
避免「束縛」 Claude
Claude 通常會盡量遵循你的指示,然而由于 Skills 的高度可復(fù)用性,你需要小心不要讓指令過于具體。給予 Claude 必要的信息,同時也要留給它一定的靈活性以適應(yīng)不同的情況。
例如:
![]()
思考 Skills 的設(shè)置
![]()
有些 Skills 可能需要用戶提供上下文信息來完成設(shè)置。例如,如果你在制作一個將站立會議內(nèi)容發(fā)布到 Slack 的 Skills,你可能希望 Claude 詢問要發(fā)布到哪個 Slack 頻道。
一種良好的做法是將這些設(shè)置的信息存儲在 Skills 目錄中的 config.json 文件中,如上例所示。如果配置尚未設(shè)置,智能體可以提示用戶提供必要的信息。
如果你希望智能體呈現(xiàn)結(jié)構(gòu)化的多選問題,可以指示 Claude 使用AskUserQuestion工具。
描述字段是給模型的
![]()
當(dāng) Claude Code 啟動一個會話時,它會構(gòu)建一個包含每個可用 Skills 及其描述的列表。這份列表是 Claude 用來決定「是否有 Skills 能解決這個請求?」的依據(jù)。因此,描述字段并不是 Skills 的總結(jié),而是描述何時觸發(fā)這個 Skills 的場景。
記憶與存儲數(shù)據(jù)
![]()
有些 Skills 可以通過在其內(nèi)部存儲數(shù)據(jù)來實現(xiàn)一定的記憶功能。你可以將數(shù)據(jù)存儲在簡單的附加文本日志文件、JSON 文件,或者更復(fù)雜的 SQLite 數(shù)據(jù)庫中。
例如:
一個 standup-post Skills 可能會保留一個 standups.log,記錄每次發(fā)布的內(nèi)容。這意味著下次運行時,Claude 可以讀取自己的歷史記錄,并能夠檢測自昨天以來的變化。
需要注意的是,存儲在 Skills 目錄中的數(shù)據(jù)可能在 Skills 升級時被刪除,因此你應(yīng)當(dāng)將數(shù)據(jù)存儲在一個穩(wěn)定的文件夾中。到目前為止,我們?yōu)槊總€插件提供了 ${CLAUDE_PLUGIN_DATA} 作為穩(wěn)定存儲數(shù)據(jù)的文件夾。
存儲腳本與生成代碼
提供代碼是給 Claude 最強大的工具之一。將腳本和庫交給 Claude,可以讓它專注于組合和決策,而不是重新構(gòu)建基礎(chǔ)代碼。
例如:
在你的數(shù)據(jù)科學(xué) Skills 中,你可能有一組用于從事件源抓取數(shù)據(jù)的函數(shù)庫。為了讓 Claude 執(zhí)行復(fù)雜的分析,你可以為它提供一套像這樣的幫助函數(shù):
![]()
Claude 然后可以動態(tài)生成腳本,利用這些功能組合來執(zhí)行更高級的分析,比如處理類似 「星期二發(fā)生了什么?」 這樣的提示。
![]()
按需鉤子(On Demand Hooks)
Skills 可以包括僅在 Skills 被調(diào)用時激活的鉤子,并且這些鉤子的作用僅持續(xù)到會話結(jié)束。這對于一些有強烈意見、但并不希望一直運行的鉤子特別有用,它們在某些情況下會非常有價值。
例如:
- /careful— 通過 Bash 中的PreToolUse匹配器阻止 rm -rf、DROP TABLE、force-push、kubectl delete 等危險操作。你只希望在知道自己正在操作生產(chǎn)環(huán)境時才啟用它,常開會讓你瘋狂。
- /freeze— 阻止在特定目錄外的任何編輯 / 寫入操作。非常有用,特別是當(dāng)你想確保只有在特定文件夾中進(jìn)行更改時才執(zhí)行代碼時。
- 調(diào)試時:「我想加日志,但我總是無意中‘修復(fù)’無關(guān)的內(nèi)容。」 使用按需鉤子,可以防止在不需要的情況下影響其他文件或代碼片段。
這些鉤子可以根據(jù)實際需要進(jìn)行觸發(fā),而不是始終保持啟用狀態(tài),從而避免不必要的干擾,同時在需要時提供強有力的功能。
Skills 分發(fā)
Skills 的最大優(yōu)勢之一是,你可以將它們與團(tuán)隊中的其他成員共享。
你有兩種方式可以將 Skills 分享給別人:
1. 將 Skills 檢查到你的代碼庫中(在 ./.claude/skills 下)。
2. 創(chuàng)建插件并擁有一個Claude Code Plugin市場,用戶可以在其中上傳和安裝插件(有關(guān)更多信息,請參閱文檔 https://code.claude.com/docs/en/plugin-marketplaces)。
對于在相對較少的代碼庫中工作的較小團(tuán)隊,將 Skills 檢查到代碼庫中是一個不錯的選擇。但每個被檢查進(jìn)來的 Skills 都會增加一些模型的上下文。當(dāng)團(tuán)隊規(guī)模擴(kuò)大時,內(nèi)部插件市場可以幫助你分發(fā) Skills,并讓團(tuán)隊成員決定哪些 Skills 需要安裝。
管理市場
如何決定哪些 Skills 進(jìn)入市場?人們?nèi)绾翁峤凰鼈儯?/p>
我們沒有一個集中式的團(tuán)隊來做決定;相反,我們嘗試通過自然的方式找到最有用的 Skills。如果你有一個 Skills 想讓大家嘗試,你可以將它上傳到 GitHub 的沙箱文件夾,并通過 Slack 或其他論壇將鏈接分享給大家。
當(dāng)一個 Skills 獲得一定的關(guān)注度(由 Skills 擁有者決定)后,他們可以提交一個 PR,將其移入市場。
警告:創(chuàng)建不必要的或冗余的 Skills 是非常容易的,因此在發(fā)布之前,確保你有一個篩選和策劃的方法非常重要。
組合 Skills
你可能希望有一些 Skills 相互依賴。例如,你可能有一個文件上傳 Skills,它上傳文件;還有一個 CSV 生成 Skills,它生成 CSV 并上傳文件。這類依賴管理目前在市場或 Skills 中并沒有內(nèi)建功能,但你可以直接通過名稱引用其他 Skills,如果它們已被安裝,模型會調(diào)用它們。
衡量 Skills 的效果
為了了解一個 Skills 的表現(xiàn),我們使用了PreToolUse鉤子,允許我們記錄公司內(nèi) Skills 的使用情況(代碼鏈接:https://gist.github.com/ThariqS/24defad423d701746e23dc19aace4de5)。
這意味著我們可以發(fā)現(xiàn)哪些 Skills 比較受歡迎,哪些 Skills 的觸發(fā)率低于我們的預(yù)期。
結(jié)論
Skills 是極其強大且靈活的智能體工具,但目前仍處于早期階段,我們還在不斷摸索如何最好地使用它們。
可以將這篇文章看作是我們在使用過程中積累的一些有用提示,而非權(quán)威指南。理解 Skills 的最佳方式是開始實踐,進(jìn)行實驗,看看什么最適合你。
我們的大多數(shù) Skills 最初只是一行代碼和一個「Gotcha」,隨著 Claude 遇到新的邊界情況,大家會不斷進(jìn)行完善。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.