Blog
Tutorials·15 min read

Claude Code 精通指南 第5篇:Skills 技能模块

Skills 是 Claude 在需要时自动加载的专业知识模块。了解 Skills 与 Commands 的区别,学会创建自己的技能,探索强大的技能合集。

Jo Vinkenroye·January 15, 2026
Claude Code 精通指南 第5篇:Skills 技能模块

你已经搞定了自定义命令。它们非常适合你主动触发的工作流——/review/commit/deploy。但有些知识,Claude 应该在合适的时候自动应用,而不需要你刻意去调用——这怎么办?

这就是 Skills(技能模块)的作用。它们是专业知识模块,Claude 会在相关时机自动发现并加载,而不是等你显式调用。把 Commands 想象成你主动拿起的工具;Skills 则是 Claude 掌握的专业能力。

Commands vs Skills:到底有什么区别?

搞清这个区别很重要,因为它决定了你如何组织自动化体系。

斜杠命令(来自第4篇):

  • 你显式调用:/review/commit
  • 调用时立即加载
  • 适合你想主动触发的工作流
  • 简单的 Markdown 文件,可选 frontmatter

Skills

  • Claude 在你的请求匹配时自动调用
  • 懒加载——启动时只读取描述,使用时才加载完整内容
  • 适合标准规范、模式和专业知识,Claude 应该始终遵循的那种
  • 可以打包辅助文件、示例和可执行脚本

心智模型是这样的:Commands 是动词(你要做的事),Skills 是专业知识(Claude 知道的事)。

当你说"review 这个 PR"时,你可能希望 Claude:

  1. 运行你的 /review 命令(显式操作)
  2. 从 Skill 中自动应用团队的代码审查标准(自动知识)

两者各有用武之地。

Skills 的工作原理

Skills 的精妙之处在于渐进式加载(Progressive Disclosure)。流程是这样的:

启动时:Claude 只读取每个 Skill 的 SKILL.md 文件中的 namedescription。开销极小。

当你发出请求时:Claude 将你的请求与 Skill 描述进行匹配。如果命中,它会问:「我找到了一个可能有帮助的 Skill,要使用吗?」

确认后:完整的 SKILL.md 内容加载到上下文中。辅助文件只在 Claude 执行过程中需要时才加载。

这意味着你可以拥有几十个 Skills,却不会有性能损耗。它们是按需加载的,不是一次性全部加载。

小贴士: 写 Skill 描述时,用用户自然会说的关键词。"帮助处理文档"太模糊了,不会触发匹配。"使用 OWASP 安全准则和团队格式标准审查 Pull Request"才能精准命中。

Skill 文件结构

Skills 放在目录中,必须包含 SKILL.md 文件:

.claude/skills/
└── code-review/
├── SKILL.md # 必需 - 指令和 frontmatter
├── examples/ # 可选 - 输出示例
│ ├── good-review.md
│ └── bad-review.md
├── templates/ # 可选 - 输出模板
│ └── review-template.md
└── scripts/ # 可选 - 可执行辅助脚本
└── lint-check.sh

关键约束:

  • SKILL.md 是必需的(文件名大小写敏感)
  • SKILL.md 建议控制在 500 行以内,以获得最佳性能
  • 辅助文件通过 SKILL.md 中的链接被发现
  • 脚本执行时不会将源码加载到上下文——只有输出才消耗 token

Skills 存放位置

Skills 遵循层级结构——越高层优先级越高:

企业级(Enterprise) — 组织为所有用户统一管理的设置(最高优先级)

个人级(Personal)~/.claude/skills/ — 你的 Skills,所有项目通用

项目级(Project).claude/skills/ — 团队 Skills,提交到 git

插件级(Plugin) — 插件目录中的 skills/ — 安装了该插件的人都能用

分配逻辑跟 Commands 类似:个人 Skills 跟着你走,项目 Skills 跟团队共享。

SKILL.md 模板

一个结构良好的 Skill 长这样:

---
name: code-review
description: "Review pull requests using OWASP security guidelines, performance best practices, and team formatting standards"
allowed-tools: Read, Grep, Glob
model: claude-sonnet-4-5-20250929
---
# Code Review Standards
## Purpose
Apply consistent code review standards across all PRs.
## When to Use
- Reviewing pull requests
- Checking code for security issues
- Validating against team conventions
## Instructions
### Security Checks
1. SQL injection vulnerabilities
2. XSS attack vectors
3. Authentication bypasses
4. Sensitive data exposure
### Performance Checks
1. N+1 query patterns
2. Unnecessary re-renders
3. Memory leaks
4. Blocking operations
### Style Checks
1. Naming conventions per team standards
2. Function length (max 50 lines)
3. Cyclomatic complexity
## Output Format
Organize findings by severity:
- 🚨 Critical (blocks merge)
- ⚠️ Warnings (should fix)
- 💡 Suggestions (nice to have)
## Examples
See ./examples/good-review.md for proper format.

Frontmatter 配置项

Skills 通过 YAML frontmatter 支持强大的配置:

name(必填)— Skill 标识符。只能用小写字母、数字和连字符。最长 64 个字符。

description(必填)— 做什么、什么时候用。最长 1024 个字符。这是 Claude 将请求与 Skills 匹配的依据——写得越具体越好。

allowed-tools — 当该 Skill 激活时,Claude 可以免确认使用的工具。逗号分隔或 YAML 列表格式。

model — 该 Skill 运行时使用的模型。适合需要复杂推理的场景。

context — 设为 fork 可在隔离的子代理上下文中运行,拥有独立的对话历史。

agent — 当 context: fork 时的代理类型。选项:Explore、Plan、general-purpose 或自定义。

hooks — 定义 Skill 作用域内的钩子:PreToolUse、PostToolUse、Stop。

user-invocable — 设为 false 可从 / 菜单隐藏,但仍允许自动发现。

disable-model-invocation — 设为 true 可阻止 Claude 以编程方式调用(但在菜单中仍可见)。

创建你的第一个 Skill

来做一个实用的 Skill:一个 TDD(Test-Driven Development,测试驱动开发)指南,当你在写测试时 Claude 会自动应用。

第一步:创建目录

mkdir -p .claude/skills/tdd

第二步:创建 SKILL.md

cat > .claude/skills/tdd/SKILL.md << 'EOF'
---
name: tdd
description: "Apply test-driven development workflow when writing tests, implementing features with tests, or following red-green-refactor cycle"
allowed-tools: Read, Write, Edit, Bash(npm test:*), Bash(bun test:*)
---
# Test-Driven Development
## Purpose
Guide development through proper TDD: Red → Green → Refactor.
## When to Use
- When user asks to "add a feature with tests"
- When user mentions "TDD" or "test-driven"
- When creating new functionality that requires tests
- When user asks to implement something "the right way"
## The TDD Cycle
### Phase 1: Red (Write Failing Test)
1. Understand the requirement fully
2. Write the simplest test that fails
3. Verify the test fails for the RIGHT reason
4. DO NOT write implementation yet
### Phase 2: Green (Make It Pass)
1. Write minimal code to pass the test
2. No extra features, no edge cases yet
3. Ugly code is acceptable—just make it green
### Phase 3: Refactor (Clean Up)
1. Improve code quality
2. Remove duplication
3. Better naming
4. Tests MUST stay green
### Repeat
For each new behavior, start the cycle again.
## Anti-Patterns to Avoid
- Writing implementation before tests
- Writing multiple tests at once
- Refactoring while tests are red
- Skipping the refactor phase
## Example Session
See ./examples/tdd-session.md for a complete walkthrough.
EOF

第三步:添加示例

mkdir -p .claude/skills/tdd/examples
cat > .claude/skills/tdd/examples/tdd-session.md << 'EOF'
# TDD Session: Adding Email Validation
## Requirement
Validate email format in user registration.
## Cycle 1: Basic Validation
### Red
```typescript
// user.test.ts
it('should reject invalid email format', () => {
expect(() => new User('notanemail')).toThrow('Invalid email');
});
```
Run: `npm test` → FAILS (User doesn't validate emails yet)
### Green
```typescript
// user.ts
constructor(email: string) {
if (!email.includes('@')) {
throw new Error('Invalid email');
}
this.email = email;
}
```
Run: `npm test` → PASSES
### Refactor
Extract validation:
```typescript
private validateEmail(email: string): void {
if (!email.includes('@')) {
throw new Error('Invalid email');
}
}
```
## Cycle 2: Domain Validation
### Red
```typescript
it('should reject email without domain', () => {
expect(() => new User('test@')).toThrow('Invalid email');
});
```
...continue cycle...
EOF

第四步:开始使用

现在当你说"给邮箱验证加上完善的测试",Claude 会:

  1. 识别出这与 TDD Skill 的描述匹配
  2. 询问你是否要使用 TDD Skill
  3. 自动按照 Red → Green → Refactor 循环执行
分心男友表情包 - 开发者盯着"先上线再说,测试以后补",而"先写测试"在旁边投来不满的目光
分心男友表情包 - 开发者盯着"先上线再说,测试以后补",而"先写测试"在旁边投来不满的目光

Superpowers 合集

最受欢迎的 Skills 库是 obra/superpowers,GitHub 上有 16,500+ stars。它经过实战验证,涵盖了常见的开发工作流。

安装方式

/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace

或者直接克隆:

git clone https://github.com/obra/superpowers.git ~/.claude/skills/superpowers

注意: Skills 使用的目录命名空间机制和第4篇中介绍的命令组织方式类似。同样的组织模式适用——子目录创建命名空间,便于管理。

包含的核心 Skills

/superpowers:brainstorm — 在开始复杂功能之前进行结构化头脑风暴。先想清楚再动手写代码。

/superpowers:write-plan — 为迁移或多文件重构创建实施计划。

/superpowers:execute-plan — 分批执行计划,带检查点控制。

/superpowers:tdd — 完整的 Red/Green/Refactor 循环的测试驱动开发。

/superpowers:debug — 系统化调试,追踪根因。

为什么它好用

Superpowers 不只是一堆提示词——它是经过生产验证的模式。以 TDD Skill 为例,它包含:

  • 反模式检测(写完代码才补测试)
  • 异步测试模式
  • 正确的断言结构
  • 重构触发时机

这些模式来自成千上万开发者的真实使用经验。

实用 Skill 创意

这些 Skill 值得为你的团队搭建:

API 文档 — 当 Claude 编写或更新接口时,自动应用你的 API 文档标准。

错误处理 — 强制使用一致的错误处理模式(你的 ApiError 类、日志格式、面向用户的消息)。

数据库模式 — 应用团队的查询、事务、迁移规范。

安全审查 — 审查代码时自动检查 OWASP Top 10 问题。

组件模式 — 强制遵循你的 React/Vue/Svelte 组件结构和命名规范。

Commit 消息 — 自动应用约定式提交(Conventional Commits)格式。

Skills + 脚本:强力组合

这是一个被低估的玩法:Skills 可以打包可执行脚本,执行时不会将脚本源码加载到上下文中。

.claude/skills/security-audit/
├── SKILL.md
└── scripts/
├── check-dependencies.sh
├── scan-secrets.py
└── validate-permissions.js

在你的 SKILL.md 中:

## Available Scripts
Run these for automated checks:
- `./scripts/check-dependencies.sh` - Scan for vulnerable packages
- `./scripts/scan-secrets.py` - Find hardcoded secrets
- `./scripts/validate-permissions.js` - Check file permissions

Claude 可以执行这些脚本,但只有输出会消耗上下文——脚本源码不会。这对于复杂验证逻辑来说特别完美,因为经过测试的代码远比 LLM 临时生成的命令可靠。

Skills vs Commands:什么时候用哪个

用 Commands 的场景:

  • 你想精确控制运行时机
  • 工作流由用户主动发起(部署、提交、生成)
  • 需要传参($ARGUMENTS$1$2
  • 操作是独立的、一次性的

用 Skills 的场景:

  • 知识应该根据上下文自动应用
  • 你希望不用刻意调用就能保持一致的标准
  • 专业知识跨越多种请求类型
  • 你在编码团队知识,Claude 应该随时掌握的那种

两者配合使用:

  • /review 命令触发审查
  • code-review Skill 提供审查标准

Skill 可用性

Skills 需要付费计划:

  • Pro、Max、Team、Enterprise — 完整 Skills 支持
  • 免费版 — 不支持 Skills

如果你在用免费计划又想编码团队知识,可以使用第3篇中介绍的 .claude/rules/ 目录。Rules 始终加载;Skills 是懒加载的。

发现更多 Skills

GitHub Topics:

https://github.com/topics/claude-skills

社区合集:

Agent Skills 规范 — 2025 年 12 月作为开放标准发布。OpenAI 在 Codex CLI 和 ChatGPT 中也采用了相同格式,所以你为 Claude 构建的 Skills 可以跨工具使用。

下一篇预告

Skills 赋予 Claude 在合适时机自动激活的专业知识。但如果你需要 Claude 同时做多件事呢?如果一个任务可以通过并行执行来加速呢?

这就是 Subagents(子代理)的用武之地。在第6篇:Subagents中,我们会探索如何启动专门的代理并行工作——跑测试的同时生成文档,同时检查安全问题,全部同步进行。

Quick Reference

文件位置

~/.claude/skills/name/SKILL.md — 个人(所有项目通用)

.claude/skills/name/SKILL.md — 项目(团队共享)

必需结构

skill-name/SKILL.md — 必需

examples/templates/scripts/ — 可选

Frontmatter

name — Skill 标识符

description — 使用场景(越具体越好)

allowed-tools — 如 Read, Write, Bash(npm *)

model — 指定模型

安装 superpowers

git clone https://github.com/obra/superpowers.git ~/.claude/skills/superpowers

Stay Updated

Get notified about new posts on automation, productivity tips, indie hacking, and web3.

No spam, ever. Unsubscribe anytime.

Comments

Related Posts