是什么

Skills 是以 SKILL.md 文件定义的可复用指令包,让 Claude 在需要时加载并执行特定工作流。与 CLAUDE.md 的区别是:Skill 内容只在被调用时加载,不占用常驻上下文。可通过 /skill-name 直接调用,也可由 Claude 根据描述自动选择。

核心机制

文件结构:每个 Skill 是一个目录,SKILL.md 为入口(必需),可包含模板、示例、脚本等支持文件:

my-skill/
├── SKILL.md        # 主指令(必需)
├── template.md     # 模板文件
└── scripts/
    └── validate.sh # 可执行脚本

动态上下文注入:在 SKILL.md 中用 !`command` 语法,Claude Code 在加载 Skill 时执行命令并将输出内联替换,让指令基于实时数据:

!`git diff HEAD`

存储位置与优先级(高到低):Enterprise > Personal(~/.claude/skills/)> Project(.claude/skills/)> Plugin。

调用控制:frontmatter 中的 disable-model-invocation: true 表示只能用户手动调用,不允许 Claude 自动触发。

与旧版 Commands 的关系:.claude/commands/ 下的文件继续有效,Skills 是其超集,同名时 Skill 优先。

内置 Skills:/simplify、/batch、/debug、/loop、/claude-api 等,基于 Prompt 驱动而非固定逻辑。

关键细节

  • 个人 Skill 路径:~/.claude/skills/<skill-name>/SKILL.md
  • 项目 Skill 路径:.claude/skills/<skill-name>/SKILL.md
  • 直接调用:/skill-name
  • 插件 Skill 命名空间:/plugin-name:skill-name
  • 文件变更实时生效,无需重启(新建顶层目录除外)
  • 单个 Skill 文件上限:25,000 字节

关联

  • hooks — 确定性自动化,与 Skills 互补
  • plugins — 打包 Skills 分发给团队
  • sub-agents — 另一种扩展方式,有独立上下文

实践要点

  • 把反复粘贴的指令、检查清单、多步骤流程提取为 Skill
  • description 字段要清晰,Claude 依赖它决定何时自动加载
  • 动态上下文注入(!`cmd`)让 Skill 基于实时状态而非猜测
  • 长参考文档放在支持文件中,从 SKILL.md 引用,按需加载
  • 在 Agent View 中用 /skill-name 作为 dispatch prompt 可快速复用工作流