提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- [一、Agent Skills](#一、Agent Skills)
-
- [1.什么是Agent Skills](#1.什么是Agent Skills)
- 2.如何使用Skills
- 3.Skill开发
-
- (1)skill开发规则
- (2)开发自动周报skill
- (3)自动创建skill的魔法skill
- (4)什么场景下使用skill
- [(5)Agent Skills核心机制剖析](#(5)Agent Skills核心机制剖析)
- (6)claudecode等其它智能体使用skills
前言
一、Agent Skills
1.什么是Agent Skills
Skill就是技能。


一个Skill一般都在一个叫做SKILL.md的文档中,这个文档的开头先用一段提示词来说清楚这个Skill叫什么名字,能做什么事情。然后再用一段提示词,说清楚该Skill做这个事情的流程和规则是什么。在这个过程中,如果需要一些参考资料,经验数据,还需要告诉它去哪里找这些资料和数据。如果还需要一些工具,也要告诉它去哪里找这些工具。最后将这所有的内容啊,我们打包到一个文件夹里面,那这就是一个Skill了。以后谁想用这个Skill,直接复制整个文件夹就可以了。
例如下面的图片中,my-awesome-skill文件夹中就包含了一个完整的Skill。其中references文件夹中存放了一些数据和经验配方,scripts文件夹中存放了该Skill所需工具,assets文件夹中存放了其它材料。然后在SKILL.md文档中介绍了这个Skill的功能和工作流程,并且说明了应该去哪里找参考数据和所需工具等。
Skills就是AI Agent的说明书和工具箱,用来定义与封装任务逻辑,让AI表现更卓越。

2.如何使用Skills
使用Skills分为下面的三步:安装Agent、下载Skill、使用Skill。

(1)安装Agent
这里我们使用OpenCode这个Agent来学习Skill。
在Windows系统上,下载OpenCode之前,我们需要先下载一个node.js环境,我们打开node.js下载网页然后点击下载即可。

下载好node.js之后,我们打开OpenCode官网,然后复制npm下载命令,然后打开命令行窗口,执行npm下载命令即可。当然,我们也可以直接下载桌面版的OpenCode,桌面版的OpenCode使用起来会更加的通俗易懂一些。

当安装完成OpenCode终端后,我们打开终端窗口,然后输入opencode就可以打开opencode了。

当下载好opencode后,第一件事情就是设置一个model,即设置一个底层模型。在输入框中输入/models,然后按回车键即可。然后就可以选择一个模型了,opencode中有一些免费的模型可以选择。


例如我们想要设置让opencode使用deepseek v4 pro模型,我们需要先按Ctrl加A来查看所有供应商,然后在搜索框中输入DeepSeek后按回车,然后此时会让我们填API Key,我们就去deepseek开放平台获取一个API Key,然后填入后按回车。然后又会让我们选择要使用的模型,我们选择DeepSeek V4 Pro模型后按回车。然后又会让我们选择DeepSeek V4 Pro模型的规格,我们可以直接选择Default(默认),或者根据自己的需求选择high(高)或max(非常高)。



当设置完成后,就可以看到opencode的模型是DeepSeek V4 Pro了。

我们还可以通过输入/connect命令来直接选择要连接的供应商,然后填入对应的供应商提供的API Key,然后选择对应的模型和规格即可。

当设置完模型后,我们就可以和opencode开始对话了。

如果我们想要一个新的对话,我们可以输入/new,然后按回车后就会开启一个新的对话了。

后续我们在opencode中下载的skill多了的话,如果我们想要指定某个skill来完成某个任务,那么我们可以先输入/skills然后按回车,然后选择skill,然后在后面输入自己的需求即可。然后opencode就会使用我们选择的skill来执行这个任务了。



(2)下载Skills
安装好Agent之后我们就可以去下载Skill了。

一些Skill下载地址。

例如我们进入anthropic官方仓库中,这个skills文件夹里面的每个子文件夹就表示一个skill。我们可以将skills这个文件夹下载下来,然后就可以使用里面的每个skill了。


还可以在skillsmp这个网站中找一些好用的skill。这个网站比较好的一点就是可以按照分类来找寻想要的skill。当找到合适的skill后,直接点击右侧的下载Zip即可,然后就会将skill的压缩包下载好了。我们还可以复制Prompt命令,然后给Codex或者Claude Code这些Agent,然后让这些Agent自己去找这个skill进行下载。



我们还可以去一些优秀的开源仓库中下载skill,例如下面的awesome-claude-skills这个仓库中。这个仓库下的每个文件夹都是一个skill。

(3)使用Skill
当下载好Skill后,使用Skill就是将下载好的Skill文件夹复制到Agent能找到的目录即可。如果我们想要让skill是项目级的skill,即只能在当前项目中使用,那么就将skill文件夹复制到项目目录下存放skill的文件夹里面即可。如果想要让skill变为全局skill,即每个项目都可以使用的skill,那么就需要将skill复制到全局skills文件夹下面。
例如下面的图片中,project-base文件夹是我们的项目根目录,然后在根目录下创建一个.opencode文件夹,然后在.opencode文件夹下面创建一个skills文件夹,然后将我们下载的skill文件夹复制到skills文件夹下面。然后我们在project-base文件夹中打开终端窗口,然后打开opencode,然后告诉opencode当前项目的skills都在.opencode/skills目录下,这样opencode就可以找到skill了。

下面我们就来演示一下使用Anthropic官方提供的frontend-design这个skill来设计一个网页,frontend-design这个skill就是一个专门用来设置前端级的页面的skill。
我们先按要求创建Test01/.opencode/skills目录,然后将下载的frontend-design这个skill的文件夹复制到Test01/.opencode/skills目录下。然后我们回到Test01路径下打开终端,然后输入opencode命令打开opencode。



然后我们就可以在对话框中询问OpenCodet"你有什么Skill可以使用",以此来验证OpenCode能否找到我们设置的skill。根据OpenCode的回答,我们可以看到OpenCode是能找到我们设置的skill的。

然后我们就可以给OpenCode发送命令,让它来给我们设置相关的网页了。
我们可以看到OpenCode就会开始按照frontend-design这个skill设置的工作流程来制作一个网页了。


OpenCode生成完网页后会告诉我们网页文件所在位置,即就在我们的项目目录下。然后我们打开index.html,就可以看到OpenCode为我们设计的软件开发公司的官网网页了。





(4)使用skill完成表格操作
anthropic官方发布的skill有一个xlsx,是专门用来对office中的表格进行操作的。我们将这个skill复制到项目目录下的skills目录中。

然后我们在终端中打开opencode,然后我们可以直接将其它路径下的表格文件拖拽到终端窗口中,然后我们在路径后面跟上我们自己的需求就可以了。


anthropic官方提供的skill除了能对表格进行操作以外,还可以对pdf、world、ppt等文件进行操作,我们可以自行学习一下。

(5)使用skill生成视频
我们还可以使用skill来生成视频,我们在skillsmp网站中下载remotion这个skill,然后使用这个skill来生成视频。

我们将下载好的remotion这个skill也复制到项目目录下的skills目录下,然后就可以通过opencode来使用这个skill了。我们还可以使用各种各样的skill来完成我们的需求,这里就不一一演示了。

(6)使用skill完成海报设计
如果我们不想每次都打开终端来使用opencode,那么我们也可以在VS Code中下载一个opencode扩展,然后在VS Code中使用opencode。下载这个opencode扩展的前提是当前电脑上需要安装过了opencode。

然后我们在VS Code中打开我们的项目根目录,然后在右上角点击opencode图标就可以打开opencode对话窗口了。如果点击后报下面的错误,可以执行Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned命令来运行脚本运行,这样就可以成功打开opencode了。

可以看到当前opencode的工作目录就是我们的项目根目录,我们在左侧可以很清楚的看到项目目录细节。

然后我们下载这个skills集合。

我们使用里面的canvas-design这个skill,该skill是用来做海报设计的,我们将这个skill复制到当前项目目录下的skills目录中。

然后我们就可以让opencode使用该skill为我们设计海报了,可以看到opencode就会自动选择使用canvas-design这个skill来工作了。

(7)使用skill完成本地文件整理
前面我们都将skill复制到了项目目录下,这样的话就只用这个项目能使用这些skill了。如果我们想要每个项目都使用某一个skill的话,那么我们可以将这个skill设置为全局skill,即将它复制到C:\Users\user.config\opencode\skills目录下,如果C:\Users\user.config\opencode目录下没有skills目录的话,那么就手动设置一个。

下面我们将awesome这个skill集中的file-organizer这个skill复制到全局skills目录下,这样每个项目都可以使用这个skill了,file-organizer这个skill可以进行一些文件整理操作。

当设置完成后,我们再回到项目根目录下,然后打开opencode询问它有什么skill可以使用。我们可以看到虽然当前项目目录下的skills目录中没有file-organizer这个skill,但是当前项目还可以使用file-organizer这个skill,因为该skill是全局skill。

然后我们让opencode帮我们整理下载目录,我们可以看到opencode就会自动调用file-organizer这个skill进行文件夹整理了,因为涉及到了文件系统的管理,所以它会询问我们权限,我们只需要同意即可。它还会询问我们的偏好,我们只需要按照自己的需求来选择即可。


然后我们进入到下载目录下,可以看到它按照安装程序、源码、压缩包等分类给我们整理好了各个文件。

3.Skill开发
(1)skill开发规则
如果想要自己写一个skill,我们可以参考官方发布的文档和官方电子书,然后按照上面的提示开发出属于我们自己的skill。

在官方文档中,我们可以看到一个skill的目录结构,其中必须要包含一个SKILL.md文件,然后SKILL.md文件的开头必须以YAML语法写前言,前言必须包含name和description这两个内容。并且YAML前言必须以三个杠开头和结尾。name和description这两个字段必须要写,而且文档中还说明了这两个字段必须要按什么格式写。
name中不能出现大写字符,必须与父目录名称匹配等。
description字段中需要描述这个skill的作用以及什么时候使用,需要写的详细一些,这样Agent才能分析应该在什么场景下调用这个skill。




还可以通过官方电子书中的说明来开发skill。

(2)开发自动周报skill
下面我们来自己开发一个写周报的skill。

我们先创建一个项目目录,然后在下面创建.opencode/skills/weekly-report-generator目录,其中weekly-report-generator文件夹就是我们要创建的skill文件夹。然后我们在weekly-report-generator文件夹下面创建一个SKILL.md文件,在这里面写skill的名称、介绍和工作流程等。

然后我们在SKILL.md文件中先写skill的前言部分,即将name和description字段的内容写清楚,需要注意前言一定要以三个杠开头和结尾。

然后我们在下面使用marddown格式来写这个skill的核心流程。如果这个skill的工作流程中使用到了工具或参考数据等内容,我们可以在weekly-report-generator文件夹下面再创建references文件夹用来存放参考数据、参考模版等文件,创建scripts文件夹用来存放工具或脚本等文件。这样在skill的工作流程中,如果某个步骤需要参考数据模版了我们就告诉它去references文件夹下面参考某个数据模版,如果某个步骤需要通过脚本工具计算数据结果了我们就告诉它去scripts文件夹下面调用某个脚本来计算数据了。除了references文件夹和scripts文件夹,我们还可以再创建其他的文件夹来保存我们想要保存的文件,然后在skill的工作流程中,如果想要使用某个示例文件了,只要告诉它文件的路径即可。

然后我们现在打开opencode,然后说制作一个周报,opencode就会自动调用weekly-report-generator这个skill了。

(3)自动创建skill的魔法skill
前面我们也试着自己写一个skill,我们在开发skill的工作流程时,可能一下子并不能确定该skill应该按照什么流程来工作,并且我们自己开发的skill也没有一个评价标准,并不能知道自己写的skill给Agent使用时效率如何。
所以我们可以借助anthropic官方提供的skill-creator这个skill来帮助我们开发skill,这个skill就是帮助我们开发自己的skill的。我们先将这个skill复制到项目目录下的skills目录中。

然后我们打开opencode,询问opencode是否能使用skill-creator这个skill。可以看到opencode现在可以使用skill-creator这个skill了。

然后我们可以在opencode中输入/skills按回车,然后再选择使用skill-creator这个skill,然后在后面跟上我们想要创建的skill的描述,然后就能让opencode使用skill-creator这个skill和我们一起开发skill了。
我们看到opencode在生成skill的同时会问我们一些问题,这就是opencode在使用skill-creator和我们共同创建新的skill,我们只需要按照自己的需求来选择选项即可。我们还让opencode将这个新的skill直接存放到当前项目的skills目录下,这样我们就可以直接使用新创建的skill了。如果想要在其它项目中使用这个新skill,直接将该skill的文件夹复制过去即可。

我们看到下面的SKILL.md文档就是skill-creator这个skill帮助我们创建的新skill,可以看到这个工作流程比我们自己写的还全面一些。如果我们使用这个skill时感觉有些部分不满意,我们还可以让opencode再按照我们的需求修改这个skill。
我们可以再打开一个opencode窗口,然后使用新的窗口来让新skill帮助我们分析一个项目,然后我们根据它分析的结果来在第一个opencode窗口中继续修改新的skill。


我们还可以去这个网站使用这个skill,这个skill也是帮助我们创建skill的,不过它会根据我们要创建哪一方面的skill,然后选择这个方面的现实中的大神人物的习惯来结合到我们创建的skill中。

(4)什么场景下使用skill
下面的图片中写了什么时候应该使用skill,什么使用不需要使用skill。其实就是当我们想要让AI有自己的创意、想法的时候,可以不需要skill,直接让AI发挥即可。当我们已经提前知道正确的答案时,这些工作就需要让AI使用skill来完成了。因为skill可以让AI遵循正确的步骤来完成工作,最后得到我们满意的结果。skill就是帮助AI在做某一项工作时提供一个正确流程,这样我们让AI做一个工作时,就不用每次都告诉AI第一步应该怎么做、第二步应该怎么做了,直接让AI读取一下skill,它就知道应该第一步怎么做、第二步怎么做了。

(5)Agent Skills核心机制剖析
在下图中就是用户-Agent-LLM之间的交流过程。
当用户向Agent提问时,Agent会将用户的问题和当前能使用的所有skill的元数据(即skill的name和description字段的内容)发送给LLM,然后LLM思考分析用户的问题,然后决定要使用什么skill来执行用户的任务。然后LLM将要使用的skill名称发送给Agent,然后Agent将这个skill的指令部分完全加载后发送给LLM。然后LLM按照skill中的流程来一步步处理用户的任务,在skill的流程中可能还需要去references文件夹中读取一个模版、数据等,那么LLM就需要将这个请求发送给Agent,然后Agent将对应位置的模版文件或数据文件发送给LLM。对于一些scripts文件夹中的脚本类的程序请求,Agent是不会将脚本程序发送给LLM的,而是LLM将执行脚本的一些参数给Agent,然后Agent执行脚本程序,然后将执行结果发送给LLM。
综上可以体会到,Agent和LLM之间是按需加载的机制,而不是Agent刚开始就把所有资源都发给LLM,如果这样的话,那么就会太费LLM的Token了,所以Agent只会在LLM发送需要请求时,才按需发送给LLM数据或文件。这个就是遵循渐进式披露的一个原理,在这一套机制中,Agent是很重要的,因为LLM就是我们经常使用的Deepseek、Qwen等这些大模型,它的强弱就跟它们的实际参数有关。而Agent就是我们使用的Codex、ClaudeCode、OpenCode这些,它们是遵循上面的机制,然后配合LLM进行工作的。我们前面使用的是OpenCode这个编程型智能体,它的更多能力是在辅助编程上,而一些企业内部自己开发的智能体,就是根据企业内部的工作来开发的智能体,能更好的帮助他们进行工作。这些企业定制智能体的开发,就是帮助智能体和大模型之间进行相互配合,完成工作的过程。

(6)claudecode等其它智能体使用skills
我们前面一直使用opencode这个Agent,我们给opencode新的skill时,直接将skill文件夹复制到项目目录下的.opencode/skills目录下即可,其他的Agent设置新skill时,也是同样的方式。例如给claudecode这个Agent设置新skill时,将新skill文件复制到项目目录下的.claude/skills目录下即可。其他的Agent根据下面的图片路径即可,全局skill也如图片中所示。

下面是我们在当前项目下使用claudecode这个Agent,然后问它现在有什么skill可以使用。如果claudecode没有更新skill,我们需要关闭对话框然后重新打开对话框即可。

然后我们在当前项目根目录下创建.claude/skills目录,然后在.claude/skills目录下复制一些skill,然后再问claudecode现在能使用什么skill,就可以看到它能检测到新的skill了。
