Agent Skills 完全指南:从概念到集成

更新日期: 2026-03-06 阅读: 73 标签: skills

本文是一份完整的Agent Skills指南,适合新手入门和开发者参考。内容涵盖Skills的基本概念、格式规范,以及如何将其集成到AI Agent中,所有内容通俗易懂,同时符合搜索引擎收录标准,帮助你快速掌握Agent Skills的核心用法。


第一章:什么是Skills?

Agent Skills的核心,就是一个包含SKILL.md文件的文件夹。这个文件是必需的,里面要包含元数据(至少要有name和description),还要写清楚让Agent执行特定任务的指令。除此之外,Skills还能捆绑脚本、模板和参考资料,方便Agent更好地完成任务。

一个标准的Skill文件夹结构如下(可直接复制使用):

my-skill/ ├── SKILL.md # 必需:指令 + 元数据 ├── scripts/ # 可选:可执行代码(如Python、Bash脚本) ├── references/ # 可选:文档资料(如技术说明、使用手册) └── assets/ # 可选:模板、资源(如图片、配置模板)

Skills的工作原理

Skills用“渐进式披露”的方式管理上下文,这样能让Agent运行更快,同时按需获取所需信息,具体分为三个阶段:

1. 发现阶段:Agent启动时,只加载每个可用Skill的名称和描述,刚好能判断这个Skill是否和当前任务相关。

2. 激活阶段:如果用户的任务和某个Skill的描述匹配,Agent就会把这个Skill的完整SKILL.md指令加载到上下文里。

3. 执行阶段:Agent按照SKILL.md里的指令操作,需要时再加载参考文件或执行捆绑的脚本。

SKILL.md 文件详解

每个Skill都从SKILL.md文件开始,这个文件由两部分组成:YAML前端元数据和Markdown指令,格式固定,简单易写。

以下是一个完整的SKILL.md示例(PDF处理相关),可直接参考修改:

--- name: pdf-processing description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction. --- # PDF Processing ## When to use this skill Use this skill when the user needs to work with PDF files, such as extracting text, getting tables from PDFs, filling PDF forms, or merging multiple PDF files. ## How to extract text 1. Use pdfplumber for text extraction. Install it first with "pip install pdfplumber" if not installed. 2. Open the PDF file using pdfplumber.open("file.pdf"). 3. Iterate through each page of the PDF and extract text with page.extract_text(). 4. Save the extracted text to a new file or return it directly to the user. ## How to fill forms Use the pdfrw library to fill PDF forms. Follow these steps: 1. Install pdfrw with "pip install pdfrw". 2. Load the PDF form using pdfrw.PdfReader("form.pdf"). 3. Fill the form fields by modifying the Annotations of the PDF. 4. Save the filled form with pdfrw.PdfWriter().write("filled_form.pdf", reader).

SKILL.md顶部的前端元数据是必需的,主要包含两个核心字段:

1. name:简短的标识符,用来区分不同的Skill,比如pdf-processing、>2. description:说明这个Skill能做什么、什么时候用,要写清楚,方便Agent识别相关任务。

前端元数据之后的Markdown正文,就是具体的执行指令,没有固定格式,只要能让Agent看懂、能顺利执行任务就行。

这种简单的格式有三个明显优势:

1. 自文档化:不管是Skill的作者还是使用者,看SKILL.md就能明白它的功能,方便检查和改进。

2. 可扩展:Skill的复杂程度可高可低,简单的只有纯文本指令,复杂的可以包含可执行代码、各类资源和模板。

3. 可移植:Skills就是普通的文件,编辑、版本控制(比如用Git)和共享都很方便。


第二章:Agent Skills 规范

这一章主要讲Agent Skills的格式规范,只要按照这些规范来创建Skill,就能保证兼容性,让不同的Agent都能正常识别和使用。

目录结构规范

一个合格的Skill,必须是一个包含SKILL.md文件的文件夹,最基础的结构如下:

skill-name/ └── SKILL.md # 必需,不能缺少

你可以根据需要,选择性添加scripts/、references/和assets/这三个目录,来丰富Skill的功能:

- scripts/:放可执行代码,比如Python、Bash脚本,供Agent执行特定操作。

- references/:放额外的文档资料,比如详细的技术说明、领域相关的参考文件。

- assets/:放静态资源,比如文档模板、图片、配置文件等。

SKILL.md 格式规范

SKILL.md文件必须包含YAML前端元数据,后面跟Markdown正文,两者缺一不可。

前端元数据(必需)

最基础的前端元数据格式如下,不能省略任何一个字段:

--- name: skill-name description: A description of what this skill does and when to use it. ---

除了必需字段,还可以添加可选字段,丰富元数据信息,示例如下:

--- name: pdf-processing description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF documents. license: Apache-2.0 metadata: author: example-org version: "1.0" ---

各字段详细要求

下面是每个字段的具体要求,一定要严格遵守,否则Agent可能无法识别Skill:

1. name(必需)

- 长度:1-64个字符。

- 内容:只能包含小写字母、数字和连字符(a-z、0-9、-)。

- 禁忌:不能以连字符开头或结尾,不能有连续的连字符(比如pdf--processing),必须和父文件夹名称完全一致。

有效示例:pdf-processing、>无效示例:PDF-Processing(有大写)、-pdf(以连字符开头)、pdf--processing(连续连字符)

2. description(必需)

- 长度:1-1024个字符,不能为空。

- 内容:要明确说明Skill的功能和使用场景,最好包含关键词,方便Agent识别相关任务。

好的示例:Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents or when the user mentions PDFs, forms, or document extraction.

不好的示例:Helps with PDFs.(太模糊,Agent无法判断何时使用)

3. license(可选)

- 作用:指定Skill的许可证。

- 要求:尽量简短,可以写许可证名称,或者引用捆绑的许可证文件。

示例:license: Proprietary. LICENSE.txt has complete terms

4. compatibility(可选)

- 长度:1-500个字符。

- 作用:只有Skill有特定环境要求时才需要写,比如需要的目标产品、系统包、网络访问等。

示例:compatibility: Requires git, docker, jq, and access to the internet

注意:大多数Skill不需要这个字段,只有有特殊要求时才添加。

5. metadata(可选)

- 作用:存储额外的元数据,是键值对的形式。

- 要求:键名要唯一,避免和其他字段冲突,比如作者、版本号等。

示例:

metadata: author: example-org version: "1.0"

6. allowed-tools(可选)

- 作用:指定Agent可以使用的预批准工具,用空格分隔。

- 注意:这是实验性功能,不同Agent对这个字段的支持情况不一样。

示例:allowed-tools: Bash(git:*) Bash(jq:*) Read

Markdown正文规范

前端元数据之后的Markdown正文,就是Agent执行任务的具体指令,没有固定格式,但建议包含以下内容,让Agent更易执行:

- 分步指令:把任务拆分成一步一步的操作,清晰明了。

- 输入和输出示例:给出具体的输入例子和对应的输出结果,帮助Agent理解。

- 常见边界情况:说明遇到异常情况(比如文件不存在、格式错误)时该如何处理。

注意:Agent激活Skill后,会加载整个SKILL.md文件。如果文件太长,建议把详细内容拆分到references/目录下,按需加载。

可选目录规范

1. scripts/目录

里面放Agent可以运行的可执行代码,编写脚本时要注意:

- 要么自包含,要么清楚说明依赖的软件或库(比如需要安装哪些Python包)。

- 包含有用的错误消息,比如文件找不到时,提示“无法找到指定文件,请检查路径是否正确”。

- 能优雅处理边界情况,比如输入错误时不崩溃,而是给出提示。

- 支持的语言看Agent的实现,常见的有Python、Bash、JavaScript。

2. references/目录

里面放Agent需要时可以读取的额外文档,建议每个文件聚焦一个内容,方便按需加载,常见的有:

- REFERENCE.md:详细的技术参考,比如复杂的操作说明。

- FORMS.md:表单模板或结构化数据格式。

- 领域特定文件:比如finance.md(金融相关)、legal.md(法律相关)。

3. assets/目录

里面放静态资源,比如文档模板、图表图片、查找表等,供Agent调用。

渐进式披露规范

Skills的结构要符合“渐进式披露”原则,这样能减少Agent的上下文占用,提高运行速度:

- 元数据(约100个tokens):所有Skill的name和description,在Agent启动时加载。

- 指令(建议不超过5000个tokens):完整的SKILL.md正文,在Skill被激活时加载。

- 资源(按需加载):scripts/、references/、assets/里的文件,只有Agent需要时才加载。

建议把SKILL.md文件控制在500行以内,详细的参考内容移到单独的文件中。

文件引用规范

在SKILL.md中引用其他文件时,要用从Skill根目录开始的相对路径,不要用绝对路径,示例如下:

See the reference guide (references/REFERENCE.md) for details. Run the extraction script: scripts/extract.py

注意:文件引用最好控制在距SKILL.md一层深度以内,不要嵌套太深(比如references/docs/guide.md),避免Agent无法找到文件。

Skill验证方法

创建完Skill后,可以用skills-ref参考库来验证,确保符合所有规范。这个库是官方推荐的,使用方法很简单:

1. 先下载参考库:https://github.com/agentskills/agentskills/tree/main/skills-ref

2. 运行验证命令(在终端输入):

skills-ref validate ./my-skill

这个命令会检查SKILL.md的前端元数据是否有效,以及是否遵循所有命名约定,有错误会及时提示。


第三章:将Skills集成到你的Agent中

这一章讲如何把Skills添加到你的AI Agent或开发工具中,主要有两种集成方式,适合不同的Agent类型,步骤清晰,新手也能快速上手。

两种主要集成方式

1. 基于文件系统的Agent

这种Agent在计算机环境(比如bash/unix)中运行,是最强大的集成方式。当模型发出shell命令(比如cat /path/to/my-skill/SKILL.md)时,Skill就会被激活,捆绑的资源也能通过shell命令访问。

优点:功能强大,能直接调用本地脚本和资源;缺点:需要Agent有访问文件系统的权限。

2. 基于工具的Agent

这种Agent没有专用的计算机环境,需要开发者实现专门的工具,让模型能触发Skills并访问捆绑的资产。具体的工具实现由开发者决定,比如通过api调用Skill的指令。

优点:不需要文件系统权限,兼容性强;缺点:功能相对有限,无法直接运行本地脚本。

集成核心步骤

一个兼容Skills的Agent,不管用哪种集成方式,都需要完成以下5个核心步骤:

1. 发现Skill:扫描配置的目录,找到所有包含SKILL.md文件的文件夹(也就是有效的Skills)。

2. 加载元数据:Agent启动时,只解析每个SKILL.md文件的前端元数据(name和description),这样能减少初始的上下文使用量,让Agent启动更快。

3. 匹配任务:把用户的任务和已加载的Skill元数据进行匹配,判断哪个Skill适合完成当前任务。

4. 激活Skill:找到匹配的Skill后,加载这个Skill的完整SKILL.md指令,注入到Agent的上下文里。

5. 执行任务:Agent按照SKILL.md的指令操作,需要时加载参考文件、执行脚本或访问资产。

关键步骤详解

1. Skill发现

Agent需要配置一个或多个目录,定期扫描这些目录,查找所有包含SKILL.md文件的文件夹。只要文件夹里有SKILL.md,就认定为一个有效的Skill,不管是否包含其他可选目录。

2. 加载元数据

加载元数据时,只需要解析SKILL.md的前端元数据,不需要加载整个文件。下面是一个简单的Python函数示例,用于解析元数据(可直接复用):

def parseMetadata(skillPath): # 读取SKILL.md文件内容 content = readFile(skillPath + "/SKILL.md") # 提取YAML前端元数据(需要安装pyyaml库) frontmatter = extractYAMLFrontmatter(content) # 返回元数据字典 return { "name": frontmatter["name"], "description": frontmatter["description"], "path": skillPath }

注:extractYAMLFrontmatter函数需要自己实现,或使用pyyaml库解析YAML内容,核心是提取name和description字段。

3. 元数据注入上下文

解析完元数据后,需要把这些信息注入到Agent的系统提示中,让模型知道当前有哪些Skills可用。不同平台的注入格式不同,以Claude模型为例,推荐使用XML格式,示例如下:

<available_skills> <skill> <name>pdf-processing</name> <description>Extracts text and tables from PDF files, fills forms, merges documents.</description> <location>/path/to/skills/pdf-processing/SKILL.md</location> </skill> <skill> <name>data-analysis</name> <description>Analyzes datasets, generates charts, and creates summary reports.</description> <location>/path/to/skills/data-analysis/SKILL.md</location> </skill> </available_skills>

说明:基于文件系统的Agent,需要包含location字段(SKILL.md的绝对路径);基于工具的Agent,可以省略location字段。

注意:元数据要简洁,每个Skill的元数据建议控制在50-100个tokens,避免占用过多上下文。

安全考虑

如果集成的是基于文件系统的Agent,执行脚本时会有安全风险,一定要做好以下4点防护:

1. 沙箱化:在隔离的环境中运行脚本,不让脚本访问Agent的核心资源,防止恶意脚本破坏系统。

2. 白名单:只执行来自受信任来源的Skill脚本,禁止运行未知或不可信的脚本。

3. 确认机制:在运行潜在危险的操作(比如删除文件、修改系统配置)前,先询问用户,得到确认后再执行。

4. 日志记录:记录所有脚本的执行情况,包括执行时间、脚本路径、操作内容,方便后续审计和排查问题。

参考实现

如果不知道如何实现集成,可以参考skills-ref库,这个库提供了处理Skills的Python工具和命令行工具,是官方推荐的参考实现。

库的地址:https://github.com/agentskills/agentskills/tree/main/skills-ref

常用命令(可直接在终端运行):

1. 验证Skill目录是否符合规范:

skills-ref validate <path>

2. 生成Agent提示所需的<available_skills> XML:

skills-ref to-prompt <path>...

你也可以查看这个库的源代码,参考它的实现逻辑,快速完成自己Agent的Skills集成。


总结

Agent Skills是让AI Agent完成特定任务的核心组件,它的结构简单、可扩展、可移植,只要遵循本文的规范,就能创建出兼容不同Agent的Skill。集成时,根据自己的Agent类型选择合适的集成方式,做好安全防护,就能让Agent的功能更强大、更实用。

本文涵盖了Skills的概念、规范和集成方法,内容通俗易懂,适合新手入门和开发者参考。如果在使用过程中遇到问题,可以参考skills-ref官方库,或留言咨询。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13399

相关推荐

AI Skills:别再写重复提示词了,像管理代码一样管理AI技能

如果你还在为每次使用AI都要写冗长的提示词而烦恼,那么是时候了解一种新的工作方式了。最近在AI开发者圈子里,AI Skills 这个概念正在悄然改变我们与AI协作的方式。

AI技能包Skills:如何让AI一劳永逸地记住工作流程

你是否曾对AI助手重复相同的指令感到厌倦?比如每次都要说“帮我总结这段文字,翻译成中文,再改成公众号风格”。有没有一种方法,能让AI像安装软件一样,一次设定,永久记住某个工作流程?

我分析了上万个AI skills,这30个最实用

去年我做了一个提示词分享平台,半年多时间积累了一万多用户。当时AI技能(Skill)这个概念刚开始火起来,我就想把技能模块也加到平台里。但技能不只是处理文字,它需要托管文件夹,对技术和服务器要求比较高,我一个人实在搞不定。

别再让AI瞎写Vue代码了,用Skills给它装个大脑

现在用AI写代码的人越来越多。打开Cursor或者Claude,说句话就能生成一段Vue代码,确实方便。但用久了你会发现一个问题:AI写出来的代码能用,但看着就是不太对劲。命名乱来,结构别扭,跟团队其他人写的对不上。不是代码有错,是写法不像人写的。

OpenClaw完全指南:13000多个skills,真正好用的就这30个

我打开ClawHub看了一眼——13,338个skills。每天试一个,不吃不喝不睡觉,得试37年。这就像你走进一家超级大的超市,货架从地板堆到天花板,每个架子上都摆满了你没见过的东西。

OpenClaw Skills 安装与使用完整指南

OpenClaw Skills 是模块化的功能扩展包,它们为 AI 助手提供专门领域的知识、工作流和工具。就像给机器人安装不同的\\\"大脑模块\\\",让它能够完成更专业的任务。

最受欢迎的10个OpenClaw skills,装完就能用

最近科技圈都在聊小龙虾,其实就是OpenClaw。这个AI助手之所以火,全靠它的技能包系统。就像给AI配了个工具箱,遇到啥任务就掏啥工具,干啥像啥,不会卡顿。

如何写出高质量的AI Skill:从Anthropic官方仓库学到的7个原则

如果你想让AI Agent真正能干好活,光靠聊天是不够的。你得给它写说明书,也就是Skill。Anthropic官方开源了一个叫skill-creator的仓库,里面装的不是一个普通技能,而是一个教AI怎么创建技能的技能。

Vue Skills、React Skills来了,开发大牛都在推

最近AI圈冒出个新词:Skills。到处都在说。VS Code的Agent在用,Copilot在用,Claude Code也在用。各种AI框架都在聊这个。

2026年如果只学一个AI技能,就一定是Skills

年初Skills刷屏,然后MCP 2.0,然后Vibe Coding,然后各种Agent框架……你以为消停了?没有。紧接着Gemini 3来了,GPT-5.2来了,各种某某杀手层出不穷。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!