Claude Code 自己寫一個插件並發布到 marketplace:plugin.json、marketplace.json、validate 到團隊安裝的完整流程

想把自己寫的 Skill、Hook 打包給團隊用?按 Claude Code 官方 Plugins 文檔,從目錄結構、plugin.json、claude plugin validate,到寫 marketplace.json、推到 Git、讓同事一條命令安裝,再到版本更新,走完一遍完整流程。

NNathaniel bigo··原創首發·AI 輔助撰寫
12 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 Pro 帳號
本文根據 Claude Code 官方文檔《Create a Claude Code plugin》《Publish a plugin》《Create a marketplace》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • 已經有自己的 Skill、子智能體或 Hook,想打包後讓團隊一條命令裝上的人;
  • 想知道「插件」「marketplace」到底是什麼關係、怎麼自己建一個的人。

怎麼安裝別人的插件,站內已有 /guides/claude-code-plugins-marketplace;本文講自己做、自己發。

結論先說

  1. 插件 = 一個目錄 + 一份清單。 官方定義:插件是一組 Skill、子智能體、Hook、MCP 伺服器的目錄,外加 .claude-plugin/plugin.json(清單),Claude Code 把它當作一個整體加載。
  2. 什麼時候值得做成插件。 官方說,只給自己或一個項目用,保留 .claude/ 裏的獨立配置就行;想與團隊共享、裝進多個項目或發佈帶版本的發行版,再做插件。
  3. 插件裏的 Skill 命令帶前綴。 例如 /my-first-plugin:hello,所以兩個插件都有 hello 也不會衝突。
  4. marketplace 就是一個 Git 倉庫裏的 .claude-plugin/marketplace.json。 官方說文件進了倉庫,插件就算發佈了,沒有提交表單;倉庫私有,市場就是私有的。
  5. 改了代碼但沒改 version,用戶收不到更新。 這是官方特別提醒的坑。

從目錄到團隊安裝的流程

圖:本站根據 Claude Code 官方文檔:Create a plugin 整理的示意圖

一、目錄結構和 plugin.json

下面用一個演示插件 db-guard,裏面裝站內另一篇講過的 migration-review Skill(見 /guides/claude-code-write-own-skill-auto-trigger)。官方規定每類組件放在固定位置:

text
db-guard/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── migration-review/
│       ├── SKILL.md
│       └── scripts/check.sh
├── agents/            # 可選:子智能體,每個一個 .md
├── hooks/hooks.json   # 可選:Hook 配置
└── .mcp.json          # 可選:MCP 伺服器

官方特別強調:.claude-plugin/ 裏只放 plugin.json,把 Skill 放進去不會加載;插件根目錄是它自己的目錄,不是 ~/.claude/。

bash
mkdir -p db-guard/.claude-plugin db-guard/skills

db-guard/.claude-plugin/plugin.json(字段來自官方示例):

json
{
  "name": "db-guard",
  "description": "數據庫遷移檢查:Skill 與檢查腳本",
  "version": "1.0.0",
  "author": { "name": "Your Name" }
}

官方對字段的說明:name 必填,會成為插件裏每個 Skill 和子智能體的前綴,不要有空格;description 是用戶在 /plugin 裏看到的文字;version 可選,設定後用戶停留在該版本,直到你改它;author.name 必填(若寫了 author)。

二、把已有配置搬進插件

如果你已經有 .claude/ 下的配置,官方的遷移做法是複製:

bash
cp -r .claude/skills db-guard/
cp -r .claude/agents db-guard/      # 沒有就跳過
cp -r .claude/commands db-guard/    # 沒有就跳過

Hook 要把 .claude/settings.json 裏的 hooks 對象複製進 hooks/hooks.json,格式相同,外面包一層頂層 "hooks" 鍵。官方提醒兩點:

  • 遷移期間原來的 .claude/ 還在,Skill 和子智能體因為帶前綴不會衝突,但 Hook 沒有前綴,兩處都有會各跑一次;確認插件好用後,刪掉原件並從設定裏移除 hooks。
  • 腳本路徑在 Hook 命令和 MCP 配置裏要寫成 ${CLAUDE_PLUGIN_ROOT}/...,官方說 validate 會報告不是 ./ 開頭的組件路徑。

三、驗證和本地試跑

官方在發佈前建議的三步:

bash
claude plugin validate ./db-guard
claude --plugin-dir ./db-guard

第一條會檢查清單和 Skill 的 frontmatter,通過時最後一行是 ✔ Validation passed;失敗時每條消息會指出要改的字段。第二條只在這次會話裏加載插件,不寫入你的設定。進去後運行帶前綴的命令:

text
/db-guard:migration-review

邊改邊測時,官方說在會話裏運行 /reload-plugins 加載改動。發佈前再用 claude plugin validate --strict ./db-guard,它會把「未知字段」「缺少 version」之類的警告也當失敗(退出碼 1),適合放進 CI。

四、寫 marketplace.json 並推到 Git

官方給了最省事的發佈方式:插件自己的倉庫裏就放一份市場文件,位置在 .claude-plugin/marketplace.json,source 寫 "./" 表示倉庫根:

json
{
  "name": "acme-tools",
  "owner": { "name": "Your Name" },
  "plugins": [
    { "name": "db-guard", "source": "./" }
  ]
}

規則(來自官方):

  • 市場的 name 要起得別人不容易重名,因為一個用戶不能裝兩個同名市場;
  • 條目的 name 要和 plugin.json 裏的 name 一致,否則按清單名安裝會報 Plugin "<manifest-name>" not found in marketplace;
  • 相對路徑從市場根目錄寫,不要用 ..;
  • 官方保留了一批名字(例如 claude-plugins-official),添加叫這個名字的市場會被拒絕。

如果一個倉庫裏放多個插件,官方的目錄是 my-marketplace/plugins/<插件名>/,條目 source 寫 ./plugins/<插件名>。

先在本機走通一遍再推送,官方的本地迴路是:

bash
claude plugin validate .
claude plugin marketplace add ./
claude plugin install db-guard@acme-tools
claude plugin list

install 的 id 是「條目名 + @ + 市場名」;list 裏應看到 db-guard@acme-tools 且狀態為 enabled。想從頭再來,用 claude plugin marketplace remove acme-tools,它會移除市場並卸載其中的插件。然後 git push 到你的 GitHub 或其他 Git 倉庫即可,官方說誰能克隆倉庫誰就能安裝,所以私有倉庫就是私有市場。

自建 marketplace 常見錯誤怎麼查

圖:本站根據官方文檔整理的示意圖

五、同事怎麼裝

官方給的幾種寫法,把來源和名字換成你的:

bash
claude plugin marketplace add your-org/acme-tools
claude plugin install db-guard@acme-tools

會話裏也可以一條命令完成:/plugin install db-guard --marketplace your-org/acme-tools(官方標註需要 v2.1.275 或更高);在 shell 裏一步完成的寫法需要 v2.1.292 或更高。安裝前請同事先看看你的倉庫裏放了什麼,原因見 /guides/agent-skills-security-audit-before-install。

六、發新版本

官方的規則是二選一:

  • 每次發佈都遞增 plugin.json 裏的 version。 如果你設了 version,之後只推提交不改版本,用戶運行 claude plugin update 會看到 is already at the latest version,仍然用舊的;
  • 或者在 Git 託管的市場裏乾脆不寫 version,這時 Claude Code 用提交的 SHA 當版本。此時 --strict 會因缺少 version 報警,官方說那就去掉 --strict。

用戶拿更新有兩條路:自己運行 claude plugin update db-guard@acme-tools;或者為你的市場開自動更新,官方說預設是關的,由用戶一側設定。

七、要發給更多人怎麼辦

按官方「Publish a plugin」的對比:

方式誰能裝自動拿更新嗎
不用市場,直接發目錄或 .zip你發給的人不會,他們用的就是你發的那份
自己的 marketplace能訪問該倉庫的人預設關
提交到 Anthropic 目錄在 claude.ai 或 Cowork 裏添加的人,也會同步進他們的 Claude Code會(版本發佈之後)

提交到 Anthropic 目錄需要一個 GitHub 倉庫和付費的 claude.ai 方案,在開發者門戶提交;官方還說本地 validate 通過不保證門戶一定通過,門戶有額外規則。官方的 claude-plugins-official 市場不接受通過這個門戶提交。這部分流程以 claude.com 官方頁面為準,本文不展開。

常見問題

Q:只想給自己用,需要 marketplace 嗎?

不需要。官方說可以用 --plugin-dir,或者把帶 .claude-plugin/plugin.json 的目錄放到 ~/.claude/skills/ 下,之後每次啟動自動加載(除非管理員禁用了)。目錄優先級見 /guides/claude-code-skills-directory-location-priority。

Q:claude plugin validate 過了,安裝還是失敗?

官方說兩者查的東西不同:validate 只讀市場目錄內的文件。條目的 source 指向不存在的目錄時 validate 會通過,但安裝時報 Source path does not exist;github、git-subdir 這類遠程來源寫錯,也只會在安裝時暴露。

Q:裝好了沒看到我的 Skill?

先 claude plugin details <插件名> 看 Component inventory 裏有沒有列出;再對照第一節的目錄結構,確認 Skill 在 skills/<名字>/SKILL.md,而不是放進了 .claude-plugin/(官方說放在那裏的組件不會加載)。

訂閱和額度

插件裏的 Skill 和子智能體運行時用的是你自己的 Claude Code 額度。訂閱選擇見 /chongzhi/claude-code,價格和額度以官方頁面當前顯示為準。

相關教學

參考資料

  • Claude Code 文檔:Create a Claude Code plugin — https://code.claude.com/docs/en/plugins/create
  • Claude Code 文檔:Publish a plugin — https://code.claude.com/docs/en/plugins/publish
  • Claude Code 文檔:Create a marketplace — https://code.claude.com/docs/en/plugin-marketplaces

Nathaniel 的更多內容

  1. 01

    Claude Personal Finance 是什麼:連銀行帳戶問花銷、怎麼開、只讀權限、誰能用、怎麼解除

    Claude 的 Personal Finance(beta)通過 Plaid 只讀連接你的銀行、信用卡、貸款和投資帳戶,在一頁裏看餘額和花銷並用自然語言提問。本文按官方幫助頁講誰能用(僅美國、Pro/Max/Ultra)、連接與解除步驟、Claude 能看什麼,以及它做不到的事。

    Claude0
  2. 02

    Claude Code 離開一小時回來對話被「壓縮」了:Idle compaction 是什麼、條件、怎麼關

    Claude Code 的 idle compaction 會在你離開約一小時後,把 200K token 以上的長對話先壓縮成摘要,下一條消息就不用重新處理整段歷史。本文按官方文檔講觸發條件、看到什麼提示、用 /config 或 idleCompaction 關閉、調閾值,以及恢復舊對話的用量警告。

    Claude0
  3. 03

    ChatGPT Computer History 是什麼:Mac 桌面端的活動記憶怎麼開、怎麼暫停和清除、誰能用

    Computer History 是 ChatGPT macOS 桌面應用裏預設關閉的可選功能,把你在應用和網站裏的活動整理成記憶和時間線,供 ChatGPT 與 Codex 引用。本文按官方文檔講怎麼開、記錄什麼不記錄什麼、怎麼暫停與清除、數據存哪、誰能用,以及提示注入風險。

    ChatGPTCodex0
  4. 04

    Codex 輸入框出現灰色建議:Composer predictions 是什麼、Tab 接受、怎麼關、誰能用

    Codex 桌面 App 的 Composer predictions(beta)會在 Codex 回完後,根據當前對話在輸入框裏給出下一條消息的建議,按 Tab 接受、不會自動發送。本文按官方幫助頁講誰能用、哪些線程支持、怎麼關、算不算額度,以及沒出現時怎麼查。

    ChatGPTCodex0
  5. 05

    ChatGPT 私隱中心(Privacy Center)在哪裏:私隱設定入口、三大分類和哪些套餐有

    ChatGPT 的 Privacy Center 把記憶、廣告、位置、臨時對話、鎖定對話、兩步驗證、模型改進、數據導出和刪號等入口集中到一頁。本文按官方幫助頁講怎麼打開、三大分類各有什麼、哪些套餐有,以及它不會替你改任何設定。

    ChatGPT0
  6. 06

    Claude Code 處理大倉庫:怎麼讓它只看需要的目錄(子目錄 CLAUDE.md、claudeMdExcludes、deny 規則)

    倉庫太大,Claude Code 總在讀無關文件、讀進別的包的規則?本文按官方大倉庫指南講:從哪個目錄啟動、子目錄 CLAUDE.md、claudeMdExcludes、Read 的 deny 規則、worktree.sparsePaths、additionalDirectories,以及一份合併後的配置示例。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 在 CI 裏跑:從本機 claude -p 到 GitHub Actions 的完整例子(自動審 PR、控成本)

    一條線走完 Claude Code 的 CI 用法:先在本機用 claude --bare -p 配 --json-schema 跑通,再寫進 GitHub Actions 用 claude-code-action@v1 自動審 PR,最後加上 --max-turns、超時、並發限制來控成本,並附上常見故障的排查順序。

    Claude0
  2. 02

    Claude Code 自定義 subagent 實例:測試員、調試員、只讀調研員、只讀數據庫員怎麼寫

    四個可直接改的 subagent 實例:跑測試的 test-runner、找根因的 debugger、只讀調研員、用 PreToolUse hook 限成只讀 SQL 的 db-reader;講 tools、disallowedTools、model、maxTurns 怎麼配,怎麼點名調用。

    Claude0
  3. 03

    Claude Code 的 CLAUDE.md 模板:前端、後端、數據分析各一份,附拆分與自檢方法

    直接拿去改的三份 CLAUDE.md 模板(前端、後端、數據分析),每份都控制在官方建議的 200 行以內;再講怎麼用 .claude/rules 的 paths 拆出專屬規則、用 @ 導入長文檔,以及用 /context all 和 /doctor prompt-audit 檢查是否生效。

    Claude0
  4. 04

    Claude Code 寫一個會自動觸發的 Skill:從需求到觸發,用 description、when_to_use 和 paths 控制它什麼時候出場

    寫好的 Skill 總是不觸發,或者什麼都觸發?本文按 Claude Code 官方「Extend Claude with skills」走一遍完整實例:把「改數據庫遷移前先檢查」寫成一個會自動出場的 Skill,包含 description、when_to_use、paths、附帶腳本、觸發測試和評估。

    Claude0
  5. 05

    Claude Code 配 Sentry MCP 排查線上報錯:添加命令、瀏覽器授權、貼 issue 連結修 bug 和插件子智能體

    線上報錯只能手動複製堆棧給 Claude Code?Sentry 官方提供 MCP 服務,可以讓它直接讀 issue、堆棧和 trace。本文按 Claude Code 官方 MCP 文檔和 Sentry MCP 官方說明,講添加命令、/mcp 授權、典型排查流程、插件方式和自託管注意事項。

    Claude0
  6. 06

    Claude Code 配 Context7 MCP 查最新文檔:兩種安裝方式、use context7 怎麼寫、指定庫和版本

    Claude Code 寫出來的代碼用了舊版 API?Context7 是一個把庫的最新文檔餵給編程助手的 MCP 服務。本文按 Context7 官方倉庫和文檔,講兩種安裝方式、在 Claude Code 裏的添加命令、use context7 與 library ID 的寫法,以及使用時的注意事項。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~