Claude Code 插件市场开发及注意事项

一、项目结构

复制代码
├── .claude-plugin/
│   └── marketplace.json            # 市场定义(唯一必需的配置文件)
├── plugins/
│   ├── plugin-a/                   # 插件 A
│   │   ├── .claude-plugin/plugin.json
│   │   ├── hooks/
│   │   ├── scripts/
│   │   └── skills/
│   ├── plugin-b/                   # 插件 B
│   └── plugin-c/                   # 插件 C
└── dist/                           # 打包输出目录

核心要点: 一个 Git 仓库可以包含多个插件,每个插件放在 plugins/ 下的独立子目录中。


二、关键文件说明

marketplace.json

市场只需要 一个 配置文件:.claude-plugin/marketplace.json。

json 复制代码
{
  "name": "my-marketplace",
  "plugins": [
    {
      "name": "plugin-a",
      "source": "./plugins/plugin-a",
      "description": "插件描述",
      "version": "0.0.1"
    }
  ]
}
  • source 使用相对路径即可,无论本地安装还是远程安装都适用
  • 不需要 额外创建 marketplace-remote.json,Claude Code 会先 clone 仓库再解析相对路径

plugin.json

每个插件必须有 .claude-plugin/plugin.json,定义插件的元信息。


三、安装方式

用户安装流程(两步)

bash 复制代码
# 1. 添加市场源(一次性)
/plugin marketplace add git@your-git-server.com:org/marketplace-repo.git

# 2. 安装具体插件
/plugin install plugin-a@my-marketplace

本地开发调试

bash 复制代码
/plugin marketplace add /path/to/local/marketplace-repo
/plugin install plugin-a@my-marketplace

四、git-subdir 机制

当用户通过 Git URL 添加市场后,安装插件时 Claude Code 使用 git-subdir 机制:

  1. clone 整个仓库到本地缓存
  2. 定位到插件子目录 (如 plugins/plugin-a)
  3. 提取该子目录作为插件内容安装

这就是"一个仓库、多个插件"能工作的原因。


五、SSH vs HTTPS 踩坑记录

问题现象

协议 marketplace add plugin install
HTTPS ❌ 认证失败(内网 Git 平台不支持匿名 HTTPS) -
SSH ✅ 成功 ❌ 报错:地址被转换为错误的 HTTP URL

根因分析

Claude Code 在处理 git-subdir 源时,会内部将 SSH 地址转换为 HTTP 地址进行 clone。如果内网 Git 平台的 HTTP 服务返回了重定向或格式不兼容,就会导致 clone 失败。

转换链路:

复制代码
git@server.com:org/repo.git
    ↓ Claude Code 内部 SSH→HTTP 转换
http://server.com/org/repo.git
    ↓ 平台 HTTP 重定向
http://other-domain.com/path/org/repo.git  ← 不可用

解决方案

利用 Git 的 insteadOf URL 重写机制,将错误的 HTTP 地址拦截并替换回 SSH。

语法结构:

ini 复制代码
[url "<替换后的前缀>"]
    insteadOf = <要被替换的前缀>

示例:

bash 复制代码
git config --global url."git@your-git-server.com:".insteadOf "http://redirected-domain.com/path/"

原理: Git 在发起网络请求前,会先检查 URL 是否匹配 insteadOf 规则,匹配则做前缀替换:

复制代码
输入:  http://redirected-domain.com/path/org/repo.git
匹配:  http://redirected-domain.com/path/
替换为: git@your-git-server.com:
结果:  git@your-git-server.com:org/repo.git  ← 走 SSH,正常工作

注意事项

  • 这条 insteadOf 规则需要每个团队成员都配置一次
  • 建议写入 README 的前置配置步骤中
  • 只做前缀替换,后面的路径部分原样保留

六、常见问题

Q: marketplace.json 和 marketplace-remote.json 都需要吗?

不需要。 只保留 marketplace.json 即可。Claude Code 通过 Git URL 添加市场时,会先 clone 仓库,然后读取 marketplace.json,其中的相对路径会基于 clone 后的本地目录解析。

Q: HTTPS 认证失败怎么办?

如果内网 Git 平台不支持匿名 HTTPS clone,直接使用 SSH 地址 + insteadOf 配置方案。

Q: 更新插件后用户如何获取最新版?

将代码 push 到 Git 仓库后,用户重新执行 /plugin install 即可拉取最新版本。


七、发布 Checklist

  1. ✅ 插件目录下有 .claude-plugin/plugin.json
  2. ✅ marketplace.json 中已注册该插件
  3. ✅ 代码已 push 到远程 Git 仓库
  4. ✅ README 中包含前置配置说明(如需要 insteadOf)
  5. ✅ 团队成员已配置 Git URL 重写规则
相关推荐
收放扳机20 分钟前
多机连线(In-Line)场景下,收放板机“缓存工位”的容量与架构选型参考
人工智能·科技·自动化·制造·pcb工艺
武天旭23 分钟前
AI安全--AI大模型的后门攻击检测与防御
人工智能·深度学习·安全·机器学习
智能运维指南35 分钟前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
人工智能AI技术37 分钟前
DeepInfer开源炸场!别再妄想个人电脑跑满血DeepSeek
人工智能
深蓝电商API43 分钟前
用AI生成拟人行为:让鼠标轨迹更“有人味”
人工智能·爬虫
znnnk1 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle
深蓝AI1 小时前
网站正在对 AI Agent 集体关门:亚马逊封锁 Muse、银行拒绝登录,开发者怎么活下去
人工智能
jason_renyu1 小时前
Vue 4 × AI:流式对话、Agent 状态与高性能渲染的下一代组合
人工智能·vue4·vue4和ai·vue4xai
镭封2 小时前
从视频文案提取到 AI 配音,短视频制作需要哪些工具?
人工智能·智能手机·音视频·语音识别·媒体
KaneLogger2 小时前
magpie:让薅到的 AI 羊毛物尽其用
人工智能·ai编程