我试了Claude的Skills功能,原来这才是AI编程的正确打开方式|附实战案例

4,377 阅读10分钟

大家好,我是子昕,一个干了10年的后端开发,现在在AI编程这条路上边冲边摸索,每天都被新技术追着跑。

Claude Code刚上线的Skills功能,很多人以为是方便重复指令的工具。

不是。

Skills的本质,是给Claude装上“工具包” - 让它能做之前做不到的事。

Skills到底是什么?

先说个例子。

你让Claude处理一个PDF表单:提取字段、填写数据、生成新PDF。Claude能读PDF内容,但填写表单、操作PDF结构这种事,它原生做不到。

装上PDF Skill后,Claude就能:

  • 调用pypdf库填写表单
  • 合并拆分PDF
  • 处理加密文档
  • 保留原始格式

这不是“记住指令”,是获得了新能力。

Skills就是把指令、脚本、资源打包成文件夹,让Claude在需要时自动加载使用。

一个Skill包含:

  • SKILL.md(必需):告诉Claude这个Skill做什么、怎么用
  • scripts/ (可选):Python/JS脚本,执行实际操作
  • resources/ (可选):模板文件、参考文档、数据集

和CLAUDE.md有什么区别?

很多人会问:这不就是CLAUDE.md吗?

完全不同。

CLAUDE.md

  • 项目启动时就加载,一直占用上下文
  • 告诉Claude“这个项目怎么工作”
  • 适合放架构说明、编码规范、环境配置

Skills

  • 按需动态加载,用完就释放
  • 告诉Claude“怎么完成某个特定任务”
  • 可以包含可执行代码,扩展Claude原本没有的能力

举个实际场景:

你的项目CLAUDE.md里写着:“我们用React + TypeScript,测试用Jest”。

但你创建一个“Excel报表生成”Skill,里面:

  1. SKILL.md说明如何生成财务报表
  2. scripts/generate_excel.py调用openpyxl生成复杂公式
  3. templates/report_template.xlsx是模板文件

Claude遇到“生成Excel报表”任务时,会自动加载这个Skill,运行脚本,而不是让模型逐token生成代码。

关键差异:Skills能执行代码,CLAUDE.md只是上下文。

为什么需要Skills?

Skills解决的核心问题是:让通用AI获得专用能力,而不需要重新训练模型。

1. 扩展Claude做不到的事

Claude原生能力有限

  • 不能直接操作Excel公式
  • 不能填写PDF表单
  • 不能生成复杂的PPT动画
  • 不能调用特定库的API

官方提供的文档Skills(Excel/PPT/Word/PDF),就是通过脚本调用openpyxl、python-pptx等库,实现Claude原本做不到的精确操作。

github.com/anthropics/…

2. 代码执行比token生成高效

比如你要对100行数据排序。

没Skills:Claude生成排序代码(消耗tokens),可能还有bug,每次都要重新生成。

有Skills:scripts/sort.py直接执行,快、准、省钱。

Anthropic官方强调:对于确定性任务(排序、数据处理、格式转换),脚本执行比让模型生成代码效率高得多。

3. 封装团队知识

不同于CLAUDE.md的“项目级指令”,Skills是“任务级工具”。

你可以创建:

  • 数据分析Skill:包含数据清洗脚本、可视化模板
  • API文档生成Skill:按公司格式自动生成OpenAPI文档
  • 代码审查Skill:运行自定义linter规则

这些Skills可以跨项目复用,通过插件分享给团队。

怎么创建Skills?

方法一:让Claude帮你创建

Claude内置了“skill-creator”工具,直接说:

帮我创建一个Git提交规范的Skill

方法二:手动创建

一个Skill的标准结构:

file-renamer/
├── SKILL.md           (必需)
├── scripts/
│   └── rename.py      (可选)
└── templates/
    └── rules.json     (可选)

SKILL.md格式:

---
name: 批量文件重命名
description: 按规则批量重命名文件。在需要重命名多个文件、整理文件名格式、添加编号前缀时使用。
---

# 批量文件重命名

## 功能

按照用户指定的规则批量重命名文件:
- 添加前缀/后缀
- 数字编号
- 替换特定字符
- 按日期重命名

## 使用方法

1. 用户指定目标目录和规则
2. 运行`python scripts/rename.py`查看预览
3. 确认后执行重命名

## 脚本说明

scripts/rename.py参数:
- --dir: 目标目录
- --pattern: 重命名模式
- --preview: 仅预览不执行

## 示例

添加日期前缀:
python scripts/rename.py --dir ./photos --pattern "YYYYMMDD_{name}"

批量编号:
python scripts/rename.py --dir ./docs --pattern "{001}_{name}"

关键点:

  • name:64字符内,清晰简洁
  • description:说清楚“做什么”+“什么时候用”,Claude靠这个判断是否触发
  • 正文:清晰步骤+实际例子+脚本说明

一个实战案例:爬虫数据处理

假设你经常需要处理爬虫抓取的数据:清洗、去重、导出Excel。

创建.claude/skills/data-processor/SKILL.md

---
name: 爬虫数据处理
description: 清洗爬虫数据并生成Excel报表。处理JSON/CSV格式的爬虫数据,去重、格式化、生成统计报表时使用。
---

# 爬虫数据处理

## 处理流程

1. 读取JSON/CSV格式的原始数据
2. 数据清洗:去重、填充缺失值、格式标准化
3. 统计分析:计数、去重率、异常检测
4. 生成Excel报表(包含数据和图表)

## 脚本功能

### scripts/process.py

主处理脚本:
```python
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart

def clean_data(df):
    # 去重
    df = df.drop_duplicates()
    # 填充缺失值
    df = df.fillna('')
    # 标准化格式
    df['price'] = df['price'].astype(float)
    return df

def generate_report(df, output_file):
    # 生成Excel
    with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
        df.to_excel(writer, sheet_name='数据', index=False)
        
        # 添加统计
        stats = df.describe()
        stats.to_excel(writer, sheet_name='统计')
        
        # 添加图表
        wb = writer.book
        ws = wb['统计']
        chart = BarChart()
        # ...图表配置
```

### scripts/dedupe.py

快速去重工具:
```python
import json

def dedupe_json(file_path, key_field):
    with open(file_path) as f:
        data = json.load(f)
    
    seen = set()
    unique_data = []
    
    for item in data:
        key = item.get(key_field)
        if key and key not in seen:
            seen.add(key)
            unique_data.append(item)
    
    return unique_data
```

## 使用示例

处理JSON数据:
运行 python scripts/process.py data.json --output report.xlsx

快速去重:
运行 python scripts/dedupe.py data.json --key url

## 输出说明

生成的Excel包含:
- 数据sheet:清洗后的完整数据
- 统计sheet:数量、去重率、价格分布等
- 图表sheet:可视化统计结果

保存后,创建对应的脚本文件。

以后你让Claude“处理这个爬虫数据生成报表”,它会:

  1. 自动识别需要用“爬虫数据处理”Skill
  2. 读取SKILL.md了解流程
  3. 运行scripts/process.py执行清洗
  4. 生成Excel报表

比每次让Claude写一遍处理代码快多了,而且输出一致。

Skills的三种类型

1. 个人Skills

位置: ~/.claude/skills/
作用范围:  所有项目
适合放:  通用工具(文件处理、数据转换、格式化等)

2. 项目Skills

位置:  项目根目录.claude/skills/
作用范围:  当前项目
适合放:  项目特定的工具(部署脚本、测试数据生成、项目文档生成)

可以提交git,团队共享。

3. 插件Skills

安装方式:  通过Claude Code插件

比如官方文档处理Skills:

/plugin install document-skills@anthropic-agent-skills

安装后就有PDF/Excel/PPT/Word的高级操作能力。

anthropics/skills仓库还提供了创意设计、Web测试、MCP服务器生成等示例Skills。

如果你不了解Claude Code的插件,可以看我之前的文章:

Claude Code插件系统上线!AI编程的“App Store”时代来了

怎么让Skills生效?

Skills是Claude自动触发的,不需要手动指定。

触发机制

  1. 启动时,Claude扫描所有Skills的name和description(只占~100 tokens/Skill)
  2. 你发起任务
  3. Claude判断需要哪个Skill
  4. 通过bash命令读取SKILL.md,加载详细内容
  5. 如果需要,执行scripts里的脚本
  6. 完成任务后释放

全程自动,你看到的只是最终结果。

Skills没生效怎么办?

问题1: description不够明确

❌ 不好:

description: 处理数据文件

✅ 好:

description: 清洗爬虫JSON/CSV数据并生成Excel报表。处理爬虫数据、需要去重清洗、生成统计报表时使用。包含URL/价格/标题等常见字段的处理。

关键:说清“做什么”+“什么时候用”+“处理什么类型数据”。

问题2: 显式提及

如果Claude没自动触发,直接说:

用爬虫数据处理Skill处理这个文件

问题3: 检查是否已加载

你现在有哪些Skills?

Claude会列出已识别的Skills。

问题4: 代码执行功能未启用

  • Claude Code:默认启用
  • claude.ai:设置 > 功能 > 启用“代码执行和文件创建”

最佳实践

1. 脚本优先

能用脚本处理的,别让Claude生成代码。

确定性任务(排序、格式转换、数据清洗):写Python/JS脚本
创造性任务(生成文案、代码架构设计):让Claude发挥

2. 保持专注

一个Skill做一件事。

别把“爬虫+清洗+分析+报表+邮件发送”塞一个Skill。

拆开:

  • web-scraper/:爬虫逻辑
  • data-cleaner/:数据清洗
  • report-generator/:报表生成
  • email-sender/:邮件发送

需要时Claude会自动组合多个Skills。

3. 多放实际例子

SKILL.md里多放真实可运行的例子:

4. 附参考文档

涉及特定库,把关键文档放进去:

references/
├── openpyxl-api.md
└── pandas-cheatsheet.md

在SKILL.md里引用:详细API参考references/openpyxl-api.md

5. 版本管理

Skills会迭代,标注版本:

version: 1.2.0
## 更新日志

### v1.2.0 (2025-10-20)
- 新增支持Excel公式
- 优化大文件处理速度

### v1.1.0 (2025-10-15)
- 添加图表生成功能

解答一个疑虑:上下文会爆吗?

可能有人担心Skills占满上下文窗口。

不会。

Skills用渐进式加载(Progressive Disclosure):启动时只加载元数据(~100 tokens),需要时才读SKILL.md(5k tokens内),脚本直接执行不占上下文。

你装20个Skills,启动只占2000 tokens。真正用到某个Skill,才加载详细内容,用完释放。

Claude Code的上下文窗口是200k tokens,Skills的渐进式加载让你可以装几十个Skills不用担心。

可以用/context命令查看上下文使用情况,随时监控。

安全提醒

Skills能执行代码,务必小心:

✅ 只用自己创建或官方的Skills
✅ 从GitHub/插件安装前先看代码
❌ 别用来路不明的Skills
❌ Skills里别放API密钥

恶意Skill可能读取文件、执行危险命令、泄露信息。

网上下载的Skills,必须先检查SKILL.md和scripts/所有代码。

插件市场现成的Skills

官方Skills

# 文档处理(PDF/Excel/PPT/Word)
/plugin install document-skills@anthropic-agent-skills

# 示例Skills(创意设计、Web测试等)
/plugin install example-skills@anthropic-agent-skills

分享你的Skills

开发了好用的Skills?打包成插件:

  1. 创建插件仓库,Skills放skills/目录
  2. 添加marketplace.json
  3. 发布到GitHub
  4. 别人/plugin install your-skills@your-repo安装

参考anthropics/skills仓库结构。

实际应用场景

前端开发

  • 组件脚手架Skill:生成标准化的React/Vue组件
  • 图标处理Skill:SVG优化、批量导出不同尺寸
  • 打包分析Skill:运行webpack-bundle-analyzer生成报告

数据分析

  • 数据清洗Skill:标准化字段、去重、填充缺失值
  • 可视化Skill:生成特定风格的图表(公司配色、字体)
  • 统计报表Skill:自动生成周报/月报

DevOps

  • 日志分析Skill:解析nginx/应用日志,提取关键指标
  • 部署检查Skill:验证环境配置、依赖版本
  • 性能监控Skill:生成性能报告、标注异常

内容创作

  • 图片批处理Skill:压缩、格式转换、添加水印
  • 视频剪辑Skill:调用ffmpeg生成预览、提取片段
  • 文档转换Skill:Markdown转PDF/Word,保留格式

总结

Skills的核心价值:不是替代CLAUDE.md,而是给Claude装上“工具箱”。

三个关键点:

  1. 扩展能力:让Claude做原本做不到的事(精确操作Excel、执行复杂脚本、调用特定库)
  2. 提升效率:确定性任务用脚本执行,比token生成快且准
  3. 知识复用:封装成模块,跨项目使用,通过插件分享

Skills ≠ 方便的提示词管理工具
Skills = 可组合的AI能力扩展包

建议从简单的开始:文件批处理、数据清洗、格式转换。体验“脚本执行”的高效后,再逐步构建完整工具库。