ApFramework Logo
Published on

Anthropic Claude Skills 案例解析:构建高效 Agent 的核心指南

Authors
  • avatar
    Name
    Shoukai Huang
    Twitter
通过 Skills 扩展模型专业技能

通过 Skills 扩展模型专业技能(Photo by Nick Morrison on Unsplash

目录

Anthropic Skills 是由 Anthropic 公司(Claude AI 的开发者)官方维护的开源 GitHub 仓库(anthropics/skills),其核心定位为 "Public repository for Agent Skills"。

作为 Claude AI 生态系统中的模块化扩展框架,Skills 旨在解决通用大模型在特定专业领域深度不足的问题。该系统允许 Claude 在执行复杂任务时,动态加载预定义的指令集、执行脚本及相关资源。这种机制不仅显著提升了任务完成的可靠性和专业度,还有效优化了上下文窗口的使用效率——Claude 并非一次性加载所有知识,而是根据用户的查询意图,智能判定并按需调用相关技能,体现了 "Agentic"(代理化)的工作流特征。

Skills 的应用场景广泛且具深度,涵盖但不限于:

  • 专业文档处理:自动化生成或编辑 Word、Excel、PowerPoint 及 PDF 文档。
  • 合规内容创作:严格遵循企业品牌指南进行内容输出。
  • 技术工作流:执行数据分析、软件测试及自动化流程编排。
  • 创意生成:辅助生成艺术作品、音乐创作等。

仓库架构与生态

Anthropic Skills 仓库采用清晰的模块化结构,为开发者提供了从使用到扩展的完整路径:

  • skills/:核心目录,包含各类现成的示例技能。每个技能通常封装在一个独立文件夹中,以 SKILL.md 作为核心定义文件。
    • SKILL.md 采用 YAML Front Matter 定义元数据(如 namedescription),并通过 Markdown 正文详细描述技能的触发条件、执行指令及示例。
  • template/:标准化模板,为开发者创建自定义技能提供规范参考。
  • spec/:技术规范文档,详细定义了 Agent Skills 的接口标准与交互协议。

截至 2025 年 12 月,该项目已获得超过 22.6k Stars 和 2.2k Forks,且保持着高频更新(最后更新于 2025 年 12 月 16 日)。大部分技能遵循 Apache 2.0 许可开源,而部分文档生成类技能则以 "源代码可用"(Source-Available)的形式提供,作为参考实现。

Claude 的许多高级特性(例如文档预览与生成)正是构建于此 Skills 系统之上。对于开发者而言,这不仅是一个工具库,更是理解并构建自定义 AI Agent 的最佳实践范本。

技能组合概览

仓库中的技能主要分为以下几类:

  • 创意与设计:涵盖图像生成、风格迁移等创意辅助工具。
  • 开发与技术:提供代码审查、自动化测试、API 交互等技术支持。
  • 企业与沟通:包括邮件撰写、会议纪要整理、品牌一致性检查等商务功能。
  • 文档技能:专注于各类文档格式的解析、生成与转换。

即使不直接部署这些技能,分析其编写逻辑与指令设计(Prompt Engineering),对于提升 AI 应用开发能力也具有极高的参考价值。下文将以 PDF Skills 为例,深入剖析其构建逻辑。

案例解析:PDF Skills 的构建逻辑

PDF Skills 是一个功能完备的工具包,旨在赋予 Claude 编程级的 PDF 处理能力,包括文本/表格提取、文档生成、合并/拆分以及表单处理等。

在设计此类 Skill 时,Anthropic 遵循了渐进式上下文构建(Progressive Context Construction)的原则,类似金字塔原理(Pyramid Principle)。这种方式并非直接通过自然语言描述任务,而是通过提供结构化的代码示例和库的使用规范,引导模型建立对特定领域工具链的认知。

1. 基础认知构建:建立上下文

首先,通过简洁的代码片段,向模型展示处理 PDF 的基本范式,确立“输入-处理-输出”的思维模型。

from pypdf import PdfReader, PdfWriter

# Read a PDF
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")

# Extract text
text = ""
for page in reader.pages:
    text += page.extract_text()

2. 进阶能力扩展:集成专业 Python 库

在建立基础认知后,Skill 文档进一步引入具体的专业库(Library),并给出标准化的操作示例。这不仅教会模型“做什么”,更教会模型“用什么做”以及“如何正确地做”。

2.1 pypdf - 基础操作

针对基础的文档操作,如合并,提供标准的 pypdf 实现范式:

from pypdf import PdfWriter, PdfReader

writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
    reader = PdfReader(pdf_file)
    for page in reader.pages:
        writer.add_page(page)

with open("merged.pdf", "wb") as output:
    writer.write(output)

2.2 pdfplumber - 高级提取

针对复杂的文本与表格提取需求,引入 pdfplumber,强调其在布局保持方面的优势:

import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)

2.3 reportlab - 文档生成

对于从零创建 PDF 的需求,引入 reportlab 库,展示底层的 Canvas 绘图能力:

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter

# Add text
c.drawString(100, height - 100, "Hello World!")
c.drawString(100, height - 120, "This is a PDF created with reportlab")

# Add a line
c.line(100, height - 140, 400, height - 140)

# Save
c.save()

3. 工具链整合:命令行工具

除了 Python 库,Skill 还集成了高效的命令行工具(CLI),以处理高性能需求的场景。

pdftotext (poppler-utils)

# Extract text
pdftotext input.pdf output.txt

# Extract text preserving layout
pdftotext -layout input.pdf output.txt

# Extract specific pages
pdftotext -f 1 -l 5 input.pdf output.txt  # Pages 1-5

4. 实战模式:常见任务解决方案

在掌握了基础库和工具后,Skill 通过综合案例展示如何解决复杂的实际问题,如 OCR 识别和水印添加。这些案例实际上构成了 Agent 执行特定任务的“思维链”(Chain of Thought)。

案例 A:OCR 文本提取

结合 pdf2imagepytesseract 处理扫描件:

# Requires: pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path

# Convert PDF to images
images = convert_from_path('scanned.pdf')

# OCR each page
text = ""
for i, image in enumerate(images):
    text += f"Page {i+1}:\n"
    text += pytesseract.image_to_string(image)
    text += "\n\n"

print(text)

案例 B:文档水印处理

展示如何操作页面层级的内容合并:

from pypdf import PdfReader, PdfWriter

# Create watermark (or load existing)
watermark = PdfReader("watermark.pdf").pages[0]

# Apply to all pages
reader = PdfReader("document.pdf")
writer = PdfWriter()

for page in reader.pages:
    page.merge_page(watermark)
    writer.add_page(page)

with open("watermarked.pdf", "wb") as output:
    writer.write(output)

快速参考指南

为了在有限的上下文窗口中提供最高效的信息检索,Skill 总结了一份最佳实践矩阵。这有助于 Agent 快速决策选择何种工具:

TaskBest ToolCommand/Code
Merge PDFspypdfwriter.add_page(page)
Split PDFspypdfOne page per file
Extract textpdfplumberpage.extract_text()
Extract tablespdfplumberpage.extract_tables()
Create PDFsreportlabCanvas or Platypus
Command line mergeqpdfqpdf --empty --pages ...
OCR scanned PDFspytesseractConvert to image first
Fill PDF formspdf-lib or pypdf (see forms.md)See forms.md

对于更复杂的场景,Skill 引导模型查阅专门的扩展文档(如 reference.mdforms.md),这种分层文档结构有效避免了信息过载。

深度工作流:PDF 表单处理

在处理 PDF 表单(PDF Forms)这一复杂任务时,Skill 展现了极其严谨的工作流控制能力。它不再仅仅提供代码,而是定义了一套强制执行的操作标准操作程序(SOP)。

重要提示:您必须按顺序完成这些步骤。不要跳过这些步骤直接编写代码。

流程分支判断

Agent 首先被要求运行脚本进行环境探测,根据探测结果决定后续分支。这种设计赋予了 Agent 动态适应环境的能力。

如果您需要填写 PDF 表单,请先检查该 PDF 文件是否包含可填写表单字段。请从该文件所在的目录运行此脚本: python scripts/check_fillable_fields <file.pdf> ,根据结果转到“可填写字段”或“不可填写字段”,并按照这些说明进行操作。

分支一:标准化表单(可填写字段)

对于包含标准 AcroForm 字段的 PDF,流程侧重于元数据提取与精准匹配:

  1. 元数据提取:运行 python scripts/extract_form_field_info.py 生成包含字段定义的 JSON 文件。
  2. 可视化验证:运行 python scripts/convert_pdf_to_images.py 将页面转为图像,结合 JSON 数据分析字段的具体用途(特别是将 PDF 坐标映射到视觉图像)。
  3. 数据构建:创建 field_values.json,严格定义每个字段的输入值。
  4. 执行填写:运行 python scripts/fill_fillable_fields.py 生成最终文件。脚本内置了验证逻辑,确保字段 ID 和值的有效性。

分支二:非标准表单(不可填写字段)

对于仅有视觉表单而无交互字段的 PDF(如扁平化的扫描件),流程转向基于视觉的注释(Annotation)注入:

  1. 视觉分析(必需):Agent 必须先“看”懂表单结构。
  2. 坐标定义:创建 fields.json 并验证图片,确定文本插入的精确位置。
  3. 边界验证(必填):确认文字不会覆盖原有边框或重叠。
  4. 内容注入:通过添加注释的方式模拟表单填写。

在此过程中,Anthropic 特别强调了视觉验证的重要性,通过高优先级的提示词(Prompting)防止 Agent 产生幻觉或盲目操作:

重要提示:务必目视检查验证图像,切勿继续操作。

总结与展望

Anthropic Skills 仓库展示了构建高级 AI Agent 的一种标准范式:通过结构化的文档、标准化的代码示例以及严格的工作流约束,将通用的 LLM 能力转化为专业的垂直领域技能。

无论是直接使用这些 Skill,还是参照其架构设计自定义的 Agent 能力,该项目都提供了极具价值的参考。随着 Claude 能力的不断进化,这种“模型+技能”的组合模式,必将在未来的自动化与辅助决策系统中扮演更核心的角色。

参考资料