Claude Code 附带了一个通用的 AI 助手。而 Skills(技能)允许您对其进行专门化定制。一个 Skill 就是一个 markdown 文件,它教导 Claude Code 如何处理特定类型的任务:部署到 Kubernetes、编写数据库迁移、审查 pull requests,或者遵循您团队的编码规范。
“帮我写一个 React 组件”与“帮我写一个遵循我们设计系统、使用自定义 hooks、并具有适当错误边界(error boundaries)和无障碍属性的 React 组件”之间的区别,就在于一个 Skill。
官方 Claude Code 文档现在明确了一点:自定义命令(custom commands)已合并到 Skills 中。虽然 .claude/commands/ 中的现有文件仍然有效,但 Skills 是推荐的抽象方式,因为它们支持更丰富的 metadata、辅助文件和自动加载。如果您现在正在标准化团队工作流,请优先将其构建为 Skill,并将旧版命令视为兼容路径。
什么是 Skills
一个 Skill 存在于一个包含 SKILL.md 入口点的目录中。当描述与当前任务匹配时,Claude 可以自动加载它,或者您也可以通过 /skill-name 直接调用它。
.claude/
skills/
deploy/
SKILL.md # /deploy
review-pr/
SKILL.md # /review-pr
write-test/
SKILL.md # /write-test
Claude 仍然支持 .claude/commands/deploy.md,并且斜杠命令依然有效。但现代化的版本应该是 .claude/skills/deploy/SKILL.md。
这听起来像是一个微小的命名更改。但它很重要,因为 Skills 可以携带辅助文件、frontmatter、调用控制和 subagent 提示。一个简单的命令文件只能告诉 Claude 做什么,而一个 Skill 可以告诉 Claude 您的团队期望如何完成这项工作。
编写您的第一个 Skill
这是一个实际示例:一个强制执行团队 commit 消息规范的 Skill。
创建 .claude/skills/commit/SKILL.md:
---
name: commit
description: Generate and validate conventional commits for this repo.
---
# Commit Workflow
## Steps
1. Run `git diff --staged` to see what's being committed
2. Analyze the changes and categorize: feat, fix, refactor, docs, test, chore
3. Write a commit message following our convention:
- Format: `type(scope): description`
- Scope is the package or module name
- Description is imperative mood, lowercase, no period
- Body explains WHY, not WHAT
4. If changes touch multiple scopes, create separate commits
5. Run `git commit -m "message"` with the generated message
## Rules
- Never use `--no-verify` to skip hooks
- Never amend published commits
- If tests fail in pre-commit, fix the issue first
## Examples
- `feat(billing): add stripe webhook handler`
- `fix(auth): handle expired refresh tokens`
- `refactor(api): extract rate limiter to shared package`
现在,/commit 会为 Claude Code 提供一个结构化的工作流,而不是模糊的“提交我的更改”指令。
如果您已经拥有旧版命令文件,请在迁移时保持它们运行,但不要再对旧布局进行投入。官方文档明确指出,Skills 是未来的发展方向。
Skills 现在的存放位置
Claude Code 目前从四个地方发现 Skills:
- 个人技能:
~/.claude/skills/<skill-name>/SKILL.md - 项目技能:
.claude/skills/<skill-name>/SKILL.md - monorepos 中的嵌套项目技能
- 插件提供的技能
这为您提供了一个清晰的划分:
- 个人技能用于您自己的工作风格
- 项目技能用于仓库规范
- 插件技能用于可复用的打包工作流
为了团队采用,请将项目技能提交到仓库。这就是“我的笔记本电脑上有一个不错的 prompt”与“团队现在拥有一个可重复的工作流”之间的区别。
Skill 设计模式
核对清单模式 (The Checklist Pattern)
最适合具有多个验证步骤的任务。
# Pre-Deploy Checklist
Before deploying, verify each item:
- [ ] `pnpm typecheck` passes
- [ ] `pnpm test` passes
- [ ] No console.log statements in production code
- [ ] Environment variables documented in .env.example
- [ ] Database migrations are reversible
- [ ] API changes are backward compatible
If any check fails, stop and report the issue. Do not proceed with deployment.
决策树模式 (The Decision Tree Pattern)
最适合处理方式取决于具体上下文的任务。
# Bug Fix Workflow
1. Reproduce the bug (find or write a failing test)
2. Identify the root cause:
- If it's a type error → fix the type definition at the source
- If it's a race condition → add proper locking/sequencing
- If it's a missing validation → add schema validation at the boundary
- If it's a logic error → fix and add regression test
3. Verify the fix doesn't break existing tests
4. Write a test that would have caught this bug
模板模式 (The Template Pattern)
最适合生成一致的输出。
# New API Endpoint
Create a new API endpoint following our conventions:
## File Structure
- Route handler: `apps/api/src/routes/{resource}/{action}.ts`
- Schema: `apps/api/src/schemas/{resource}.ts`
- Test: `apps/api/src/routes/{resource}/__tests__/{action}.test.ts`
## Required Elements
- Zod schema for request validation
- Authentication middleware
- Rate limiting
- Structured error responses using errorResponse()
- Success responses using successResponse()
- OpenAPI documentation comments
安装社区 Skills
Claude Code 生态系统拥有一个不断增长的社区技能库。使用以下命令安装它们:
npx add-skill username/repo-name -y
流行的 Skill 集合:
coreyhaines31/marketingskills(29 个营销/SEO 技能)hedging8563/lemondata-api-skill(LemonData API 集成)
安装的技能会出现在 ~/.claude/commands/ 中,并可在所有项目中使用。
安装的技能包越来越多地暴露真正的 Skills,而不仅仅是斜杠命令 markdown。如果您维护自己的仓库,来自 OpenCode + LemonData 的模式也适用于此:让 Skill 紧贴工作流,而不是隐藏在临时的 prompt 文件中。
项目技能 vs 全局技能
| 位置 | 范围 | 用例 |
|---|---|---|
.claude/skills/ |
仅限此项目 | 项目规范、部署工作流 |
~/.claude/skills/ |
所有项目 | 个人偏好、可复用的习惯 |
.claude/commands/ |
旧版兼容 | 仍然有效的旧斜杠命令文件 |
项目技能应该提交到您的仓库,以便整个团队受益。全局技能则用于个人工作流偏好。
高级:带有 Hooks 的 Skills
Skills 可以引用 hooks(在特定事件上运行的 shell 命令)来实现自动化强制执行:
# Pre-Commit Check
Before any commit, the following hooks run automatically:
- `pre-commit`: runs typecheck + lint
- `post-commit`: updates changelog
If a hook fails, investigate the error output and fix the issue.
Do not use --no-verify to bypass hooks.
Hooks 本身在 .claude/settings.json 中配置:
{
"hooks": {
"pre-commit": "pnpm typecheck && pnpm lint-staged"
}
}
这就是 Skills 不仅仅是 prompt 片段的地方。一个有用的团队设置通常有三个层面:
- 一个告诉 Claude 工作流的 Skill
- 强制执行该工作流的 hooks
- 向人类解释该工作流的仓库文档
如果缺少其中一层,系统就会变得脆弱。没有 hooks 的 Skill 变成了建议性的;没有 Skill 的 hooks 变得晦涩难懂;而没有这两者的文档则变成了没人遵守的陈旧政策。
辅助文件才是真正的升级
相比旧的命令 markdown 文件,优先选择 Skills 的最重要原因是它支持辅助文件。
使用命令文件时,所有内容都必须存在于一个大块中。而使用 Skill 目录,您可以保留:
- 模板
- 示例
- shell 辅助脚本
- 更长的参考笔记
- 验证器脚本
这让您可以保持 SKILL.md 简短且高信号,同时在需要时仍能为 Claude 提供结构化的素材。
这对于以下情况特别有用:
- 部署工作流
- Schema 迁移核对清单
- 多步骤代码审查流程
- 特定产品的集成手册
如果您的团队还在使用多个模型或多种编程工具,请将此页面与 2026 年最佳 AI 编程模型对比 以及 Cursor / Cline / Windsurf 设置指南 结合阅读。当底层模型或编辑器发生变化时,优秀的 Skills 会变得更加重要。
高效 Skills 的编写技巧
明确文件路径和命名规范。“创建一个组件”很模糊,“在
src/components/ui/中使用 PascalCase 命名创建一个组件”则具有可操作性。包含正确输出的示例。相比抽象的规则,Claude Code 从示例中学习的效果更好。
定义“不要做什么”。“永远不要使用
any类型”比“使用正确的类型”更容易强制执行。保持 Skills 聚焦。每个工作流一个 Skill。一个涵盖所有内容的 200 行 Skill 不如五个各司其职的 40 行 Skill 有用。
为您的 Skills 标注版本。随着规范的演进,请更新 Skills。过时的 Skills 比没有 Skills 更糟糕,因为它们会强制执行旧的模式。
决定 Skill 应该是自动加载还是仅手动运行。许多团队忘记了这一点,然后纳闷为什么 Claude 会在无关的对话中调用部署 Skill。
现实世界的影响
采用 Skills 的团队报告了持续的改进:
- 代码审查周期缩短,因为规范在审查前就已得到执行
- 入职时间减少,因为新开发人员可以获得与资深开发人员相同的指导
- AI 生成的代码质量提高,因为 AI 拥有关于项目标准的明确上下文
这项投入很小(编写您的前几个 Skills 仅需 30 分钟),而回报会在每次交互中复合增长。
最有用的思维模型是:Skill 不是 Claude 的快捷方式,它是您团队的版本化工作流产物。
如果您只编写一个 Skill,请选择那个能够编码您代码库中成本最高、重复决策最多的 Skill。
在您自己的规则引导下,利用 AI 进行构建。LemonData 为您提供一个 API key,即可使用各供应商的编程模型,因此一旦您的工作流被编码为 Skills,您就可以在不重建整个工具链的情况下切换模型。
