内容来源:Agentic School。https://agenticschool.dev/guides/claude-code-skills-and-commands
原题:Claude Code Skills and Slash Commands
原发布时间:2026-06-13
了解 2026 年 Claude Code Skills 与斜杠命令的工作方式:创建可复用的
/command、编写SKILL.md、使用参数和动态上下文,以及判断何时该用哪一种。

Claude Code Skills 与斜杠命令都是可复用、有名称的工作流:你不必反复输入同一套多步骤指令,只需调用其中一个,智能体便会在相关上下文已经加载的情况下,按照经过验证的步骤执行任务。截至 2026 年,自定义斜杠命令已经并入 Skills:.claude/commands/deploy.md 文件和 .claude/skills/deploy/SKILL.md Skill 都会创建 /deploy 命令,而且工作方式相同。本指南将介绍如何创建斜杠命令和 SKILL.md、参数与动态上下文如何工作、它们应该放在哪里,以及 Claude 何时会自动加载 Skill、何时需要你亲自触发。
所属系列:Claude Code 使用方法:完整新手指南(2026)
Skills 与命令如今已合而为一
多年来,Claude Code 一直有两套彼此独立的功能:斜杠命令(通过 /name 触发的 Markdown 文件)和 Skills(内容更丰富、能够自成一体的能力)。到了 2026 年,二者得到统一。自定义命令已经并入 Skills,因此两者都会创建斜杠命令,行为也完全相同。你现有的 .claude/commands/ 文件仍可继续使用,Skills 只是在此基础上增加了一些可选功能:可存放配套文件的目录、控制调用主体的 Frontmatter,以及 Claude 在相关情境下自动加载 Skill 的能力。Claude Code Skills 遵循开放的 Agent Skills 标准,因此同一个 Skill 可以跨工具使用。
• .claude/commands/deploy.md 文件会创建 /deploy。
• .claude/skills/deploy/SKILL.md Skill 也会创建 /deploy。
• Skills 增加了配套文件、调用控制,以及依据描述自动加载等能力。
• 现有的 .claude/commands/ 文件仍然有效;Skills 是今后推荐采用的形式。
创建斜杠命令
最简单的可复用工作流,就是创建一个名称会成为命令的 Markdown 文件。把文件放入 .claude/commands/(项目级)或 ~/.claude/commands/(个人级),Claude Code 就会将它公开为斜杠命令。使用 $ARGUMENTS 占位符可以获取命令后输入的全部内容,也可以用位置参数 $1、$2 分别获取各个参数。YAML Frontmatter 中的描述会显示为帮助文本。对于你经常主动触发的单一、明确操作,这种方式非常合适。
<!-- .claude/commands/fix-issue.md -->
---
description: 根据编号调查并修复 GitHub Issue。
argument-hint: [issue-number]
---
修复 GitHub Issue #$ARGUMENTS。首先使用 gh CLI 读取 Issue,然后
找到相关代码,在计划模式中提出修复方案,只有获得我的批准后
才能实施。宣布完成之前,请运行测试套件。
位于 .claude/commands/fix-issue.md 的斜杠命令,以 /fix-issue 123 的形式调用;$ARGUMENTS 会获取其中的 123。
编写 SKILL.md
Skill 是一个以 SKILL.md 文件为根的目录:文件由 YAML Frontmatter 与 Markdown 指令组成,还可以选择性地打包脚本、模板或参考文件。目录名称就是你输入的命令名称;Claude 会读取描述,以判断何时自动加载该 Skill,因此写出准确有力的描述就完成了一半工作。推荐填写的字段只有描述,其他字段均为可选项。如果工作流包含多个步骤、自带资源,或者你希望 Claude 在适当时机主动调用它,Skills 就能发挥最大价值。
<!-- .claude/skills/summarize-changes/SKILL.md -->
---
description: 总结尚未提交的变更并标记风险。当用户询问改了什么或需要提交消息时使用。
allowed-tools: Read, Grep
---
## 当前变更
!`git diff HEAD`
## 操作说明
先用两到三个要点概括上述变更,再列出缺少错误处理、存在硬编码值或测试
需要更新等风险。如果 diff 为空,就说明当前没有尚未提交的变更。
位于 .claude/skills/summarize-changes/SKILL.md 的 SKILL.md,可以通过 /summarize-changes 调用,也可以由 Claude 根据描述自动加载。
包含 !`git diff HEAD` 的一行使用了动态上下文注入:Claude Code 会运行该命令,并在模型看到 Skill 前把这一行替换成命令输出。因此,当指令送达模型时,真实 diff 已经嵌入其中。正文务必保持简洁,因为 Skill 一旦加载,其内容便会跨轮次留在上下文中。
存放位置与调用主体
项目级 Skills 位于 .claude/skills/<name>/SKILL.md,只应用于相应仓库;个人级 Skills 位于 ~/.claude/skills/<name>/SKILL.md,会伴随你进入所有项目。当请求与 Skill 的描述匹配时,Claude 可以自动调用它;你也可以通过 /name 直接触发。如果某个工作流只应该在你明确要求时运行(比如部署),请设置 disable-model-invocation: true,这样 Claude 绝不会自行触发它。若要从斜杠菜单中隐藏纯知识型 Skill,可设置 user-invocable: false。
• 项目级:.claude/skills/<name>/SKILL.md——与仓库共享。
• 个人级:~/.claude/skills/<name>/SKILL.md——适用于你的所有项目。
• 可以根据描述自动调用,也可以通过 /name 直接触发。
• disable-model-invocation: true 会让 Skill 只能手动调用;user-invocable: false 会将其从 / 菜单中隐藏。
何时该用哪一种
是否值得把一套流程封装起来,最明显的信号就是重复:当你第二次向智能体交代同样的步骤时,就应该把它记录下来。随后根据工作流的丰富程度选择形式。没有配套资源、只执行一个明确操作,就使用普通命令文件;包含多步骤流程、自带模板、脚本或参考文档,或者希望 Claude 自动加载,就使用 Skill。你可以先从命令入手,之后再随着需求增长把它升级成 Skill。让自己的工作流库保持精简、聚焦:真正经常使用的两三个工作流,胜过二十个连你都忘记存在的工作流。
分步操作
第一步:选择一套反复执行的工作流
选择一段你经常重复输入的多步骤指令,例如部署流程、提交并创建 PR 的流程,或搭建脚手架并测试的流程。
第二步:先创建命令文件
创建 .claude/commands/<name>.md,在其中写入提示词,并在 Frontmatter 中添加描述。用 $ARGUMENTS 接收输入,再通过 /<name> 调用它。
第三步:如果内容逐渐增长,就升级成 SKILL.md
当工作流需要打包配套文件,或者你希望 Claude 自动加载它时,请创建 .claude/skills/<name>/SKILL.md,并写出准确有力的描述。目录名称会成为命令名称。
第四步:按需加入动态上下文
使用 !`command` 行(例如 !`git diff HEAD`)嵌入实时数据,让 Skill 在送达模型时,已经填充了真实上下文。
第五步:设置调用控制
对于只应按要求运行的工作流,添加 disable-model-invocation: true,防止 Claude 自行触发。正文应保持简洁,以限制上下文成本。
常见问题
Claude Code Skill 与斜杠命令有什么区别?
截至 2026 年,两者已经统一:自定义命令已并入 Skills,而且都会创建工作方式相同的斜杠命令。普通命令是单个 Markdown 文件;Skill 则是一个目录(包含 SKILL.md 与可选的配套文件),额外提供调用控制和依据描述自动加载等能力。
Claude Code Skill 应该放在哪里?
项目级 Skills 应放在仓库的 .claude/skills/<name>/SKILL.md 中,并应用于该项目。个人级 Skills 应放在 ~/.claude/skills/<name>/SKILL.md 中,可用于你的所有项目。目录名称就是你输入的命令名称。
如何在 Claude Code 中创建自定义斜杠命令?
在 .claude/commands/ 中创建 Markdown 文件(个人命令则放在 ~/.claude/commands/)。文件名就是命令名称,因此 deploy.md 会创建 /deploy。使用 $ARGUMENTS 获取命令后输入的文本,并在 YAML Frontmatter 中添加描述,作为帮助文本。
Claude 如何判断何时自动使用某个 Skill?
Claude 会读取每个 Skill 的描述,并在你的请求与描述匹配时加载它。因此,清晰、具体的描述是 Skill 中最重要的部分。若要阻止自动加载,让 Skill 只能手动调用,请设置 disable-model-invocation: true。
Skill 中的动态上下文注入是什么?
SKILL.md 中类似 !`git diff HEAD` 的一行,会要求 Claude Code 运行该命令,并在模型读取 Skill 前,用命令输出替换这一行。这样,Skill 到达模型时就已经嵌入实时数据(比如 diff、当前分支或文件清单),使回答建立在真实状态之上。
旧的 .claude/commands 文件还能继续使用吗?
可以。自定义命令并入 Skills 后,.claude/commands/ 中的现有文件仍然有效,并支持相同的 Frontmatter。Skills 是今后推荐的形式,因为它支持配套文件与自动调用;如果某个 Skill 和命令重名,则以 Skill 为准。