把一个只在本地好用的 Skill,变成全团队 claude plugin install 一行命令就能装上、跟着 Git 版本走、统一升级的 Plugin——这是从"个人提效工具"到"团队基础设施"的最后一公里。本教程面向已经会写 SKILL.md、想让产出被同事复用的开发者与团队负责人。
claude --version 能返回版本号即可,建议 2026 年的较新版本,自带 plugin 子命令)name / description frontmatter(本教程不会再从零讲触发机制)本文聚焦"分发"而非"创造"。如果你还没写过 Skill,建议先补"渐进式披露构建分层 Skill"与"触发优先:从零造精准 Skill"两篇前置内容。
在动手打包前,必须先搞清楚 Skill 在 Claude Code 里有三个"栖息地",它们的优先级决定了谁能覆盖谁。这是后续所有分发决策的底层逻辑。
| 位置 | 路径 | 作用域 | 优先级 |
|---|---|---|---|
| 项目级 | <repo>/.claude/skills/ |
仅当前仓库,随 Git 提交共享 | 最高 |
| 个人级 | ~/.claude/skills/ |
你本机所有项目 | 中 |
| 插件级 | 通过 marketplace 安装 | 取决于安装范围(personal/project) | 最低 |
关键规则:项目级 > 个人级 > 插件级。这意味着同名 Skill 出现时,项目里的那份会赢。这条规则有一个极其重要的实战含义——当你把 Skill 打包成 Plugin 发布给团队后,仍然允许任何一个具体项目"覆盖"它:在项目的 .claude/skills/ 放一份定制版即可。这正是分发与定制两不冲突的设计。
为什么要把 Skill 做成 Plugin 而不是直接让大家各自拷贝到 ~/.claude/skills/?因为直接拷贝有三个死结:版本漂移(A 装了 v1,B 还是 v0)、无依赖管理、更新全靠人工喊话。Plugin + Marketplace 把这三件事一次性解决。
我们以"团队统一代码风格审查"为例,先在本地把 Skill 跑通。在任意工作目录创建:
workdir/
└── review-skill/
└── SKILL.md
review-skill/SKILL.md 内容:
---
name: review-skill
description: Use when the user asks to review code, check a diff, or enforce
team style. Reviews against the team's style guide and returns a structured
findings list with severity (blocker/major/minor/nit) and suggested fix.
---
# 团队代码审查 Skill
## 工作流程
1. 用 Read/Grep 读取待审文件或 `git diff` 输出
2. 按下方规则逐条比对
3. 输出结构化结果,禁止直接改代码(只给建议)
## 团队规则(必须全部检查)
- 函数体不超过 60 行
- 公共函数必须有 JSDoc/docstring
- 禁止 `any` 类型逃逸(TS 项目)
- 错误必须被捕获并记录,禁止静默吞异常
- 命名:变量/函数 camelCase,类 PascalCase,常量 UPPER_SNAKE
## 输出格式
| 严重度 | 文件:行 | 问题 | 建议修复 |
|--------|---------|------|----------|
| blocker | ... | ... | ... |
结尾给一句"通过/不通过"结论。
操作说明:
# 在测试项目里临时挂载验证(项目级)
mkdir -p .claude/skills && cp -r ../workdir/review-skill .claude/skills/
# 进 Claude Code 交互模式触发
claude
# 输入:帮我 review src/auth.ts
预期结果:Claude 在对话中主动加载该 Skill 的指令,按表格格式输出审查结果,末尾给通过/不通过结论。
常见问题:
- 不触发? description 写得太宽泛(如"help with code")。修法:用"Use when …"句式,列出具体触发动词与场景,参考官方 skills 文档对 description 的要求。
- name 字段缺失? Claude Code 会回退用目录名作为调用名,但混用容易出问题。始终显式写 name,且必须是 kebab-case(小写、连字符),不能含空格、不能含大写字母——这是官方校验器会卡的硬规则。
- 被项目里同名 Skill 覆盖了? 记住第 0 步的优先级表,排查时把项目 .claude/skills/ 里的同名项暂时移走再测。
Plugin 是一个带清单文件的目录,能同时打包 skills、commands、agents、hooks、甚至 MCP 服务器配置。本例只放一个 skill,但目录结构要按"可扩展"来摆。
plugins/
└── review-skill/
├── .claude-plugin/
│ └── plugin.json # 插件清单(strict 模式必需)
└── skills/
└── review-skill/
└── SKILL.md # 第 1 步写好的 Skill
把第 1 步的 SKILL.md 原样放进 skills/review-skill/,然后在 .claude-plugin/plugin.json 写清单:
{
"name": "review-skill",
"version": "1.0.0",
"description": "团队统一代码风格审查 Skill,输出结构化 findings 与严重度。",
"author": {
"name": "Platform Team",
"url": "https://github.com/myteam"
},
"homepage": "https://github.com/myteam/claude-marketplace",
"keywords": ["review", "style", "quality"],
"license": "MIT"
}
字段说明:name 必须与目录名一致且 kebab-case;version 用语义化版本,后续升级全靠它驱动;description 会显示在 /plugin 浏览器里,写清楚一句话用途。
验证清单合法性:
claude plugin validate plugins/review-skill
预期结果:返回 OK / 无错误。常见问题:
- 报错 "name must be kebab-case":name 含大写或下划线,改成全小写连字符。
- 报错找不到 plugin.json:路径写成了 plugins/review-skill/,但 .claude-plugin/plugin.json 没建。注意是双层目录 .claude-plugin/。
- version 写成了 "v1":必须是 MAJOR.MINOR.PATCH 三段,如 1.0.0。
Plugin 单独存在装不了——必须挂在一个 Marketplace(目录)下。Marketplace 本质是一个"插件目录的目录",由根目录的 .claude-plugin/marketplace.json 定义。整个 Marketplace 就是一个 Git 仓库。
仓库结构(典型 monorepo 风格):
claude-marketplace/ # 这是一个独立 Git 仓库
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── review-skill/ # 第 2 步做的 plugin
├── .claude-plugin/
│ └── plugin.json
└── skills/review-skill/SKILL.md
.claude-plugin/marketplace.json:
{
"name": "my-team-marketplace",
"owner": {
"name": "Platform Team",
"url": "https://github.com/myteam"
},
"plugins": [
{
"name": "review-skill",
"source": "./plugins/review-skill",
"description": "团队统一代码风格审查 Skill",
"version": "1.0.0"
}
]
}
核心字段:plugins 数组,每项最少要有 name 和 source。source 是相对于仓库根的路径(也可以是另一个 Git 地址)。这里用了 strict 模式——每个 plugin 有自己的 plugin.json 并自管组件(更清晰、更适合多 plugin 仓库)。如果不想为每个 plugin 建清单,也可以在 marketplace.json 里用非 strict 模式直接内联组件定义,但团队场景推荐 strict。
把这个仓库 push 到团队可读的 Git 远端,记下 URL,例如 https://github.com/myteam/claude-marketplace。
常见问题:
- marketplace.json 与 plugin.json 的 name 重复了:没错,这是正常的——一个指 marketplace 里的条目名,一个指插件本身。但两者必须相同,否则安装报错。
- source 路径写错:用绝对思维容易写成 /plugins/...,规范是相对仓库根的 ./plugins/...。
- Git 私有仓库:只要安装者有 SSH token 或 PAT 读取权限即可,Claude Code 用本地 git 凭据拉取,无需额外配置。
现在任何团队成员,只需在装有 Claude Code 的机器上执行两步:
# 1) 注册团队市场(一次性)
claude plugin marketplace add myteam https://github.com/myteam/claude-marketplace
# 2) 安装插件
claude plugin install review-skill@myteam
预期结果:Claude Code 拉取仓库、解析清单、把 plugin 落到本地缓存,并在会话里激活该 Skill。装完用 claude plugin list 可见。
交互模式下也能图形化操作:
/plugin
会打开插件浏览器,能看到 marketplace 里的插件列表、描述、版本,点选安装。适合不熟命令行的同事。
安装范围控制(重要):
# 装到当前项目(随 .claude 跟着 Git 走,团队仓库里人人自动有)
claude plugin install review-skill@myteam --scope project
# 装到个人全局(只影响你自己所有项目,默认)
claude plugin install review-skill@myteam --scope personal
实战建议:团队规约类 Skill(代码风格、提交规范、Reviewer)用 --scope project 安装并提交 .claude/settings.json,让仓库本身自带审查能力,新人 clone 即生效;个人偏好类 Skill 才用 personal。
常见问题:
- install 报 "marketplace not found":marketplace add 的名字与 install 时 @ 后的名字不一致,或 add 没成功。先 claude plugin marketplace list 确认。
- 拉取超时/403:私有仓库权限问题,确认本机能 git clone 该仓库。
- 装上了但不触发:回到 SKILL.md 的 description 调优;插件级 Skill 优先级最低,若你项目里同名覆盖了它,移除项目级副本。
分发的价值在于可演进。改了 Skill 后:
# 1) 改 plugin.json 的 version,如 1.0.0 -> 1.1.0
# 2) commit & push 到 marketplace 仓库
# 3) 团队成员升级
claude plugin marketplace update myteam # 拉最新目录清单
claude plugin install review-skill@myteam # 重装即升级到新版本
卸载与清理:
claude plugin uninstall review-skill
claude plugin marketplace remove myteam # 不再信任该市场
版本策略建议:Skill 行为兼容性增强用 MINOR(1.1.0);触发逻辑/输出格式破坏性变更用 MAJOR(2.0.0)并在 commit 里写清迁移说明。因为 Claude Code 会按 marketplace.json 里的 version 提示更新,团队升级意愿高度依赖你 version 号是否"诚实地"反映破坏性。
把上述步骤串成一个完整可复现的项目。目标:团队所有 PR 在合并前由 Claude 按 review-skill 自动审查,且新人 clone 仓库即可用,零额外文档。
完整目录树:
claude-marketplace/ # Git 仓库
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── review-skill/
├── .claude-plugin/
│ └── plugin.json
└── skills/
└── review-skill/
└── SKILL.md
marketplace.json 用第 3 步的版本。plugin.json 用第 2 步的版本。SKILL.md 用第 1 步的版本。
上线流程一键脚本(团队 README 里放这一段即可):
#!/usr/bin/env bash
set -e
# 注册团队市场(已注册可跳过)
claude plugin marketplace add myteam \
https://github.com/myteam/claude-marketplace || true
# 按项目范围安装,让仓库自带审查能力
claude plugin install review-skill@myteam --scope project
echo "✅ review-skill 已就绪,可用 /plugin 查看或直接对话触发"
把 .claude/settings.local.json 里的安装记录纳入版本控制(或用 --scope project 让配置写入 .claude/settings.json 提交),新人 clone 后跑一次上述脚本即可。之后在 Claude Code 里说"审查当前 diff"就自动走团队规则。
升级循环:维护者改 Skill → bump plugin.json version → push → 团队成员 claude plugin marketplace update myteam && claude plugin install review-skill@myteam。整个生命周期与 Git 绑定,再无"你装的版本不对"。
flowchart TD
A["写 SKILL.md<br/>name + description"] --> B["本地 .claude/skills/<br/>验证触发与输出"]
B --> C["打包成 Plugin<br/>.claude-plugin/plugin.json"]
C --> D["放进 Marketplace 仓库<br/>.claude-plugin/marketplace.json"]
D --> E["push 到团队 Git"]
E --> F["成员: marketplace add"]
F --> G["成员: plugin install<br/>--scope project/personal"]
G --> H{"运行时优先级仲裁"}
H -->|"项目级 .claude/skills/"| I["最高: 覆盖一切"]
H -->|"个人级 ~/.claude/skills/"| J["中"]
H -->|"插件级 plugin"| K["最低"]
I & J & K --> L["触发 Skill, 执行指令"]
C --> M["改 Skill → bump version → push"]
M --> N["团队 marketplace update + reinstall"]
N --> L
这张图同时表达了两条流:首发分发流(A→…→L)和持续演进流(M→N→L)。优先级仲裁那一层是很多团队踩坑的根源——记住"插件级最低",意味着任何项目都能用本地副本覆盖团队统一 Skill,这正是"统一与定制并存"的关键。
既然已经走通了 Plugin 分发,值得知道 plugin.json 同一目录下还能并排放哪些组件,让一个市场摊位承载一整套能力:
commands/ —— 自定义斜杠命令(.md 文件,带 frontmatter)agents/ —— 子智能体定义(专家团队)hooks/hooks.json —— 钩子(PreToolUse / PostToolUse 等确定性护栏)mcp.json —— 自动注册的 MCP 服务器配置例如团队可以发一个 dev-standards 插件,同时打包:review-skill(审查)+ /lint 命令 + PreToolUse hook(禁止直接写 .env)+ 一个只读数据库 MCP。一次 plugin install dev-standards@myteam,整套研发规范落地。这才是 Plugin 相比裸 Skill 的真正杠杆——它是能力集合的分发单元,不是单个文件。
skill-creator 是官方的元技能,可一键产出 SKILL.md + 目录结构,再套本教程的打包流程。~/.claude/skills/、项目级、插件级三种安装路径对比[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
