⚡精通Claude第3课:学会用Skills让Claude变身为专属专家
![]()
Skills 是 Claude Code 的大招——你可以给它装上各种"技能包",让它变成代码review专家、部署达人、或者任何你需要的专业助手。一次配置,随时调用。
你有没有遇到过这种情况?
- 每次让 Claude 帮你review代码,你都得先把评审标准说一遍。
- 每次让它部署,你都得解释一遍流程。
- 每次让它写文档,你都得强调一遍格式要求。
![]()
Claude Agent Skills 就是来解决这个问题的。它像是给 Claude 装了一个"技能插槽",你提前把专业知识塞进去,以后 Claude 一看到相关任务,自动就调用对应的技能——不用你重复唠叨。
什么是 Skills?说人话!
Skills = 预置的专业知识包。
你可以把它理解成:
- 医学院的选修课:Claude 原本是个通才,你给它上一门"代码review专业课",它就成了这方面的专家
- 厨房的调料盒:提前准备好各种调料,做菜时直接撒,不用每次都现调
- 武侠小说的武功秘籍:把内功心法提前输入,Claude 遇到敌人自动出招
Skills 最大的特点:用的时候才加载,不用时不占地方。
这就厉害了——你可以装几十个技能,Claude 也只会在真正用到的时候才把对应技能的内容调进来。不会把上下文窗口塞爆。
三层加载机制(渐进式披露)
Skills 用了一种很聪明的设计,分三层加载:
┌─────────────────────────────────────────────┐
│ 第1层:元数据(约100 tokens) │
│ - 技能名称 + 简短描述 │
│ - Claude 启动时就知道了这些技能存在 │
└──────────────────────┬──────────────────────┘
│ 触发技能时
┌──────────────────────▼──────────────────────┐
│ 第2层:指令(约5k tokens) │
│ - SKILL.md 的正文内容 │
│ - 工作流程、指导原则 │
└──────────────────────┬──────────────────────┘
│ 需要更多资源时
┌──────────────────────▼──────────────────────┐
│ 第3层:资源文件(无限) │
│ - 模板、脚本、示例代码 │
│ - 按需加载,不进上下文 │
└─────────────────────────────────────────────┘
用人话讲就是:
- 启动时:Claude 知道你有 N 个技能,每个技能是干嘛的
- 触发时:Claude 发现这个任务需要某技能,才把技能说明书加载进来
- 需要时:Claude 发现还需要模板或脚本,才去读取对应文件
这样设计的好处:你装 100 个技能也不会变慢,因为 Claude 不是一次性全加载。
Skill 的目录结构
一个技能长这样:
my-awesome-skill/
├── SKILL.md # 主角,必须有
├── templates/ # 模板文件夹
│ └── output-format.md
├── examples/ # 示例文件夹
│ └── sample-output.md
└── scripts/ # 脚本文件夹
└── validate.sh
最核心的是 SKILL.md,长这样:
---
name: my-skill
description: 这个技能是干嘛的,什么时候该用它
---
# 技能标题
## 使用说明
一步一步告诉 Claude 该怎么做
## 注意事项
有哪些坑要避开
举个例子:做一个代码review专家
假设你想让 Claude 每次review代码都按照你公司的标准来:
目录结构:
~/.claude/skills/code-review/
├── SKILL.md
├── templates/
│ └── review-checklist.md
└── scripts/
└── analyze-metrics.py
SKILL.md 写起来:
---
name: code-review-expert
description: 代码评审专家,专注安全、性能、质量分析。
当你提到 code review、代码评审、PR review 时触发。
---
# 代码评审专家
## 评审维度
1. **安全**:认证授权、数据泄露、注入风险
2. **性能**:算法效率、数据库查询优化
3. **质量**:SOLID原则、命名规范、测试覆盖
4. **可维护性**:代码可读性、函数长度、圈复杂度
## 评审流程
1. 先通读代码,理解整体结构
2. 按上面4个维度逐一检查
3. 整理问题,按严重程度排序
4. 给出具体的修复建议
## 严重程度定义
- **Critical**:必须立即修复,有安全风险
- **High**:应该在下次迭代前修复
- **Medium**:建议修复,不紧急
- **Low**:可选的优化项
详细 Checklist 看 [templates/review-checklist.md](templates/review-checklist.md)
review-checklist.md 长这样:
# Code Review Checklist
## 安全性
- [ ] 是否有 SQL 注入风险
- [ ] 用户输入是否做了校验
- [ ] 敏感数据是否明文存储
- [ ] 权限校验是否完整
## 性能
- [ ] 是否有 N+1 查询问题
- [ ] 循环中是否有不必要的数据库调用
- [ ] 是否需要加缓存
- [ ] 大数据量是否有分页
## ...
现在,当你跟 Claude 说"帮我review一下这个PR",它自动就知道:
- 要从哪几个维度评审
- 问题怎么分类
- 严重程度怎么定义
- 该输出什么格式的报告
不需要你每次都解释一遍。
控制 Claude 什么时候能调用技能
Skills 有三种调用模式,通过 frontmatter 控制:
---
# 模式1:默认(你也可以调用,Claude 也可以调用)
# 不写任何额外配置就行
# 模式2:只有你能调用,Claude 不能主动用
disable-model-invocation: true
# 适合有副作用的操作,比如部署、删除数据
# 模式3:只有 Claude 能调用,你看不到(不显示在 / 菜单)
user-invocable: false
# 适合后台知识,比如解释旧系统怎么工作的
用人话讲:
-
disable-model-invocation: true= 这个技能太危险了,只有我能触发
禁止模型自动调用该技能,仅允许用户手动通过 /skill-name 触发
-
user-invocable: false= 这是 Claude 的私藏知识,不需要当命令用
用户手动不能调用,只能模型自动调用
动态内容注入
Skills 支持用反引号执行命令,把结果塞进技能内容里:
---
name: pr-summary
description: 总结 Pull Request 的内容
---
## PR 信息
- PR 差异:!`gh pr diff`
- PR 评论:!`gh pr view --comments`
- 改动的文件:!`gh pr diff --name-only`
## 你的任务
根据以上信息,生成一份 PR 总结
比如这里有一个自动生成commit信息的skill
-
git status- 显示当前工作区的状态(有哪些文件被修改、暂存或未跟踪) -
git diff HEAD- 显示 HEAD 指向的提交与工作区之间的差异(已修改但未暂存的内容) -
git branch --show-current- 显示当前所在的分支名称 -
git log --oneline -10- 显示最近 10 条提交记录,每条只显示一行(哈希值前7位 + 提交信息)
这些命令组合在一起,能快速了解仓库的完整状态:当前分支、有哪些变更、以及近期提交历史。这通常用于提交前的检查或生成变更记录。
!command`` 会在技能内容加载前执行命令,输出结果直接拼进去。Claude 拿到的时候已经是展开后的完整上下文了。
用 subagent 运行技能(隔离执行)
有时候技能执行起来很复杂,你会想把它放到一个独立的子进程里跑,不占用主会话的上下文。
---
name: deep-research
description: 深入研究某个主题
context: fork # 关键:fork 一个独立子agent
agent: Explore # 用 Explore 类型
---
深入研究 $ARGUMENTS:
1. 用 Glob 和 Grep 找相关文件
2. 读代码,分析逻辑
3. 总结发现,附上具体文件引用
-
context: fork:创建隔离的子对话 / 子 Agent,不污染主上下文 -
agent: Explore:使用探索专用 AI,擅长遍历、搜索、分析项目结构
context: fork 会在一个独立子 agent 里执行这个技能,子 agent 有自己的上下文窗口。适合:
- 研究任务,需要深度探索
- 复杂任务,步骤很多
- 你不想让主会话变乱的时候
技能放在哪?四种作用域
| 类型 | 位置 | 谁能用 | 场景 |
|---|---|---|---|
| 企业级 | 管理员配置 | 全公司 | 公司统一规范 |
| 个人 | ~/.claude/skills/ |
只有你 | 个人工作流 |
| 项目 | .claude/skills/ |
项目成员 | 团队标准 |
| 插件 | 插件目录 | 看插件配置 | 插件附带 |
团队协作推荐用项目级技能:丢进 .claude/skills/ 目录,commit 到 git,团队成员 pull 下来就能用。
实际使用场景
场景1:每次代码提交都要规范信息
name: commit-helper
description: 帮助写规范的 commit message
---
# Commit Message 助手
## 格式要求
():
[optional body]
[optional footer]
## Type 只能选这些
- feat:新功能
- fix:bug修复
- docs:文档改动
- style:格式(不影响代码)
- refactor:重构
- test:测试
- chore:构建/工具
## 示例
feat(auth): 添加微信登录支持
实现了微信 OAuth2.0 登录流程
- 扫码登录
- token 刷新
- 退出登录
## 你的任务
根据我给的改动,写出符合格式的 commit message
场景2:部署要按流程来,不能出错
name: deploy
description: 部署应用到生产环境
disable-model-invocation: true # 太危险,Claude 不能自己触发,只能/name,手动触发
---
部署 $ARGUMENTS 到生产环境:
1. 运行测试:`npm test`
2. 构建应用:`npm run build`
3. 推送部署目标
4. 验证部署是否成功
5. 报告部署状态
如果任何步骤失败,立即停止并报告错误。
场景3:品牌调性知识(Claude 自己看)
name: brand-voice
description: 确保输出内容符合品牌调性(Claude 后台使用)
user-invocable: false
---
## 语气要求
- 友好但不随意
- 清晰简洁,不用黑话
- 自信但不傲慢
- 有同理心,理解用户需求
## 写作规范
- 用"你"称呼读者
- 用主动语态
- 句子控制在20字以内
- 先说价值,再说细节
最佳实践
1. 描述要具体,包含触发词
# ❌ 太泛
description: 帮助处理文档
# ✅ 具体,Claude 知道什么时候该用
description: 提取 PDF 中的文字和表格,填写表单,合并文档。
当你提到 PDF、表单、文档提取时触发。
2. 一个技能做一件事
# ❌ 太宽泛
name: document-helper
description: 处理各种文档相关任务
# ✅ 专注一件事
name: pdf-extractor
description: 从 PDF 文件提取文字、表格、图片
3. SKILL.md 控制在 500 行以内
详细的检查清单、API 文档放到 templates/ 或 references/ 目录,Claude 需要时再加载。
4. 描述要写清楚"什么时候用"
这是 Claude 决定是否触发技能的关键依据。
常见问题
Q: Claude 不触发我的技能怎么办? A: 检查 description 是否包含了用户会说的关键词。描述越具体,触发越准确。
Q: 技能触发太频繁怎么办?
A: 把 description 写窄一点,或者加上 disable-model-invocation: true。
Q: 安装太多技能会变慢吗? A: 不会。Skills 是渐进式加载,Claude 只在触发时才会加载对应技能的内容。
Q: 技能冲突怎么办? A: 优先级:企业 > 个人 > 项目。同名技能,高优先级生效。
总结
Skills 是什么?提前预置的专业知识包。
为什么有用?不用重复唠叨,Claude 自动调用。
怎么用?
- 创建
.claude/skills/<name>/SKILL.md - 写清楚 name 和 description
- 描述里加上触发关键词
现在去试试吧,给你常用的工作流建一个技能,你会发现 Claude 突然变得专业多了。