Part 5 of 10
你已经搞定了自定义命令。它们非常适合你主动触发的工作流——/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:
- 运行你的
/review命令(显式操作) - 从 Skill 中自动应用团队的代码审查标准(自动知识)
两者各有用武之地。
Skills 的工作原理
Skills 的精妙之处在于渐进式加载(Progressive Disclosure)。流程是这样的:
启动时:Claude 只读取每个 Skill 的 SKILL.md 文件中的 name 和 description。开销极小。
当你发出请求时: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-reviewdescription: "Review pull requests using OWASP security guidelines, performance best practices, and team formatting standards"allowed-tools: Read, Grep, Globmodel: claude-sonnet-4-5-20250929---# Code Review Standards## PurposeApply consistent code review standards across all PRs.## When to Use- Reviewing pull requests- Checking code for security issues- Validating against team conventions## Instructions### Security Checks1. SQL injection vulnerabilities2. XSS attack vectors3. Authentication bypasses4. Sensitive data exposure### Performance Checks1. N+1 query patterns2. Unnecessary re-renders3. Memory leaks4. Blocking operations### Style Checks1. Naming conventions per team standards2. Function length (max 50 lines)3. Cyclomatic complexity## Output FormatOrganize findings by severity:- 🚨 Critical (blocks merge)- ⚠️ Warnings (should fix)- 💡 Suggestions (nice to have)## ExamplesSee ./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: tdddescription: "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## PurposeGuide 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 fully2. Write the simplest test that fails3. Verify the test fails for the RIGHT reason4. DO NOT write implementation yet### Phase 2: Green (Make It Pass)1. Write minimal code to pass the test2. No extra features, no edge cases yet3. Ugly code is acceptable—just make it green### Phase 3: Refactor (Clean Up)1. Improve code quality2. Remove duplication3. Better naming4. Tests MUST stay green### RepeatFor 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 SessionSee ./examples/tdd-session.md for a complete walkthrough.EOF
第三步:添加示例
mkdir -p .claude/skills/tdd/examplescat > .claude/skills/tdd/examples/tdd-session.md << 'EOF'# TDD Session: Adding Email Validation## RequirementValidate email format in user registration.## Cycle 1: Basic Validation### Red```typescript// user.test.tsit('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.tsconstructor(email: string) {if (!email.includes('@')) {throw new Error('Invalid email');}this.email = email;}```Run: `npm test` → PASSES### RefactorExtract validation:```typescriptprivate validateEmail(email: string): void {if (!email.includes('@')) {throw new Error('Invalid email');}}```## Cycle 2: Domain Validation### Red```typescriptit('should reject email without domain', () => {expect(() => new User('test@')).toThrow('Invalid email');});```...continue cycle...EOF
第四步:开始使用
现在当你说"给邮箱验证加上完善的测试",Claude 会:
- 识别出这与 TDD Skill 的描述匹配
- 询问你是否要使用 TDD Skill
- 自动按照 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 ScriptsRun 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-reviewSkill 提供审查标准
Skill 可用性
Skills 需要付费计划:
- Pro、Max、Team、Enterprise — 完整 Skills 支持
- 免费版 — 不支持 Skills
如果你在用免费计划又想编码团队知识,可以使用第3篇中介绍的 .claude/rules/ 目录。Rules 始终加载;Skills 是懒加载的。
发现更多 Skills
GitHub Topics:
https://github.com/topics/claude-skills
社区合集:
- obra/superpowers — 核心开发模式
- obra/superpowers-skills — 社区贡献的 Skills
- SkillsMP — Claude/ChatGPT Skills 市场
Agent Skills 规范 — 2025 年 12 月作为开放标准发布。OpenAI 在 Codex CLI 和 ChatGPT 中也采用了相同格式,所以你为 Claude 构建的 Skills 可以跨工具使用。
下一篇预告
Skills 赋予 Claude 在合适时机自动激活的专业知识。但如果你需要 Claude 同时做多件事呢?如果一个任务可以通过并行执行来加速呢?
这就是 Subagents(子代理)的用武之地。在第6篇:Subagents中,我们会探索如何启动专门的代理并行工作——跑测试的同时生成文档,同时检查安全问题,全部同步进行。
文件位置
~/.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.

