首页 > Ai > AI Agent Skills 目录结构详解:从零搭建可维护的技能体系
2026
06-11

AI Agent Skills 目录结构详解:从零搭建可维护的技能体系

AI Agent Skills 目录结构详解

在构建 AI Agent 技能体系时,理解 Skill 的目录结构和运行机制是最基础也最重要的一步。只有掌握了 Skill 的组织方式,才能设计出可维护、可复用的 AI Agent 能力单元。

本文将系统拆解一个标准 Skill 的目录结构,逐一说明每个文件和目录的作用,并通过完整案例展示整个工作流程。


什么是 Skill

Skill 是一个独立的能力单元,专门用于完成某一类特定任务。可以将 Agent 理解为一个操作系统,而 Skill 就是安装在系统上的应用程序;或者把 Agent 看作项目经理,Skill 则是它能够调用的各项专业能力。

Skill 的常见类型

以下是一些典型的 Skill 应用场景:

类型说明适用场景
PDF 文档分析提取 PDF 内容并生成摘要文档处理、信息提取
网页抓取自动化获取网页数据数据采集、信息监控
SQL 优化分析和优化 SQL 查询数据库性能调优
数据统计数据计算和统计处理数据分析、报表生成
图片识别识别图片中的内容OCR、图像分类

Skill 与 Agent 的关系

Skill 只负责完成具体任务,不决定"什么时候用哪个 Skill"——这个决策权完全在 Agent 手中。

完整的工作流程如下图所示:

Skill 工作流程

关键要点:Agent 不会一次性加载所有 Skill 的完整内容。它会先读取每个 Skill 的描述信息,命中目标 Skill 后再加载完整内容。如果系统中有几百个 Skills,每次全部加载会极其浪费 Token。


Skill 的标准目录结构

一个完整的 Skill 不是单个文件,而是一个包含多个文件的目录。

标准目录结构如下:

my-skill/
│
├── SKILL.md          ← 核心执行文件
├── metadata.json     ← 元信息
├── examples/         ← 示例目录
│   ├── example1.md
│   └── example2.md
│
├── scripts/          ← 可执行脚本
│   ├── main.py
│   └── utils.py
│
├── resources/        ← 资源目录
│   ├── prompt.md
│   └── config.yaml
│
├── tests/            ← 测试目录
│   ├── test_cases.md
│   └── eval.yaml
│
├── README.md         ← 使用说明
│
└── CHANGELOG.md      ← 变更日志

下面逐一拆解每个文件和目录的职责。

d56b29df-1900-447a-865d-fc532b4d5a61.png


SKILL.md:核心执行文件

这是 Skill 中最重要的文件,定义了 Skill 的所有执行逻辑,包含以下关键信息:

部分说明作用
DescriptionSkill 的功能描述供 Agent 匹配使用
When to use明确适用场景避免误触发
When NOT to use明确不适用场景防止与其他 Skill 冲突
Input定义输入格式规范调用方式
Instructions执行步骤指导任务执行
Output输出格式说明保证结果一致性

规范的 SKILL.md 示例

# PDF 分析 Skill

## Description
用于分析 PDF 内容并生成摘要。

## When to use
适用于:
- PDF 阅读
- 摘要提取
- 内容分析

## When NOT to use
不适用于:
- 图片编辑
- 视频处理

## Input
PDF 文件

## Instructions
1. 提取文本
2. 识别章节结构
3. 总结主要内容
4. 输出重点

## Output
Markdown 格式摘要

常见错误写法

很多初学者会写出过于简略的 SKILL.md:

# PDF Skill
读取 PDF
总结内容
返回结果

这种写法的问题在于:Agent 不知道什么时候该用这个 Skill,不知道什么时候不该用,输出格式不明确,还容易和其他 Skill 产生冲突。

一个合格的 SKILL.md 应该让 Agent 一眼就能判断:这个 Skill 到底适不适合当前任务。


metadata.json:Skill 元信息

这个文件提供机器可读的结构化数据,帮助 Agent 快速筛选 Skill。

{
    "name": "pdf-analyzer",
    "version": "1.0.0",
    "description": "分析 PDF 并生成摘要",
    "tags": ["pdf", "summary"],
    "category": "document"
}

常见字段说明

字段作用重要性
nameSkill 名称必填
description功能说明,Agent 依靠它做匹配最重要
version版本号推荐
tags标签,便于检索推荐
category分类可选
author作者可选
permissions所需权限可选

其中 description 字段最为重要,因为 Agent 通常依靠它做匹配。匹配过程大致是:用户提出请求后,Agent 扫描所有 Skill 的 description,发现匹配项后加载完整的 Skill 内容并执行。


examples:示例目录

很多开发者忽视这一部分,但它的重要性不亚于 SKILL.md 本身。

examples/
├── example1.md
├── example2.md

示例内容

输入:
帮我分析这个 PDF

输出:
# 文档总结

## 核心内容
1. ...
2. ...
3. ...

examples 的重要作用

作用说明
提供 Few-shot 示例帮助模型通过示例理解期望行为
规范输出格式通过示例明确输出结构和风格
提高输出稳定性减少随机行为,让结果更可预测

经验上,设计良好的 examples 往往比增加提示词长度更有效。


scripts:可执行脚本

Skill 不仅仅是提示词,有时需要真正执行代码来完成实际工作,比如读取 PDF、执行 OCR、调用数据库、数据处理、生成图表等。

scripts/
├── main.py
└── utils.py

Python 脚本示例

# 文件路径:scripts/extract.py
# 功能:从 PDF 文件中提取文本内容

from pypdf import PdfReader

# 打开 PDF 文件
reader = PdfReader("demo.pdf")

# 存储提取的文本
text = ""

# 遍历每一页并提取文本
for page in reader.pages:
    text += page.extract_text()

# 输出全部文本内容
print(text)

Skill 的工作流程是:读取文件 → 执行脚本 → 获取结果,然后再将结果交给大模型进一步处理。


resources:资源目录

用于保存辅助内容,将配置与代码分离,便于后期维护。

resources/
├── prompt.md
├── config.yaml

常见资源类型

资源类型说明示例
Prompt 模板可复用的提示词模板prompt.md
配置文件参数和设置config.yaml
文本模板邮件、报告模板template.txt
图片资源图标、示意图logo.png
SQL 模板预定义的查询模板query.sql

配置文件示例

# 文件路径:resources/config.yaml
# 摘要相关配置

max_length: 1000    # 摘要最大长度(字符数)
language: zh        # 输出语言:zh=中文, en=英文

将配置放在独立文件中,以后修改参数就不需要改动代码,降低维护成本。


tests:测试目录

成熟项目通常包含测试,用于验证 Skill 的效果和稳定性。

tests/
├── test_cases.md
└── eval.yaml

测试用例示例

测试:
输入:帮我分析 PDF
期望:
- 输出摘要
- 包含关键点

测试的作用

作用说明
验证效果确保 Skill 输出符合预期
回归测试修改后验证旧功能不受影响
自动评估配合自动化流程批量测试
A/B 测试对比不同版本的输出质量

没有测试的 Skill 容易出现"改了一句话,旧功能突然失效"的问题。


README:使用说明

README 面向开发者,说明如何安装和使用这个 Skill。

# 安装
复制到 skills 目录

# 使用方法
上传 PDF

# 输出格式
Markdown

它解决的核心问题很现实:过一段时间后,连自己都可能忘记当初设计的 Skill 该怎么用。


完整案例:PDF 分析 Skill

下面用一个完整的例子串联以上所有概念。

目录结构总览

pdf-analyzer/
├── SKILL.md
├── metadata.json
├── examples/
│   └── summary.md
├── scripts/
│   └── extract.py
├── tests/
│   └── eval.md
└── README.md

完整调用流程

用户:上传 PDF 并总结
        ↓
Agent:扫描所有 Skills
        ↓
发现:description: 分析 PDF 并生成摘要
        ↓
命中 pdf-analyzer
        ↓
读取 SKILL.md
        ↓
调用 extract.py
        ↓
提取 PDF 内容
        ↓
生成摘要
        ↓
返回结果

为什么 Skill 要设计成目录结构

很多人会问:为什么不用一个 prompt.txt 搞定所有事情?原因很简单——规模一大就会失控。

单文件方案的问题

问题具体表现
无法维护所有内容堆在一个文件,修改困难
无法测试没有测试用例,改完不知是否正常
无法复用每个 Skill 都要从头写
无法版本管理难以追踪变更历史
无法多人协作一个文件多人改容易冲突

目录化方案的优势

优势实现方式
可维护各文件职责清晰,修改定位快
可复用脚本和配置可以跨 Skill 共享
可测试独立测试目录,支持自动化验证
可扩展新增功能只需添加文件
可发布目录打包即可分发

总结

Skill 本质上不是一段提示词,而是一套完整的软件能力包。

核心文件关系

SKILL.md         → 定义行为
metadata.json    → 定义信息
examples/        → 定义示例
scripts/         → 定义能力
tests/           → 定义质量
README           → 定义使用方式

Prompt 只能解决一次问题,而 Skill 是把能力沉淀成资产。当你把 AI Agent 的能力从"一次性对话"升级为"可复用的能力单元",才能真正发挥 Agent 的效率优势。

作者:admin
admin
TTF的家园-www.ttfde.top 个人博客以便写写东西,欢迎喜欢互联网的朋友一起交流!

本文》有 0 条评论

留下一个回复