Skip to content

Claude Code Skills 是一种可复用、自动触发的 AI 能力扩展机制,支持将领域知识、工作流和最佳实践封装为可发现、可组合的模块。Skills 基于 Progressive Disclosure(渐进式加载)架构,具备灵活的前置字段配置和三种调用方式(用户、Claude、自动),大幅提升了 AI 协作与自动化效率。本文将详解 Skills 的原理、结构、配置及与旧版 Commands 的核心区别,帮助你系统掌握 Claude Code 的技能体系。

Claude Code Skills 体系详解:构建可复用、可自动触发的 AI 技能

Claude Code Skills 是什么?简单来说,Skills 是一种基于文件系统的 AI 能力扩展机制,可将专业知识、工作流和团队最佳实践打包成“技能”,让 Claude 在需要时自动加载、复用和组合这些能力。相比传统的 prompt 或一次性指令,Skills 支持自动发现、按需加载和多场景复用,是 Claude Code 生态的核心扩展方式。

Skills 体系不仅提升了 AI 的专业性和一致性,还极大减少了重复指令输入,支持团队共享与自动化,适用于个人、项目和企业级场景。Skills 机制已全面取代并升级了旧版 Slash Commands(斜杠命令),成为推荐的扩展方式。

一、Skills 的架构与工作原理

1. Progressive Disclosure:渐进式加载架构

Skills 采用 Progressive Disclosure 架构,将技能内容分为三个加载层级,只有在真正需要时才加载详细内容,极大优化了上下文窗口的利用效率:

层级何时加载令牌消耗内容说明
Level 1: 元数据启动时总是加载~100 tokens/SkillYAML frontmatter 的 namedescription
Level 2: 指令正文技能被触发时<5k tokensSKILL.md 主体,包含详细指令与范例
Level 3+: 资源文件需要时加载几乎无限关联脚本、模板、文档等,仅按需读取

这种架构让你可以放心安装大量 Skills,而不会影响 Claude 的响应速度或上下文容量。只有 Skill 被触发时,才会将详细内容注入到 AI 的上下文中。

2. 多层次发现与优先级

Claude Code 会自动发现以下目录下的 Skills:

  • 项目级.claude/skills/<skill-name>/SKILL.md
  • 个人级~/.claude/skills/<skill-name>/SKILL.md
  • 企业级:组织统一配置
  • 插件内<plugin>/skills/<skill-name>/SKILL.md

优先级为:企业 > 个人 > 项目。插件 Skill 独立命名空间不会冲突。支持嵌套目录和 --add-dir 动态加载,适合 monorepo 等复杂项目结构。

3. 与旧版 Slash Commands 的关系

Skills 体系已全面兼容并替代了旧版 Slash Commands(见Slash Commands 完整参考)。原有 .claude/commands/ 目录仍可用,支持相同 frontmatter 字段,但建议新开发统一采用 Skills 目录结构。同名时,Skills 优先生效

二、Skill 文件结构与配置详解

1. 目录结构示例

bash
my-skill/
├── SKILL.md           # 主体指令与说明(必需)
├── templates/         # 模板文件
   └── output-format.md
├── scripts/           # 可执行脚本
   └── validate.sh
├── references/        # 参考文档
   └── api-spec.md
└── examples/          # 示例输出
    └── sample.md

2. SKILL.md 前置字段(Frontmatter)全表

字段说明
name技能名(小写字母/数字/短横线,≤64字符,不能含“anthropic”或“claude”)
description技能作用+触发场景(≤1024字符),决定自动触发匹配度
argument-hint/ 自动补全提示(如 [filename] [format]
disable-model-invocationtrue 时仅用户可触发,Claude 不会自动调用
user-invocablefalse 时隐藏在 / 菜单,仅 Claude 可自动调用
allowed-tools限定可用工具(如 Read, Grep, Glob
model指定激活时用的模型(如 opussonnet
effort任务强度覆盖(low/medium/high/max
contextfork 时以子代理独立上下文运行
agent指定子代理类型(如 ExplorePlan
shell指定命令行环境(bash 默认,或 powershell
hooks技能级生命周期钩子(详见Hooks 指南

范例 frontmatter:

yaml
---
name: code-review
description: 全面代码审查,关注安全、性能与质量。用户请求代码审查、分析、评估 PR 时触发。
argument-hint: "[file]"
disable-model-invocation: false
user-invocable: true
allowed-tools: Read, Grep
context: fork
agent: Explore
shell: bash
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/validate.sh"
---

3. SKILL.md 主体内容

  • 指令说明:分步骤明确指引 Claude 如何执行
  • 示例:具体输入输出样例
  • 引用其它文件:用相对路径引用模板、参考文档等

内容建议 ≤500 行,详细资料分文件放 supporting files。

4. 动态变量与上下文注入

支持如下动态变量与命令输出注入:

变量说明
$ARGUMENTS用户传入的全部参数
$ARGUMENTS[N]$N第 N 个参数(0 起)
${CLAUDE_SESSION_ID}当前会话 ID
${CLAUDE_SKILL_DIR}技能目录路径
!`command`执行 shell 命令并内联输出

示例:

yaml
---
name: pr-summary
description: 总结 PR 变更
context: fork
agent: Explore
---
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`

三、Skill 的三种调用方式

Claude Code Skills 支持三种调用模式,灵活适配不同场景:

配置用户可触发Claude 可自动触发
默认
disable-model-invocation: true
user-invocable: false
  • 用户调用:通过 /skill-name 指令直接触发,适合显式操作(如 /deploy)。
  • Claude 自动调用:Claude 根据 description 匹配用户自然语言请求,自动选择最合适的 Skill(如“请帮我做代码审查”)。
  • 自动触发:有些技能仅供 Claude 背景知识用,不在菜单显示(如品牌语气、领域规范)。

调用控制建议

  • 有副作用的操作(如部署、提交)建议加 disable-model-invocation: true,避免 Claude 擅自执行。
  • 仅作知识补充的技能(如 brand-voice)用 user-invocable: false,不暴露给用户。

四、Skill 类型与典型用法举例

更多实战案例可参考:Claude Code 完全入门 和各 Skill 专文。

五、Skill 的管理与共享

  • 查看已安装技能

    bash
    ls ~/.claude/skills/
    ls .claude/skills/

    或直接问 Claude:“What Skills are available?”

  • 编辑/更新技能:直接修改 SKILL.md 文件,重启 Claude Code 或保存后即时生效(--add-dir 支持热加载)。

  • 团队共享:项目级技能放 .claude/skills/,通过 git 共享。

  • 插件分发:打包到插件的 skills/ 目录,统一分发。

  • 安全建议:仅安装信任来源的技能,Skill 可包含脚本与工具调用,务必审核全部内容。

六、Skill 与其它扩展机制的区别

功能触发方式适用场景
Skills自动/手动复用知识、工作流
Slash Commands手动快捷命令(现已合并进 Skills)
Subagents自动委托复杂任务分工,详见Subagents 指南
Memory (CLAUDE.md)总是加载持久项目上下文,见CLAUDE.md 深度指南
MCP实时外部数据/服务集成,见MCP 实战
Hooks事件驱动自动校验、格式化等,见Hooks 完全指南

更多对比可参考:六大扩展机制对比


FAQ

Q: Skills 和旧版 Slash Commands 有什么区别? A: Skills 体系更强大,支持自动触发、分层加载、丰富的前置字段和目录结构,已全面兼容并替代 Slash Commands,建议新开发统一用 Skills。

Q: Claude 为什么没有自动触发我的 Skill? A: 可能是 description 不够具体,缺少关键词,或 Skill 被排除(如描述超出预算)。请优化描述并用 /context 检查加载情况。

Q: 如何让某个 Skill 只允许用户手动触发? A: 在 SKILL.md 的 frontmatter 加 disable-model-invocation: true,这样 Claude 不会自动调用该技能。