在日常开发工作中,我们经常需要向 AI 助手反复解释项目的架构规范、编码标准、业务逻辑。每次对话都要重新说明"我们使用什么数据库表结构"、"代码审查需要检查哪些项"、"API 命名规范是什么"……这些重复性的解释不仅耗时,还容易出现前后不一致的情况。
Claude Code 推出的Skills功能正是为解决这个痛点而生。它允许你将团队的专业知识、工作流程、技术规范打包成可重用的模块,让 AI 助手真正"记住"并自动应用这些知识。
Skills 本质上是一个自包含的"插件"系统(也称为 Agent Skills)。每个 Skill 是一个包含以下内容的文件夹:
自定义指令
(Custom Instructions)- 定义如何完成特定任务的详细说明
可执行代码脚本
(Optional Code Scripts)- 可选的辅助脚本
资源文件
(Resource Files)- 模板、配置文件、参考文档等
当 Claude Code 识别到用户的请求与某个 Skill 的领域匹配时,它会自动加载该 Skill,就像调用一位"按需专家"一样。
Skills 采用渐进式披露的加载策略,这是其最核心的技术优势。
传统的上下文注入方式会将所有信息一次性加载到 AI 的上下文窗口中,这会导致:
上下文窗口快速耗尽
响应速度变慢
无关信息干扰模型判断
而 Skills 的工作流程是:
用户请求 → Claude 扫描 Skills 描述 → 匹配相关 Skill →
仅加载必要的信息 → 执行任务这种按需加载机制确保了:
性能优化
- 只加载完成当前任务所需的最少信息
上下文高效利用
- 避免无关信息占用宝贵的上下文空间
快速响应
- 保持 AI 助手的响应速度
与传统的命令式调用(如斜杠命令)不同,Skills 是由 Claude 自主决定何时使用的。开发者无需显式调用,AI 会根据:
用户的请求内容
Skill 的描述(description)
当前的工作上下文
自动判断是否需要加载某个 Skill。这种智能化的激活机制让工作流更加自然流畅。
所有 Skills 都在隔离的沙箱环境中运行,确保安全性。这意味着:
Skills 中的脚本不会影响系统环境
敏感操作受到限制
代码执行过程可审计
每个 Skill 必须包含一个文件,采用 YAML frontmatter 格式:
---
name: react-expert
description: Expert guidance for React development with TypeScript
version: 1.0.0
tags: [react, typescript, frontend]
---
React TypeScript 开发规范## 组件编写规范1. 所有组件必须使用函数式组件2. 使用 TypeScript 严格类型定义 Props3. 遵循单一职责原则...## 状态管理- 本地状态使用 useState- 全局状态使用 Context API 或 Zustand- 异步状态使用 React Query...## 代码示例typescript</span></span></code><code><span leaf="">interface ButtonProps {</span></code><code><span leaf="">onClick: () => void;</span></code><code><span leaf="">children: React.ReactNode;</span></code><code><span leaf="">variant?: 'primary' | 'secondary';</span></code><code><span leaf="">}</span></code><code><span leaf="">export const Button: React.FC = ({ onClick, children, variant = 'primary' }) => {</span></code><code><span leaf="">// 实现细节...</span></code><code><span leaf="">}</span></code><code><span leaf="">Skills 支持两种存储方式:
~/.claude/skills/skill-name/
适用于个人开发环境
跨项目共享
不会提交到版本控制
.claude/skills/skill-name/
项目特定的 Skills
可提交到 Git,团队共享
随项目分发
当同名 Skill 同时存在于个人和项目目录时,项目 Skills 优先级更高,这允许项目级别的定制覆盖个人配置。
痛点:你的公司使用特定的数据仓库表结构,有复杂的命名约定和必须遵循的查询模式。每次让 AI 帮忙写 SQL 都要重新解释这些规则。
解决方案:创建一个 data-warehouse-expert Skill:
---
name: data-warehouse-expert
description: Query company data warehouse with proper schemas and business logic
---
数据仓库查询规范 ## 表结构 ### 用户表 (dw.fact_users)- user_id: BIGINT (主键)- created_at: TIMESTAMP- user_type: VARCHAR (枚举: 'free', 'paid', 'enterprise')- is_active: BOOLEAN (注意: 删除用户不会物理删除,只会设置为 false)### 订单表 (dw.fact_orders)- order_id: BIGINT (主键)- user_id: BIGINT (外键 → dw.fact_users)- order_amount: DECIMAL(10,2)- created_at: TIMESTAMP- status: VARCHAR (枚举: 'pending', 'completed', 'cancelled', 'refunded')## 业务规则1. 计算 ARR 时必须过滤:- user_type = 'paid' OR user_type = 'enterprise'- is_active = TRUE- status = 'completed'2. 时间范围查询必须使用 created_at 索引3. Join 规范:- 优先使用 INNER JOIN- 多表 join 时按数据量从小到大排序## 查询模板示例\\\\<span class="code-snippet__keyword">sql</span></span></code><code><span leaf=""><span class="code-snippet__comment">-- 查询月度活跃付费用户数</span></span></code><code><span leaf=""><span class="code-snippet__keyword">SELECT</span></span></code><code><span leaf="">DATE_TRUNC(<span class="code-snippet__string">'month'</span>, o.created_at) <span class="code-snippet__keyword">AS</span> <span class="code-snippet__keyword">month</span>,</span></code><code><span leaf=""><span class="code-snippet__built_in">COUNT</span>(<span class="code-snippet__keyword">DISTINCT</span> u.user_id) <span class="code-snippet__keyword">AS</span> active_users</span></code><code><span leaf=""><span class="code-snippet__keyword">FROM</span> dw.fact_orders o</span></code><code><span leaf=""><span class="code-snippet__keyword">INNER</span> <span class="code-snippet__keyword">JOIN</span> dw.fact_users u <span class="code-snippet__keyword">ON</span> o.user_id <span class="code-snippet__operator">=</span> u.user_id</span></code><code><span leaf=""><span class="code-snippet__keyword">WHERE</span></span></code><code><span leaf="">u.user_type <span class="code-snippet__keyword">IN</span> (<span class="code-snippet__string">'paid'</span>, <span class="code-snippet__string">'enterprise'</span>)</span></code><code><span leaf=""><span class="code-snippet__keyword">AND</span> [u.is]()_active <span class="code-snippet__operator">=</span> <span class="code-snippet__literal">TRUE</span></span></code><code><span leaf=""><span class="code-snippet__keyword">AND</span> o.status <span class="code-snippet__operator">=</span> <span class="code-snippet__string">'completed'</span></span></code><code><span leaf=""><span class="code-snippet__keyword">AND</span> o.created_at <span class="code-snippet__operator">>=</span> <span class="code-snippet__string">'2024-01-01'</span></span></code><code><span leaf=""><span class="code-snippet__keyword">GROUP</span> <span class="code-snippet__keyword">BY</span> <span class="code-snippet__number">1</span></span></code><code><span leaf=""><span class="code-snippet__keyword">ORDER</span> <span class="code-snippet__keyword">BY</span> <span class="code-snippet__number">1</span> <span class="code-snippet__keyword">DESC</span>;</span></code><code><span leaf="">\\\\\现在,当你问 Claude Code "帮我查询 Q4 的 ARR",它会自动应用这些规则,生成符合公司规范的 SQL。
创建一个 code-review-checklist Skill:
---
name: code-review-checklist
description: Automated code review following company standards
---
代码审查检查清单## 安全性检查- [ ] 所有用户输入都经过验证和消毒- [ ] 敏感数据使用加密存储- [ ] API 密钥不在代码中硬编码- [ ] SQL 查询使用参数化防止注入## 性能检查- [ ] 数据库查询添加了适当的索引- [ ] 避免 N+1 查询问题- [ ] 大数据集使用分页- [ ] 缓存策略合理## 代码质量- [ ] 函数长度不超过 50 行- [ ] 循环复杂度 < 10- [ ] 变量命名清晰(使用 camelCase)- [ ] 注释解释了"为什么"而非"是什么"## 测试覆盖- [ ] 单元测试覆盖率 > 80%- [ ] 关键路径有集成测试- [ ] 边界情况有测试用例## Git 规范- [ ] Commit message 遵循 Conventional Commits- [ ] 一个 commit 只做一件事- [ ] PR 描述包含: 目的、改动、测试方法## 审查脚本\\\\python</span></code><code><span leaf="">check_</span></code><code><span leaf="">pr.py</span></code><code><span leaf=""> - 自动运行的审查脚本</span></code><code><span leaf="">import subprocess</span></code><code><span leaf="">import sys</span></code><code><span leaf="">def check<span class="code-snippet__emphasis">_test_</span>coverage():</span></code><code><span leaf="">result = [<span class="code-snippet__string">subprocess.run</span>]()(['pytest', '--cov', '--cov-report=term'],</span></code><code><span leaf="">capture<span class="code-snippet__emphasis">_output=True)</span></span></code><code><span leaf="">解析覆盖率...</span></code><code><span leaf="">def check_code<span class="code-snippet__emphasis">_complexity():</span></span></code><code><span leaf="">result = [<span class="code-snippet__string">subprocess.run</span>]()(['radon', 'cc', '.', '-a'],</span></code><code><span leaf="">capture_output=True)</span></code><code><span leaf="">检查复杂度...</span></code><code><span leaf="">\\<span class="code-snippet__code">\</span>\\---
name: microservice-generator
description: Generate microservices following company architecture patterns
---
微服务生成器## 服务结构标准\\\\</span></code><code><span leaf="">service-name/</span></code><code><span leaf="">├── cmd/</span></code><code><span leaf="">│ └── main.go</span></code><code><span leaf="">├── internal/</span></code><code><span leaf="">│ ├── handler/</span></code><code><span leaf="">HTTP handlers</span></code><code><span leaf="">│ ├── service/</span></code><code><span leaf="">Business logic</span></code><code><span leaf="">│ ├── repository/</span></code><code><span leaf="">Data access</span></code><code><span leaf="">│ └── model/</span></code><code><span leaf="">Domain models</span></code><code><span leaf="">├── pkg/</span></code><code><span leaf="">Public libraries</span></code><code><span leaf="">├── config/</span></code><code><span leaf="">│ ├── config.yaml</span></code><code><span leaf="">│ └── config.go</span></code><code><span leaf="">├── migrations/</span></code><code><span leaf="">Database migrations</span></code><code><span leaf="">├── Dockerfile</span></code><code><span leaf="">└── docker-compose.yml</span></code><code><span leaf="">\\<span class="code-snippet__code">\</span>\\## 必需组件1. 健康检查端点: /health 和 /ready2. 指标收集: Prometheus 格式,端口 90903. 结构化日志: 使用 zerolog,JSON 格式4. 分布式追踪: OpenTelemetry5. 配置管理: 支持环境变量覆盖## API 规范- RESTful 设计- 版本化: /api/v1/- 统一错误响应格式- JWT 认证- Rate limiting: 100 req/min per IP## Dockerfile 模板\\\\dockerfile</span></code><code><span leaf="">FROM golang:1.21-alpine AS builder</span></code><code><span leaf="">WORKDIR /app</span></code><code><span leaf="">COPY go.* ./</span></code><code><span leaf="">RUN go mod download</span></code><code><span leaf="">COPY . .</span></code><code><span leaf="">RUN CGO<span class="code-snippet__emphasis">_ENABLED=0 go build -o service ./cmd</span></span></code><code><span leaf="">FROM alpine:latest</span></code><code><span leaf="">RUN apk --no-cache add ca-certificates</span></code><code><span leaf="">COPY --from=builder /app/service /service</span></code><code><span leaf="">EXPOSE 8080 9090</span></code><code><span leaf="">CMD ["/service"]</span></code><code><span leaf="">\\\\\特性 | Skills | Claude.md |
|---|---|---|
作用范围 | 按需加载,模块化 | 全局加载,始终存在 |
适用场景 | 专业领域知识 | 项目通用上下文 |
性能影响 | 最小化(按需) | 持续占用上下文 |
特性 | Skills | MCP |
|---|---|---|
用途 | 工作流程和知识 | 工具和外部系统集成 |
技术实现 | Markdown + 脚本 | 协议服务器 |
示例 | 编码规范、业务逻辑 | 数据库连接、API 调用 |
特性 | Skills | Subagents |
|---|---|---|
独立性 | 当前会话的能力扩展 | 独立的代理实例 |
状态管理 | 无状态 | 可以有独立状态 |
适用场景 | 增强主 Agent 能力 | 并行处理独立任务 |
单一职责
每个 Skill 应专注于一个特定领域或工作流。避免创建"万能 Skill"。
清晰的描述
description 字段至关重要,它决定了 Claude 何时激活这个 Skill。要清晰、具体:
❌ 不好的描述
description: Helps with coding
✅ 好的描述
description: Generate React TypeScript components following company style guide with proper prop types and testing setup
提供具体示例
在 Skill 中包含完整的代码示例,而不只是抽象的规则。AI 从示例中学习效果最好。
版本控制
为 Skill 添加版本号,并在更新时记录变更:
version: 1.2.0
changelog:
- 1.2.0: Added support for async components
- 1.1.0: Updated TypeScript to 5.0 syntax
- 1.0.0: Initial release复杂 Skill 的目录结构:
~/.claude/skills/api-testing-expert/
├── [SKILL.md]()
主指令文件
├── templates/
│ ├── test-case.json
测试用例模板
│ └── mock-data.js
Mock 数据生成器
├── scripts/
│ └── [run-tests.sh]()
自动化测试脚本
└── docs/
├── api-spec.yaml
OpenAPI 规范
└── [examples.md]()将项目 Skills 提交到 Git,作为项目文档的一部分:
git add .claude/skills/
git commit -m "docs: add database query skill"
团队应该像 review 代码一样 review Skills,确保质量和一致性。
建立团队的 Skills 仓库,供所有项目复用:
通过符号链接共享
ln -s ~/company-skills/python-style ~/.claude/skills/python-style
从简单的 Skill 开始(如编码风格指南)
逐步添加脚本和资源文件
观察 Claude 如何使用你的 Skill
根据实际效果迭代优化
Claude Code Skills 代表了 AI 辅助编程的一个重要进化方向:从通用助手到领域专家。通过将团队的制度性知识(institutional knowledge)编码为可重用的 Skills,我们能够:
对于技术团队而言,投入时间构建高质量的 Skills 库,其回报将远超预期。它不仅提升了 AI 工具的实用性,更重要的是,它促使团队系统化地整理和文档化自己的工作方式——这本身就是极具价值的工程实践。
本文基于 Claude Code Skills 的最新功能(2025年10月发布)编写。功能和 API 可能会随版本更新而变化,请参考官方文档获取最新信息。