插件怎么装、怎么自己做:marketplace 和 plugin.json
项目里的 .claude/skills、agents、hooks 适合「这个仓库专用」。要跨仓库复用、或从市场一键装,用 plugins:把 skills / agents / hooks 打成包,经 marketplace 分发。
插件 vs 仓库里的 .claude/
仓库 .claude/ | 插件 | |
|---|---|---|
| 范围 | 当前项目 | 安装后多项目可用 |
| 分发 | 跟 git 走 | marketplace / 本地目录 |
| 技能调用 | /skill-name | 常带命名空间 /plugin:skill |
单仓约定继续写在 .claude/ 和 CLAUDE.md;可复用能力再抽成插件。Skills 写法见 Skills 指南;和 MCP、Hooks 怎么选见 对照文。
怎么装
官方 marketplace 一般会自动可用。安装示例:
/plugin install name@marketplace把 name 换成插件名,marketplace 换成市场标识。装完用 /reload-plugins 让当前会话重新加载;仍看不到时开新会话再试。
信任提示:插件能带 hooks 与技能,等于在你机器上跑约定好的自动化。只装来源清楚的包;陌生市场先当不可信,对照 权限与沙箱 收紧 deny。
目录怎么摆
容易错的一点:只有 plugin.json 放在 .claude-plugin/ 里;skills、agents、hooks 放在插件根目录,不要塞进 .claude-plugin/。
示意:
my-plugin/
.claude-plugin/
plugin.json # 仅清单
skills/
foo/SKILL.md
agents/
...
hooks/
...plugin.json 描述名称、版本、入口元数据。Skills 被装入后以插件命名空间调用,避免和项目本地同名技能撞车。
本地开发与调试
还没发布到市场时:
claude --plugin-dir /path/to/my-plugin用本地目录当插件加载,改 skills 后 /reload-plugins 验证。目录结构不对(例如把 skills/ 误放进 .claude-plugin/)时,常见现象是「装上了但命令不出现」——先查布局再查清单。
LSP 类插件还要求对应语言服务器二进制已在 PATH;只装插件壳、本机没有 gopls / typescript-language-server 等,功能不会凭空出现。
非交互 / CI 场景一般不靠交互式 /plugin;需要可复现环境时,把依赖与插件安装写进镜像或启动脚本,并考虑 --bare 等旗标,见 -p / --bare。自动记忆不会替你记住「该装哪个插件」,清单仍要显式维护,见 自动记忆。
命名空间与冲突
插件技能常见形态是 /插件名:技能名。项目本地若已有同名 /deploy,装了插件后以带命名空间的为准去调用,避免「敲了命令却跑到另一套清单」。写插件时技能 description 仍然重要:模型自动调用依赖描述质量,和普通 Skills 一样,见 Skills 指南。
Hooks 随插件启用时,等于多了一组自动化触发器。发布前在干净仓库用 --plugin-dir 跑一遍敏感路径,确认不会误删或误推。
实操小结
- 跨仓复用 → 插件;单仓约定 →
.claude/ - 安装:
/plugin install name@marketplace,然后/reload-plugins - 结构:仅
plugin.json在.claude-plugin/;skills/agents/hooks 在根下 - 本地测:
--plugin-dir;LSP 插件先保证二进制在 PATH - 陌生插件当不可信代码,配合权限规则
插件把可复用能力打包进市场;目录摆对、命名空间分清,比先纠结 marketplace 文案更要紧。