Skills 实测手册

Skills 还是 Plugins?一张表说清怎么选

结论先给:你要交付的是「一条说明」,写 skill;你要交付的是「一套配置」,做成 plugin。 skill 是一个文件夹一份说明,plugin 是把这个文件夹和其他东西一起打包装上的方式。 两者不是竞品,是不同层级——但装错层级,代价是每回合付钱。

核对日期 2026-10-19 依据:Claude Code 官方中文文档(skills / plugins / sub-agents) 机制描述,不含装完实测

三十秒判断2026-10-19

解决什么

说清「我这点东西该写成一个 skill,还是该打包成插件装进来」,避免为一个说明背上整套组件。

不适合谁

连一条说明都还没写出来的人。先手写三遍流程,再决定要不要封装。

坑在哪

插件里的 skill 不受 skillOverrides 管,想关一条得管整个插件;项目作用域只让同事「启用」,不会替他安装。

六个维度,逐项比

这张表只写官方文档里能直接对上的机制,不做类比。看不懂的行,下面每节都会展开。

维度 skill plugin
能做什么 一份 SKILL.md 说明,可带参考文件与脚本;变成 /name 命令, 或被 Claude 在相关时自动加载;支持 allowed-tools、context: fork 这类开关 一个目录,可含 skills、agents、hooks、MCP 服务器、hook 模块,作为一个单元安装; 里面的 skill 用 /plugin-name:skill-name 调用
装在哪 个人 ~/.claude/skills/<name>/SKILL.md;项目 .claude/skills/<name>/SKILL.md;还有企业托管目录、 --add-dir 附加目录、插件内、claude.ai 同步目录 从市场装,已获取的内容落在 ~/.claude/plugins/; 按用户、项目、本地三种作用域启用;云会话不加载本地设置里的插件
怎么共享给团队 把 .claude/skills/ 提交进仓库,或通过托管设置全组织下发, 或打进一个插件里 建市场(.claude-plugin/marketplace.json)或走官方市场; 项目作用域写进提交的 .claude/settings.json,但协作者仍要在自己机器上安装
权限边界 allowed-tools 只在调用那一轮免确认,发下一条消息就清; 而且工作区信任管不住它——从仓库拉下来的 skill 可以给自己预先批准很宽的工具权限,提交前必须看 插件运行的内容以你的身份运行;插件子代理出于安全会忽略 hooks、 mcpServers、permissionMode;插件 skill 不受 skillOverrides 控制,要通过 /plugin 管
更新方式 改文件即生效(目录被监视),新建顶级目录后跑一次 /reload-skills; 没有版本号,仓库的 commit 就是版本 /plugin 或 claude plugin 管理,/plugin marketplace update 刷新市场;改了 hooks、.mcp.json、agents 需要 /reload-plugins;可版本化发布
是否引入可执行代码 默认全文本,但能带:scripts/ 里的脚本会被执行(不是读入), 正文里的 ! 命令会在渲染时真的跑一次——来源不明的 skill 等同于来源不明的脚本 经常会:hooks 在生命周期事件自动执行,MCP 服务器在你每个会话旁边起进程, hook 模块是 JS 函数。这些不需要你按就会运行,所以官方专门有「插件安全和信任」一节
最容易忽略的一行

权限边界那格:skill 的 allowed-tools 绕过工作区信任。 官方文档写得很明确——即使在从未信任过的文件夹里跑,项目 skill 的 allowed-tools 依然生效。也就是说仓库里放一个 skill, 就能给自己预先批准 Bash(git push *) 这类权限。看到别人仓库里的 skill,先读它的 frontmatter,再决定要不要放进项目里。

三种组合方案,各自适合谁

方案 A

只用 skill

自己在 .claude/skills/ 里写几个目录,提交进仓库。没有市场、没有版本号, 也没有任何东西会在后台自动跑。

适合谁:一到五个人的小团队;流程还在变、需要天天改文件的人; 希望 skill 也能给 Cursor、Codex 这些 agent 用(它遵循 Agent Skills 标准)。

不适合:需要 hooks 强制执行、需要多个 agent 定义一起分发的时候。

方案 B

只用 plugin

从官方市场或别人维护的市场装现成的,比如 /plugin install skill-creator@claude-plugins-official。 一次装一整套,更新走市场。

适合谁:不想自己写、只想用别人打磨好的整套;团队要把 review 流程、 子代理、MCP 一起统一起来;愿意接受「装进来的东西会自动跑」。

不适合:只想加一条项目约定的人——为一个说明装整套,成本不对等。

方案 C

两者叠加

插件当基座:子代理、hooks、MCP 服务器由它提供;项目 skill 补业务约定, 提交在仓库里跟着代码走。命名不冲突——插件 skill 是 /plugin-name:skill-name,项目 skill 是 /name。

适合谁:多仓库的团队;通用能力想复用、项目规则又想自己管的人。

注意:插件 skill 不受 skillOverrides 管, 要改某条插件行为只能禁用整个插件,或者复制一份成本地 skill。

三种方案里,官方那句判断最好用:skills、子代理、hooks、MCP 服务器都能独立工作, 插件存在的意义只是「把多个组件打包成一个单元装」。所以先问「我到底有几个组件」, 只有一个的时候做插件就是给自己加了一层。

选错的代价

这页真正想说的就这一段。装错层级的代价不是「不好看」,是每回合都在付。

  1. 为一条说明装一个插件,付的是全局上下文。 启用插件后,它里面每个 skill、agent 和可自动调用的命令,名字加描述每回合都在上下文里, 即使这次会话一次都没跑。这不是估算,是官方在「启用的插件为会话添加什么」里写明的行为, 所以官方才会在安装前的市场页面给上下文成本估计。
  2. 用插件管理「我想改一点」的 skill,会卡住。 插件 skill 不受 skillOverrides 影响,关不掉单条,只能通过 /plugin 禁用或卸载整个插件。你在本地改它的文件,也不构成一份可版本化的配置。 真要定制,把它复制成自己仓库里的项目 skill。
  3. 用 skill 承担「必须执行」的约束,迟早失守。 skill 靠模型照着做,而且长对话压缩后,每个被调用的 skill 只保留最近一次调用的前 5,000 个 token、总预算 25,000——早调用的那条可能整段消失。官方给的方案是把这类规则挪进 hook, 因为 hook 在事件发生时每次都运行。
  4. 以为项目作用域会替同事安装。 项目作用域只是通过提交的 .claude/settings.json 启用插件, 每个协作者仍要在自己机器上装一次。新人克隆仓库后发现命令不存在,通常就是这个原因。 相比之下,项目 skill 提交进 .claude/skills/ 就真的跟着仓库走了。
  5. 装一堆插件和子代理,把描述预算吃满。 子代理的描述也有预算:非内置子代理的描述合计超过 15,000 个 token 时, Claude Code 会在启动时警告。装的时候觉得「反正不用就不花钱」,实际是反的。

五分钟自测:按顺序问四句

  1. 这东西只有一份说明吗?是 → 写 skill,别做插件。 只有一个人用就放 ~/.claude/skills/,要共享就放项目 .claude/skills/ 并提交。
  2. 里面有需要「每次都跑」的规则,或者要连外部系统吗? 是 → 那就不是 skill 的事:规则进 hook,外部系统走 MCP server。 插件只是把这些装到一起的方式。
  3. 要分发的是三个以上组件、还要能统一更新吗? 是 → 做插件、建市场,并接受「启用即加载」的成本。
  4. 跨 agent 也要用吗?是 → 优先 skill(Agent Skills 标准, 跨 agent 安装器支持 40+ 个 agent),因为插件这套是 Claude Code 自己的机制。
还不确定

先看「Claude Skills 是什么」那页的四者边界表—— 花了二十分钟搞清楚 skill / plugin / MCP / subagent 各自管什么, 比装十个再用不上省事得多。确定要装之后,去 值得装的清单按场景挑,那里每条都写了不适合谁。

接着看

这一页的依据

本页未做安装与运行的对照实测,因此不提供耗时、token 差值一类的数字。 机制描述取自 2026-10-19 的官方中文文档;文档更新后以文档为准。