06-Skills 复用

创建和复用 Skills 来标准化 Claude Code 的输出,让 AI 按照团队的规范工作。


一、Skills 基础概念

1.1 什么是 Skills

Skills 是存储在特定目录下的 Markdown 文件,用于教 Claude Code 如何完成特定任务,标准化代码输出。

作用:

  • 统一代码风格
  • 标准化工作流程
  • 复用最佳实践
  • 减少重复沟通

1.2 Skills 工作原理

用户请求
    ↓
Claude 识别意图
    ↓
匹配相关 Skill
    ↓
根据 Skill 规范生成输出
    ↓
符合标准的代码/文档

二、Skills 目录结构

2.1 存储位置

全局 Skills(所有项目可用)
└── ~/.claude/skills/
    ├── python-code-style/
    │   └── SKILL.md
    └── fastapi-dev/
        └── SKILL.md

项目级 Skills(仅当前项目可用)
└── ./.claude/skills/
    └── project-specific/
        └── SKILL.md

2.2 文件结构

skill-name/
├── SKILL.md           # 必填,主说明文档
├── reference.md       # 可选,详细参考
├── examples.md        # 可选,使用示例
└── templates/         # 可选,代码模板
    └── template.py

三、创建 Skills

3.1 基础 Skill 示例

创建 ~/.claude/skills/python-standard/SKILL.md:

---
name: python-standard
description: 生成符合 PEP8 和现代 Python 标准的代码,当用户要求编写 Python 代码时使用
---

# Python 代码标准

## 基本规范

- Python 3.9+ 语法
- 使用 4 空格缩进
- 最大行长度 100 字符
- 使用双引号字符串

## 类型注解

- 所有函数必须添加类型注解
- 使用 `from __future__ import annotations`
- 复杂类型使用 typing 模块

## 文档字符串

- 使用 Google Style Docstrings
- 包含 Args、Returns、Raises
- 示例代码放在 Examples 段落

## 错误处理

- 使用具体的异常类型
- 不要裸 except
- 记录异常日志

## 代码示例

```python
from __future__ import annotations
from typing import Optional

def process_data(data: list[dict]) -> dict[str, int]:
    """
    处理数据并返回统计结果
    
    Args:
        data: 待处理的数据列表
        
    Returns:
        统计结果字典
        
    Raises:
        ValueError: 数据格式错误时
        
    Examples:
        >>> data = [{"name": "a", "value": 1}]
        >>> result = process_data(data)
    """
    if not data:
        raise ValueError("数据不能为空")
    
    return {"count": len(data)}

### 3.2 FastAPI Skill 示例

创建 `~/.claude/skills/fastapi-api/SKILL.md`:

```markdown
---
name: fastapi-api
description: 生成 FastAPI API 代码,当用户开发 Web API 时使用
---

# FastAPI 开发规范

## 项目结构

app/
├── init.py
├── main.py # FastAPI 实例
├── models/ # Pydantic 模型
├── routers/ # API 路由
└── services/ # 业务逻辑


## 路由规范

- 使用 APIRouter
- 前缀使用复数名词
- 函数名使用动词+名词

## Pydantic 模型

- 请求模型后缀 Request
- 响应模型后缀 Response
- 使用 Field 添加约束

## 示例代码

```python
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel, Field

router = APIRouter(prefix="/users", tags=["users"])

class UserCreateRequest(BaseModel):
    username: str = Field(..., min_length=3, max_length=50)
    email: str = Field(..., pattern=r"^[\w\.-]+@[\w\.-]+\.\w+$")

class UserResponse(BaseModel):
    id: int
    username: str
    email: str

@router.post("/", response_model=UserResponse)
async def create_user(request: UserCreateRequest) -> UserResponse:
    """创建新用户"""
    # 实现代码
    pass

---

## 四、在 Claude Code 中使用 Skills

### 4.1 自动匹配

Claude Code 会自动检测并使用匹配的 Skills:

```bash
# 创建 Python 函数
> 创建一个处理数据的函数

Claude 自动应用 python-standard Skill

4.2 显式指定

# 明确指定使用某个 Skill
> 使用 fastapi-api Skill,创建一个用户注册接口

Claude 会优先应用 fastapi-api Skill 的规范

4.3 查看可用 Skills

# 询问当前可用的 Skills
> 当前有哪些可用的 Skills?

Claude 会列出检测到的 Skills:
- python-standard (全局)
- fastapi-api (全局)
- data-analysis (项目级)

五、实战 Skills 应用

场景1:API 开发

# 安装 FastAPI Skill 后
> 创建一个用户管理 API,包含 CRUD 操作

Claude 生成:
- 符合 FastAPI 规范的代码
- 正确的项目结构
- Pydantic 模型
- 完整的路由实现

场景2:测试生成

# 创建测试生成 Skill 后
> 为 src/services/user.py 生成测试

Claude 生成:
- 符合 pytest 规范的测试
- 正确的 fixture 使用
- Mock 外部依赖
- 覆盖各种场景

场景3:文档生成

# 创建文档 Skill 后
> 为项目生成 API 文档

Claude 生成:
- 符合 OpenAPI 规范的文档
- 包含所有端点说明
- 请求/响应示例
- 错误码说明

六、Skills 最佳实践

6.1 编写原则

原则 说明 示例
具体 明确说明使用场景 “当用户要求编写 Python 代码时使用”
简洁 只写 AI 不知道的信息 不写 Python 基础语法
可复用 通用性强的规范 团队代码规范
可验证 有明确的标准 “使用 PEP8 规范”

6.2 维护更新

# 定期更新 Skills
> 更新 fastapi-api Skill,添加 WebSocket 支持

> 更新 python-standard Skill,添加 Python 3.12 特性

6.3 版本管理

skills/
├── python-standard/
│   ├── SKILL.md           # 当前版本
│   ├── SKILL-v1.md        # 历史版本
│   └── CHANGELOG.md       # 变更记录

七、Skills 高级用法

7.1 调用 Skills

Skills 可以通过斜杠命令调用:

# 直接调用特定 Skill
> /skill-name

# 带参数调用
> /skill-name arg1 arg2

7.2 Skills 组合使用

多个 Skills 可以组合使用:

# 同时应用多个规范
> 使用 python-standard 和 fastapi-api Skill,创建一个数据处理 API

7.3 项目级 Skills 最佳实践

# 项目级 Skills 存放位置
./.claude/skills/
├── project-style/      # 项目代码风格
├── business-logic/     # 业务逻辑规范
└── testing/            # 测试规范

八、常见问题

Q1: Skill 没有生效

检查:

  1. 目录位置是否正确
  2. SKILL.md 文件名是否正确(大写)
  3. YAML frontmatter 格式是否正确
  4. description 是否清晰

解决:

# 重新加载 Skills
> /reload

# 或重启 Claude Code

Q2: 多个 Skills 冲突

解决:

  • 使用更具体的 description 限制范围
  • 合并相似的 Skills
  • 明确指定要使用的 Skill

Q3: 如何测试 Skill

方法:

# 创建测试请求
> 创建一个简单的函数测试 Skill 是否生效

# 检查输出是否符合规范

九、下一步学习

完成本指南后,建议学习:

  1. 07-代码分析与重构.md - 结合 Skills 进行代码重构
  2. 09-实战:PythonWebAPI开发.md - Skills 实战应用

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐