内容来源:EMil Wu。https://emilwu.tw/en/news/claude-code-deprecate-command/
原题:Are Slash Commands Dead? Claude Code Quietly Merges Commands into Skills
原发布时间:2026-03-29
Claude Code v2.1.3 将 Custom Commands 合并进 Skills。
.claude/commands/中的命令现在也被视为 Skills,由此引发了有关自动加载、上下文消耗和可控性的争论。

过去几天,我在重新整理 Claude Code 的 Skill 架构时,注意到一件意外之事:输入 / 后,我的 Command 指令不再正常显示。原来,Anthropic 早在 v2.1.3 中就悄悄把 Custom Commands 合并进了 Skills 系统 [1],变更日志里只有这么一句:
“合并斜杠命令与 Skills,在行为不变的前提下简化认知模型。”
简化认知模型,听起来很棒,对吧?但社区的反应讲述了另一个故事。
Commands 与 Skills 原本是什么?
合并之前,Claude Code 拥有两套相互独立的系统:
Custom Commands(.claude/commands/*.md)是由用户触发的指令。在该目录中放入一个 deploy.md 文件,就会得到一条 /deploy 斜杠命令。它的关键行为是:**只有你明确输入 /deploy 时,它才会载入上下文。**没有调用,就不消耗 Token。行为可预测,也可控制。
Skills(.claude/skills/*/SKILL.md)是功能更丰富的知识模块,支持 Frontmatter、子目录结构和渐进式披露。关键区别在于:当 Claude 判断它们与任务有关时,可以自动加载它们,无需用户采取行动。
核心区别不在于功能多寡,而在于由谁控制加载时机。Commands 是“由我说了算”,Skills 则是“由 Claude 决定”。
合并后发生了什么变化?
从 v2.1.3 开始,.claude/commands/ 文件仍然有效(向后兼容),但现在会被视为 Skills。官方文档 [2] 写道:
“Custom Commands 已经合并进 Skills。
.claude/commands/deploy.md中的文件与.claude/skills/deploy/SKILL.md中的 Skill 都会创建/deploy,而且工作方式相同。”
只是换了个住处?并不完全是。行为上有一项变化让很多人猝不及防:过去只能手动触发后才会加载的 Commands,现在可能被 Claude 自动加载。
GitHub Issue #14851 [3] 最早报告了这个问题:“Commands 现在显然成了‘Skills’,无需调用就会载入上下文。这实际上移除了 Claude Code 的 Command 功能。”
假设你的 Commands 目录里安静地放着十条自定义命令,过去不消耗任何 Token;合并后,Claude 开始扫描这些命令,并加载它认为“相关”的部分,悄无声息地占用上下文预算。
社区的三项担忧
1. 上下文污染
这是最常被报告的问题。大量使用 Commands、拥有数十条自定义指令的用户发现,合并后上下文预算受到了侵蚀。从上下文工程的角度来说,这违背了即时加载原则,把“按需加载”变成了“预先加载”。
2. 可控性
paddo.dev 上的一篇详细分析 [5] 指出了可控性困境:你需要某项 Skill 时,无法强制 Claude 加载;不需要它时,也无法阻止 Claude 加载。加载时机完全由大语言模型决定。对于需要精确控制工作流的开发者来说,这是一种倒退。
3. 文档混乱
最初,变更日志说两者已经“合并”,文档却仍然分别介绍 Commands 与 Skills。Issues #17578 和 #17288 反映了开发者的困惑:到底应该使用哪个目录?两者在行为上还剩哪些区别?
技术对比
| Commands(旧) | Skills(新) | |
|---|---|---|
| 位置 | .claude/commands/*.md |
.claude/skills/*/SKILL.md |
| 触发方式 | 仅限用户(/command) |
用户触发或 Claude 自动加载 |
| 上下文加载 | 仅在调用时 | 可能自动加载 |
| 配套文件 | 不支持 | 支持(模板、脚本) |
| Frontmatter | 不支持 | 支持(描述、调用、工具) |
| 向后兼容 | 仍然有效(未公布移除日期) | 今后推荐使用 |
我的看法
也许 Anthropic 的方向是对的:把两套做着相同事情的系统合二为一,从架构上确实讲得通。Skills 也的确更强大:可以控制 Frontmatter,拥有子目录结构和渐进式披露,这些都是 Commands 无法做到的。
但迁移的痛苦真实存在,尤其是自动加载方面。对于已经在精心管理 Token 预算的开发者来说,一个无法控制的上下文消耗新来源并不是“简化认知模型”,而是增加了一个需要管理的新变量。
.claude/commands/ 目录仍然有效,也没有公布移除日期(Issue #37447 [4] 正在跟踪此事)。如果你还在使用 Commands,不必急于迁移。但从长期来看,转向 Skills 似乎不可避免。
也许最佳策略是:把最重要的 Commands 迁移成 Skills 格式,但在 Frontmatter 中明确设置 invoke: user,既保留“由我说了算”的控制权,又获得 Skills 的其他优势。
如果想亲自把 Commands 迁移到 Skills,我还写了一篇单独的资源文章介绍方法,其中包含一份可以下载的 Agent Playbook。只需下载后让你的智能体按照步骤操作即可。
参考资料:
[1] Claude Code v2.1.3 Release——公布 Commands/Skills 合并的版本变更日志
https://github.com/anthropics/claude-code/releases/tag/v2.1.3
[2] Extend Claude with skills——官方文档——Skills 系统官方文档
https://code.claude.com/docs/en/skills
[3] Issue #14851——Commands 未经调用便作为 Skills 加载——最早报告自动加载行为的 GitHub Issue
https://github.com/anthropics/claude-code/issues/14851
[4] Issue #37447——跟踪 .claude/commands/ 的完全弃用——跟踪 Commands 目录的移除时间表
https://github.com/anthropics/claude-code/issues/37447
[5] Claude Skills: The Controllability Problem——paddo.dev——对 Skills 可控性问题的分析
https://paddo.dev/blog/claude-skills-controllability-problem/
当前版本准确性说明(核查于 2026-07-22)
• 本文是 EMil Wu 的独立评论,并非 Anthropic 官方博客文章。
• 核心历史准确无误:Claude Code v2.1.3 合并了斜杠命令与 Skills,当前文档也说明 .claude/commands/*.md 仍然兼容。
• 原文建议使用的 invoke: user Frontmatter 并不是当前 Claude Code 支持的字段。若要让 Skill 只能由用户调用,应设置 disable-model-invocation: true;不设置该字段,则允许 Claude 自动调用。
• 对于当前可由模型调用的 Skills,载入上下文的是发现元数据(名称和描述);只有调用时才会加载完整的 Skill 正文。原文称整个 Command 正文仅因文件存在就会悄悄加载,夸大了报告所述的回归问题。
• Issue #14851 本身指出,/context 似乎把完整 Command 内容计入了用量,但智能体看起来并不知道这些内容,因此报告者怀疑这只是 Token 用量显示错误。该 Issue 目前已经关闭,只能证明有人报告过此事,不代表产品行为契约。
• 表格所称旧式 Commands 不支持 Frontmatter 已经过时。当前文档说明 .claude/commands/ 中的文件支持相同的 Frontmatter;之所以推荐 Skills,是因为其目录形式还能包含配套文件。
• 用户可以通过输入 /skill-name 强制加载某项 Skill,作者则可使用 disable-model-invocation: true 阻止模型调用。原文声称开发者既不能强制也不能阻止加载,已经不符合当前支持的控制方式。
• user-invocable 是另一个独立字段。真正具有限制意义的写法是 user-invocable: false,它会在斜杠菜单中隐藏 Skill,却不会阻止 Claude 使用。不要把它与“仅限用户调用”混为一谈。
• Issue #37447 是社区提出的弃用时间表请求,目前已关闭,处理结果为不予实施。它既不是官方移除跟踪,也不代表官方承诺将来必然移除。
• Skill 的 allowed-tools 字段会在 Skill 激活期间预先批准所列工具,并不是工具限制清单。硬性限制应通过权限拒绝规则或其他策略实现。
• Skill 的发现元数据仍然会消耗上下文,而且一项被调用的 Skill 会在后续轮次中继续留在上下文内。Token 影响取决于描述内容、调用模式和当前 Claude Code 版本,不能简单概括为“不占用”和“载入完整正文”两种状态。