Claude Code Skills 是什么:一段按需加载的「操作手册」
Claude Code Skills 的核心思路一句话说清:把你反复粘贴的指令沉淀成一个 SKILL.md 文件,Claude 在相关任务出现时自动加载,平时不占上下文。它解决的是「同一套流程每天手打三遍」的问题——比如代码审查清单、发版步骤、某个内部 API 的调用规范。
官方文档(code.claude.com)给出的判断标准很实用:当你「不断把同样的指令、检查清单或多步流程粘进对话」,或者 CLAUDE.md 里某一段已经从「事实描述」长成了「操作流程」,就该把它拆成 Skill 。与 CLAUDE.md 的区别在于加载时机:CLAUDE.md 每次会话全文注入,Skill 只在触发时才读正文,长文档几乎零成本。
SKILL.md 的结构:frontmatter + 正文
每个 Skill 是一个目录,最核心是一个 SKILL.md,由两部分组成:
---
description: 汇总未提交改动并标出风险。用户问改了什么、要写 commit message 或 review diff 时使用。
---
## 当前改动
!`git diff HEAD`
## 指令
用两三条要点总结上面的改动,再列出你发现的风险,例如缺失的错误处理、硬编码值。
frontmatter 里的 description 是关键字段——Claude 靠它判断什么时候自动加载这个 Skill,写清楚「做什么 + 什么时候用」比写漂亮话重要得多。正文里的 !`命令` 是动态上下文注入:Claude Code 会先执行命令、把输出替换进正文,再让模型读,这样指令天生带着最新数据。
两个控制开关值得记住:disable-model-invocation: true 只允许人手动 /skill-name 触发,适合部署这类有副作用的动作;user-invocable: false 则只让模型自动用,适合纯背景知识。
三层存放位置与官方内置 Skill
- 个人级:
~/.claude/skills/,跨所有项目可用; - 项目级:
.claude/skills/,只对当前仓库生效,可以提交进 Git 让团队共享; - 插件级:带命名空间(如
my-plugin:review),不会与个人级冲突。
同名时企业级覆盖个人级、个人级覆盖项目级。另外,早期的 .claude/commands/ 自定义命令已经合并进 Skill 体系,老文件继续有效,但同名时 Skill 优先。
Claude Code 还内置了一批官方 Skill:/code-review、/debug、/run、/verify 等。其中 /run-skill-generator 值得单独一提——它会把「怎么构建并启动你的项目」这套踩坑经验录制成项目专属 Skill,之后所有智能体都按录好的配方启动,不用每次重新摸索。
实操:五分钟写第一个 Skill
以「提交前检查」为例,流程如下:
- 在仓库根目录建
.claude/skills/pre-commit-check/SKILL.md,目录名就是将来的命令名。 - 写 frontmatter:description 写成「提交前检查敏感信息、 TODO 和超大文件,用户要求提交或 review 时使用」。
- 正文列出检查项和用到的命令(如
!`git diff --stat`注入当前改动概况)。 - 在会话里问「帮我检查能不能提交」,或直接输入
/pre-commit-check验证触发。 - 确认
.claude/skills/目录已提交进 Git,团队拉代码后即可共用。
经验总结:三个容易踩的坑
- description 写太泛:写成「帮助开发者」的 Skill 几乎永远不触发,把触发场景写具体;
- 正文超 500 行:官方建议 SKILL.md 控制在 500 行以内,详细参考资料拆成
reference.md、examples.md放同目录,正文里注明「需要时读取」,这就是渐进披露; - 把事实也塞进 Skill:项目约定、架构说明这类「每轮都要知道」的内容留给 CLAUDE.md,Skill 只放流程。
Skills 、 Hooks 、子智能体三者组合才是完整玩法:Skill 管知识加载,Hooks 管事件自动执行,子智能体管上下文隔离。想深入可以接着读本站这三篇。
延伸阅读(站内)
Skill 和自定义命令有什么区别?
Skill 会一直占用上下文吗?
个人级和项目级 Skill 重名了怎么办?
参考来源:Claude Code 官方文档 code.claude.com/docs/en/skills;Anthropic 帮助中心「 Creating custom skills 」。本文为原创整理与实践补充。









评论 (0)