Skip to content

有點會 Claude Code:用 Marketplace 管理你的 skills

〈如何分享你的 skills 給全世界〉一文中,我們有稍稍提到透過 marketplace 來提供自己的 plugins (skills) 是個很好的做法,但看完可能還是只知道如何新增別人現有的 marketplace 作為來源,而不清楚如何自己建立一個私有的 marketplace 來管理自己建立的 skills,最後又只能透過複製 SKILL.md 的傳統作法來移轉。

Marketplace 的原理

有用過 npm 安裝過套件的人都知道,我們在進行 npm install <package-name> 時,並不是本機已經預先載入 npm 所有的套件,而是透過這個指令解析源頭的 url,然後透過這個 url 遠端下載這個套件。

想像 marketplace 是一個好大的淘寶,每個商品(plugins)都來自不同的倉儲地方(repo),我們可以閱覽 marketplace.json 看到目前有哪些 plugins 可以下載,當使用者看到自己喜歡的 plugin 並且進行下載時,Claude Code 會透過 marketplace.json 對應的源頭指標(source)將 plugins 複製至本機。

一個 plugin 裡面可以有一個或多個 skills。

所以 marketplace 的本質其實是「一個 Git Repo + marketplace.json」。

chuan-skills/
├── .claude-plugin/
│   └── marketplace.json        # Plugin 清單 (列出所有可用的 plugins)
├── plugins/                    # 存放 plugins (skills) 的地方
│   └── branch-report/
│       └── skills/
│           └── branch-report/
│               └── SKILL.md
├── CLAUDE.md
└── README.md

Marketplace = Git-based registry

當我們在 Claude Code 輸入 /plugin marketplace add <GitHub username>/<repo name> 時,例如輸入 /plugin marketplace add chienchuanw/chuan-skills,實際上的流程是:

  1. Claude 會解析 chienchuanw/chuan-skills 轉成 GitHub repo url。
  2. 如果有在我的 GitHub (chienchuanw) 找到這個 chuan-skills 的 repo,會進行 clone & fetch 這個 repo。
  3. 在這個 repo 尋找 .claude-plugin/marketplace.json 這個檔案。
  4. 讀取檔案裡 plugins 裡陣列的內容,並建立 marketplace registry,也就是我們在 marketplace 裡面看到的 plugins 清單。

如果不是用 GitHub 管理 marketplace,則可以用 /plugin marketplace add <repo url> 新增 marketplace。

當我們選擇要安裝的 plugin 時,Claude Code 會根據 marketplace.json 裡面選定 plugin 的 source 路徑,將檔案從 repo 複製到本機指定的地點。

複製的目的地取決於使用者選擇的是 user, project 或是 local scope。

install-scope

{
  "name": "chuan-skills",
  "owner": {
    "name": "chienchuanw"
  },
  "metadata": {
    "description": "Personal collection of Claude Code skills",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "skill-creator",
      "description": "Create, test, evaluate, and iteratively improve Claude Code skills",
      "source": {
        "source": "url",
        "url": "https://github.com/anthropics/skills.git"
      }
    },
    {
      "name": "branch-report",
      "description": "Generates a branch comparison report with simple explanations and senior developer review",
      "source": "./plugins/branch-report", // 這邊告知 plugin 來源路徑
      "strict": false
    }
  ]
}

從上面的 marketplace.json 中,也可以看到除了我自己所創造的 branch-report plugin,還有一個 skill-creator plugin,但因為這個 plugin 是由於 Anthropic 所維護,與其自行把原始碼複製到我的私人 marketplace,不如直接標記源頭,這樣未來 Anthropic 有更新 skill-creator 時,我們也會自動安裝到最新版本。

注意:如果是已經安裝的 plugin,就算遠端有發佈更新版本,本機已安裝的 plugin 是**「不會」**自動更新。

團隊專屬的 marketplace

前面的範例都是在 GitHub repo 設定為 public 的前提下進行操作,也就是說其他人也可以看到這個 repo 並設定為自己的 marketplace 來源之一,那如果是「團隊內部」不公開的 marketplace 呢?

目前實務上有兩種做法:

方法一:Local clone

  1. 使用 git clone <private-repo> 將私人的 marketplace repo 複製到本機
  2. 在 Claude Code 輸入 /plugin marketplace add <repo 所在路徑>

方法二:Private Repo + 團隊權限

  1. 在 Private Repo 提供指定成員 access 權限
  2. 在 Claude Code 輸入 /plugin marketplace add <repo 所有者>/<repo 名稱>

由於 Claude Code 對於 private repo 的支援還不穩定,方法二有可能會失敗。 建議使用方法一。

更新或移除 marketplace 下載的 plugin

如果遠端的 marketplace repo 進行更新,本機的 marketplace 預設是**「不會自動更新」**。

我們需要在 Claude Code 輸入 /plugin,於 Marketplaces 分頁裡選擇指定的 marketplace,像下方截圖選擇了我自己的 chuan-skills marketplace,可以在選單中選擇 Update marketplace 進行手動更新,或是將 auto-update 開啟(下方會標示 Auto-update enabled)讓 Claude Code 定期去更新 marketplace 清單。

update-marketplace

手動更新後,如果沒反應,可以試試看跳出 Claude Code 再重新啟動。

另外前面也有說到,Claude Code 不會自動更新已經安裝 plugin,就算使用 Update marketplace 進行來源更新,本機已經安裝的 plugin 也仍然維持原狀。

所以我們要先透過 /plugin uninstall <plugin 名稱>@<marketplace repo名稱> 解除安裝舊版的 plugin,然後再透過 marketplaces 的介面重新安裝最新版的 plugin。

如果選單在輸入完指令後沒有更新,重啟 Claude Code 通常會是個好選擇!


在沒有實際操作過 marketplace 前,我本來也是透過複製 SKILL.md 或是直接使用別人現成的指令來安裝 plugins,完全沒有「打造自己專屬 plugins 資料庫」的概念,像說反正也都用同一台電腦開發,不如就讓它亂吧。

但自己從零走完一次開發 plugin 的過程後,會發現懂得使用 marketplace 讓我們在 plugin 管理與版本更新上,有了更舒服的體驗,有點像是學會用 Git 進行版本控制後,再也回不去手動存好幾個版本的那笨拙感。