如何创建自己的Skills?分享mooSQL的skills创建过程
本文介绍了如何为大模型编程工具创建自定义Skills,以mooSQL数据库工具为例。主要内容包括:1)Skills是将特定领域知识封装供AI调用的开放标准;2)创建流程:先让大模型生成API文档,经人工核对后转化为Skill文档;3)集成方法:将Skill文件放入指定目录;4)使用效果:显著提升大模型对mooSQL的理解准确率。该方法使第三方库获得与大模型内置库相近的支持效果,mooSQL的Ski
如何创建自己的Skills?——以mooSQL为例
大模型现在火热,在氛围编程的主导下,很多人甚至不再去关注代码实现细节。在这样的情况下,如何让大模型认识自己项目内的类库?相信很多人都有这方面的需求。
若是代码库本身就在项目的代码目录下,大模型现在可以全局按关键字自动进行代码检索,从而理解涉及的代码。然而,如果这个库已被抽离出项目文件夹,形成独立的包,作为包引入,那么大模型就比较难以理解,只能从项目中已存在的用法进行模仿。
那么,现在Skills来了!
现在trae、cursor等大模型编程工具陆续都已支持skills!
什么是Skill?下面概念来自cursor官方
Agent Skills 是一个用于为 AI 智能体扩展专门能力的开放标准。Skills 将特定领域的知识和工作流封装起来,智能体可以调用这些 Skills 来执行特定任务。
Cursor 启动时,会自动从技能目录中发现并加载技能,并将它们提供给 Agent 使用。Agent 会看到所有可用技能,并根据当前上下文决定何时调用它们。
你也可以在 Agent 对话中输入
/并搜索技能名称来手动调用技能
在我理解后,Skill就是一个markdown格式的文档文件!
内容如下:(格式为官方demo)
---
name: moosql-skill
description: 简要描述此技能的功能及使用时机。
---# 我的技能
为 Agent 提供的详细指令。
## 使用时机
- 在以下情况使用此技能...
- 此技能适用于...## 指令
- 为 Agent 提供的分步指导
- 特定领域的约定
- 最佳实践和模式
- 如需向用户澄清需求,请使用提问工具
确定Skills的目标和功能
我们现在的目标是,让大模型能够认识mooSQL,就像认识efcore一样。
开始创建
我们现在知道了skill是个什么,也知道了格式,那么需要开始手写吗?不!用大模型自己来写。
这里有一个前提,我们先要告诉大模型mooSQL到底是什么,怎么用。
这个就没有什么玄机了,有一条很明显的路——由于平时在使用时已经积累了一些文档,一方面,可以基于现有文档,让大模型直接参考,然后创建一个SKILL。
但是我没有,众所周知,文档总难免存在更新不及时的问题,于是我决定,让大模型直接基于源码项目,先生成一个完整、最新的API文档,然后再基于API文档,进行人工核定后,用大模型再写一个SKILL
创建API文档
这里操作比较简单,不赘述,直接用大模型代码编辑软件,打开项目,然后生成。
这里以mooSQL为例,mooSQL的核心用户侧工作类,主要是SQLBuilder这一SQL构建器和SQLClip这一实体构建器、以及仓储、工作单元等。分别要求大模型生成这些类的API文档,并要求它进行二次代码比对、参数比对、要求严禁擅自杜撰方法。人工核定后,然后追加设计理念提示词,要求大模型进行二次修正。
到这里API文档完成。
创建SKILL
这里比较简单,直接把上面生成的文档文件夹引用告诉大模型,然后提示词要求:创建一份为大模型使用的SKILL文档。
同样经过人工核对,大模型修正,如此几轮后,一个SKILL文档就写好了。
集成到项目
这里会有一点小小的坑。由于SKILL是后续才支持的,以cursor为例,版本2.4以后才会直接支持,可以按照教程在 设置→Rules,Skill,Subagents下找到SKILL,不然的话,看不到
我们可以把生成的skill文件夹,放在平时习惯用cursor打开的根目录的.cursor\skills文件夹下,形成类似如下的目录

验证和使用
在放置好后,用cursor打开项目,然后在提示词输入,“什么是mooSQL”。然后可以发现思考过程有一个leaning的动作,然后就吧啦吧啦说出来了!

使用和优化
在后面的实际使用中,和之前未配置SKILL时相比,生成代码时对mooSQL的正确率大幅提升,基本上没有再出现不存在的api“幻想”问题。这时mooSQL的体验已基本追平被大模型训练时内置好的其他库。
发布和维护
现在,mooSQL的skill已上传到gitee,可以拉取使用。
迭代
后续,根据持续改进的情况,更新skill。
项目主地址:mooSQL主仓库
欢迎Star!
更多推荐
所有评论(0)