一如我們可以蒐集(搜刮?)別人已經做好的好用 skills,我們也可以把自己寫好的 skills 提供給他人使用。
這時候我們心中可能會冒出幾種聲音:
「我不好意思分享自己的 skills 啦!」
「別人的 skills 已經很好用了,幹嘛用我的?」
「我這麼嫩,寫的 skills 一定很爛,分享出去會被嘲笑的!」
別擔心,我跟你一樣,大多時候我們都是「寫給自己用」,不過跟使用 lint 工具一樣,進行團隊協作時,為了統一大家的格式、縮排,我們傾向對 lint 進行相同的設定。
同樣地,有時候團隊之間共用指定的 skill,可以確保大家盡可能在開發上維持一致的流程,並產出風格接近的成果。
這種相對「私底下」的分享方式,我們可以將 ./.claude/skills 透過 Git 等版本控制工具進行版控,然後透過 GitHub repo 分享給團隊成員共同使用。
將 skills 做成 plugin
如果只是在小團隊內分享,大家開發的專案數量相同重疊,那透過 repo 分享確實簡單方便,但每一個 skills 的存在都會增加 agent 與 model 理解上下文(context)的負擔,當開發的規模與專案數量增加後,更適當的做法應該是將這些 skills 打包成 plugin,並註冊到 marketplace 讓團隊成員可以使用 CLI 進行查看,並根據各自的需求安裝。
這邊的 marketplace 可以想像成是 skills 的百貨公司,雖說是百貨公司,並不代表我們上傳的 skills 必須公諸於世,更像是有系統地管理我們所擁有的 skills,所以這個 marketplace 也可以存放在私人的 repo 空間裡。
以 Anthropic 官方提供的 skills repo 為例:
- 在 Claude Code 輸入
/plugin marketplace add anthropics/skills,將這個官方的 marketplace 註冊成為我們 Claude Code 擁有的其中一個 marketplace。 - 完成安裝後,在 Claude Code 輸入
/plugin,並透過左右方向鍵切換到 Marketplaces 的分頁,我們可以在列表看到剛剛註冊好的anthropic-agent-skills。 - 進入到
anthropic-agent-skills裡面,可以選擇Browse plugins來查看這個 marketplace 所提供的 plugins。 - 任意選取一個 plugin 便可以開始進行安裝。
Marketplace 的原理
我們可能會以為註冊 marketplaces 是不是等於「在電腦裡全域安裝這些 plugin」,然後針對指定專案開啟特定的 plugin。
事實上,marketplace 只是一個名為 marketplace.json 的「索引」文件,它告訴我們:
- 這個 marketplace 的名稱與擁有者聯絡資訊
- 這個 marketplace 所提供的 plugin 列表
- 每個 plugin 的名稱、描述、內容、安裝來源、所擁有的 skills 等
理解了 marketplace 的原理後,我們也可以透過自己的 repo 來建立個人的 marketplace,為自己收集到的 skill 進行建檔管理。
marketplace.json的詳細內容可參考 Anthropics/skills/marketplace.json。
根據 Claude 工程師的分享,Anthropic 內部並沒有一個專門審核 marketplace 的小組,而是讓來自各方的使用者自行決定「哪些 marketplace 是值得信賴的」、「哪些 skills 是有用的」。
一旦使用者決定想要「上架」自己的 skill 至某個特定的 marketplace,可以透過 Pull Request (PR) 的方式,讓自己的 skill 成為該 marketplace 的其中一個 plugin。
目前比較可惜的是,marketplaces 目前還不支援「依賴管理(dependency management)」,也就是說,如果我們有一個「上傳檔案的 skill」,然後有另外一個「csv 檔案生成並上傳的 skill」,很顯然後者必須依賴前者才能正常運作,只是目前 marketplace 還無法表示出「依賴關係」。
現行只能透過在對話中提及這個指定的「依賴 skill」,在已經有安裝該 skill 的狀況下,讓 agent 可以自主觸發這個 skill。
如何得知 skills 的使用狀況
剛開始使用一個新工具時,難免我們什麼都想試試,但時間久了會發現,用來用去偏愛的 skills 固定就那幾個,在 Anthropic 內部會透過 PreToolUse hook 來記錄每個 skill 的使用次數,藉此得知哪些 skills 比較受歡迎,哪些 skill 早就被大家打入冷宮。
Claude 工程師 Thariq 有提供 PreToolUse 的範例程式碼:measure-skills.bash。
也是因為同事分享了 Lessons from Building Claude Code: How We Use Skills 這篇好文,我才有機會仔細審視自己在開發上的習慣,像是有些指令、提示詞明明可以寫成 skill,卻因為懶得鑽研與搜尋 skill,寧可每次浪費時間手動輸入,而不肯痛一次來優化這個工作流程。
與其說 skills 要取代 MCP 來改變整個開發生態,我更覺得 skills 是一種釋放我們生產力的思維,像是哆啦 A 夢的記憶吐司,我們需要哪個能力就吃哪片吐司,還不用擔心會吃太飽。
