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 進行版本控制後,再也回不去手動存好幾個版本的那笨拙感。

Claude Code Marketplace 是什麼?從原理到實作打造你的 Plugin 資料庫 | chienchuanw