你最近如果在AI编程工具上折腾过前端,大概率会注意到一个高频出现的概念:Skills。简单说,它就像是给AI配了一张“工作流程卡”,你把平时写代码的套路、步骤、规范写进去,下次一句话就能触发整套操作。这篇就用Vue这个前端框架跑第一个最小例子,把“理论学习”变成“能跑起来的东西”。不管你是刚接触AI辅助开发的新手,还是写了几年代码但没用过自定义技能的老手,只要跟着走一遍,就能搞懂Skills怎么落地。
我选Vue来上手,是因为它结构足够清晰,项目里的文件分工明确,单文件组件(SFC)改起来直观,生成的成果一眼就能验证对不对。而且Vue的脚手架工具能快速拉起一个干净项目,不会让无关配置干扰你理解Skills的运行机制。下面我会从概念拆解开始,再到项目初始化、技能文件编写、实际运行,最后整理踩坑经验,全程给可直接照搬的步骤。
1. 先搞明白Skills到底是干嘛的
1.1 它不是“提示词收藏夹”,而是流程封装
很多人第一次看到Skills这个功能,会把它理解成“把常用提示词存起来”。这么理解不算全错,但漏掉了最关键的部分:Skills不只是缓存一段文本,它是一套“流程化操作手册”。
平时你在对话框里让AI写代码,AI是即兴发挥的。你描述需求,它给出结果,你再修正,它再改。这个过程非常依赖你的表达是否完整,也依赖AI对上下文的记忆。一旦你的描述有遗漏,或者对话太长导致上下文信息被稀释,结果就会跑偏。
Skills做的事情,是把一套固定的执行流程预先定义好。比如“生成Vue组件”这个技能,配置文件里会写清楚:先查看项目结构,再分析已有的组件规范,然后按照约定生成代码,保存到指定目录,最后提醒你运行开发服务器。AI一旦触发这个技能,就会按照配置文件里的步骤走,而不是从零猜你要什么。
打个比方,普通对话像是你每次去餐厅都要和服务员详细解释“少油、不要香菜、辣度微微微辣”,而Skills相当于你直接递一张会员卡,上面写好所有偏好,厨房按卡出菜。省事是表面收益,真正的价值在于“稳定”:同一套流程反复执行,结果不会时好时坏。
还有一点容易忽略:Skills里的流程参数可以做得非常细,包括生成文件路径、命名规则、代码风格甚至报错处理方式。这些都是在你写配置文件时手动埋进去的,相当于把你自己积累的编码习惯转录给AI。所以与其说Skills是“告诉AI怎么写代码”,不如说是“告诉AI按你的规矩写代码”。
1.2 为什么用Vue练手最合适
前端三大框架里,Vue的特点就是“轻装上路”。它的项目结构非常直白:src目录下放组件,App.vue负责根组件挂载,package.json管理命令。这种清晰结构对测试Skills特别友好,因为AI生成的文件应该放在哪里、该改哪个文件,规律性强,你一眼就能看出它做没做对。
如果换成复杂度更高的项目,比如微前端工程或者服务端渲染项目,第一课就要花大量时间处理目录、别名、构建配置,反而掩盖了学习Skills本身的目的。Vue的干净,让新手可以把注意力全部放在“技能文件写得好不好”这件事上。
另一个原因是Vue组件的“单一文件”特性。一个.vue文件同时包含模板、脚本、样式,AI生成它的时候,输出的东西相对独立,验证成本低。你只需要打开页面看效果即可,不需要去十几个文件里追踪逻辑。
我的建议是,你的第一个学练项目别贪多,只做一个简单组件,比如计数器、表单输入框、卡片列表都行。把流程跑通了,再往复杂场景扩展。
2. 搭建项目底层,给Skills准备运行环境
2.1 初始化一个干净的Vue工程
在开始之前,先确认你本机装了Node环境。这个前提不满足,后面所有开发服务器相关的技能都没法演示。
打开终端,选择一个目录,执行脚手架命令。我习惯用官方提供的初始化指令,它会问你几个问题,比如项目名、是否安装路由、是否需要状态管理等。为了不让多余插件干扰验证,从第一个例子开始尽量全选“否”,先得到一个最精简的项目骨架。
命令执行完后,按提示进入项目目录,安装依赖。装完依赖后,建议顺手跑一次dev命令,确认默认页面能在浏览器打开。这一步能排除“项目本身有问题”的干扰,等后面Skills出问题时,你才知道问题大概率出在技能配置上,而不是工程配置上。
初始化完成后,你会看到类似这样的目录结构:src下面有main.js、App.vue、components文件夹,public目录放静态资源。最简单的说明一下:main.js是入口,App.vue是根组件,components用来放子组件。
2.2 Skills文件放在哪里,格式长什么样
不同AI编程工具对Skills的存放位置略有差异,但大原则是一致的:要么放在用户级目录,要么放在项目级目录。用户级目录对所有项目生效,项目级目录只对当前项目生效。第一次练手,我推荐用项目级目录,这样不会干扰你电脑上其他项目的AI行为。
以我常用的编辑器为例,在项目根目录下会有一个专门存放技能的文件夹。你可能找不到它,因为它需要手动创建或在配置面板里开启。创建好后,每个技能就是一个.md文件,文件名建议用英文字符,便于检索。
打开一个技能文件,里面通常分成两部分:头部元数据和正文指令。头部用frontmatter格式,三根横线包起来,写明技能名称、描述、触发场景。正文部分就是给AI的具体操作要求,可以用自然语言写步骤,也可以列出规则清单。
这里我要强调一个关键点:描述字段的质量,直接决定技能能不能被正确触发。AI判断是否启用某个技能,依据的是你的输入是否和描述中的“触发词”匹配。如果描述写得太泛,AI可能在你聊别的事情时误触发;写得太窄,你又要想办法记住精确措辞。
下面是一个最简单的技能文件结构示意:
--- name: vue-component-generator description: 当用户要求生成 Vue 组件时使用,支持自动创建 SFC 文件并更新注册 trigger: vue组件, 生成组件, 新建vue组件 --- # Vue 组件生成流程 1. 查看当前项目 src/components 目录结构 2. 分析现有组件命名风格 3. 根据用户的组件名和功能描述生成单文件组件 4. 将文件保存到 src/components 目录 5. 修改 App.vue,导入并注册新组件 6. 提示用户刷新页面验证结果这个文件看起来简单,但已经能满足一次完整触发的需求。后面的例子我们会加更多细节。
3. 实战:让AI按Skills自动生成一个Vue组件
3.1 设计第一个待实现的任务
先定义具体需求:我打算让AI帮我生成一个“计数器面板”组件,英文名可以叫CounterPanel。然后执行以下任务。
需求列清楚:
- 组件要有标题,标题文字可配置。
- 组件里有数字显示区域,有两个按钮,一个加一,一个减一。
- 数字不能小于零。
- 组件保存到
src/components/CounterPanel.vue。 - 修改
App.vue,导入组件并在页面里渲染。 - 保持项目原有的缩进规范。
这个需求不复杂,但已经包含了“创建文件、修改已有文件、设置约束条件”三种常见操作,是很有代表性的训练题目。
为啥不直接让AI用普通对话框生成?因为我想验证的是:技能文件里的步骤是否被完整执行。如果直接在对话框里问,AI通常会自己决定做哪些事。而通过技能触发,我可以观察到AI是否严格遵循了我在文档里写的先后顺序。这个“可复核性”是Skills的核心价值。
3.2 编写带约束的Skill配置文件
现在把之前的技能文件扩展成能完成上述任务的版本。我会在正文里加入更具体的路径约束、命名要求和代码规范。
--- name: vue-counter-example description: 生成带减加功能的计数器组件,并自动注册到 App.vue。当用户输入“计数器组件”、“生成counter组件”等指令时使用。 trigger: 计数器, counter组件, 生成组件demo --- # 计数器组件生成任务 请按以下步骤执行,每一步完成后再进入下一步: 1. 在 src/components 下查找是否已有同名组件。 2. 若无同名文件,则新建 CounterPanel.vue。 3. 组件实现要求: - 使用 `<script setup>` 语法 - 通过 `defineProps` 接收 `title` 字符串字段,默认值为“计数器面板” - 数字变量初始为 0,加减按钮点击时更新 - 数值不能小于 0,减操作需判断当前值 - 样式写在 `<style scoped>` 内,布局简洁即可 4. 保存文件后,读取 src/App.vue。 5. 在 App.vue 中导入组件,并在根元素内渲染组件。 6. 最后提示:需要运行 npm run dev 才能看到页面效果。我把约束分成了“结构性约束”和“功能性约束”。结构性约束包括文件路径、语法风格、文件命名,功能性约束包括数值不可为负、标题字段可配置。这些细节决定AI输出质量,也是技能配置里最值得花心思的部分。
有一点要留意:技能文件里的步骤不要写得太松散。比如只说“生成一个计数器组件”,AI就有可能自由发挥,弄出一个文件放到任意位置。你需要在文件里限定“保存到 src/components 下”,并且明确“如果同名文件存在,提示并停止”。这种防御性写法能避免AI在你不知情的情况下覆盖文件。
3.3 执行触发与效果验证
保存技能文件后,打开AI对话面板,输入一条能触发技能指令,比如:“使用 vue-counter-example 生成一个计数器组件,标题写‘学习计数器’。”
正常情况下,AI会回复它准备调用技能vue-counter-example,然后开始执行步骤。注意观察它的输出过程:它应该会先展示“查看目录”的动作,然后才生成文件。如果AI跳过了某个步骤,说明技能约束还不够明确,这时候再去调整描述或正文。
命令触发后,去项目里检查src/components下是否存在CounterPanel.vue,内容是否包含<script setup>语法、加减函数和样式代码。然后看App.vue,里面应该多了一行导入语句和一个组件标签。
最后在终端运行开发服务器,打开浏览器看页面效果。点击加号数字增加,点击减号数字减少,减到零时按钮不再让数字下降。这个验证流程走完,你就成功了第一个循环:配置技能、触发技能、AI执行、人工验收。
我第一次做这个实验时,AI生成的组件文件里忘了写样式作用域,我重新看了一遍技能配置才发现“样式写在scoped内”这个要求写得不够醒目。所以别小看这些书面约束,AI是会逐字读的,写得清楚,它执行的偏差就小。
4. 过程中踩过的坑与排查思路
4.1 常见问题速查表
我把使用过程中遇到的典型问题整理成一张表,方便你照着排查。
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 输出了提示词但没触发技能 | 触发词和描述不匹配 | 检查描述里是否包含你输入的词汇,适当增加同义词 |
| 技能生成了文件但放错目录 | 正文没写明确路径 | 在技能正文里用“必须保存到 src/components 目录”这种绝对句式 |
| 生成组件后没有注册到App.vue | 步骤拆解得不够细 | 把“读取App.vue并修改”拆成单独步骤,强调导入和标签 |
| 组件样式渲染异常 | 样式没写scoped | 在约束里加一句“样式必须使用scoped属性”,不要省略 |
| 多次执行后文件被覆盖 | 缺少存在性检查 | 增加“如果同名文件存在,先询问是否覆盖”的指令 |
| AI跳过了某一步骤 | 步骤之间没有逻辑串接 | 改用有序列表,要求AI“按序号顺序执行” |
这六种情况基本覆盖了技能配置初期最常见的报错。真正定位问题不需要什么高级调试手段,核心就是回到配置文件里看两点:描述是否写了触发条件,正文是否写清楚了动作边界。
4.2 让技能稳定发挥的四个习惯
第一,路径永远写绝对路径,不要写“相关目录”。AI对“相关”的理解和你不一样,你说“放在合适的目录”,它可能直接塞到根目录。要用src/components/你的组件名.vue这种形式。
第二,步骤要加序号,并且加一句“按顺序执行”。没有顺序约束时,AI可能会先改了App.vue再去生成组件,这就会导致它依赖一个还不存在的文件,使得里面的导入语句变成死循环引用。
第三,给技能加一个“验收清单”。例如技能最后加一步:结束后列出你执行过的操作,比如“已新建文件、已修改App.vue”,方便我核对。这也是把AI行为暴露给我们看的一种方式,而不是黑盒子操作完就不声不响。
第四,控制技能文件的体积。一个技能不要塞十几个步骤。如果任务复杂,拆成多个技能,再写一个调度技能来调用它们。这样单个技能文件容易维护,出问题时也容易定位是哪个环节写错了。
我个人的习惯是,每创建一个新技能,都会用一个最低成本的小项目先跑一遍,哪怕只是生成一个Hello World组件。验证通过后再应用到真实项目。这样能避免在复杂项目里排查半天,最后发现技能文件路径写错这种低级问题。
5. 从第一个例子走向日常效率工具箱
5.1 把已有技能扩展成工作流
一个能生成Vue组件的技能上手以后,你完全可以像搭积木一样扩展其他技能。比如我接下来就做了三个衍生技能:一个负责“补全组件API文档”,一个负责“按ESLint规则修复代码风格”,还有一个负责“生成页面级模板”。
这三个技能单独拎出来都不复杂,但组合起来效果就很明显。举个例子,我先触发“生成页面模板”技能,让它产出列表页骨架,然后用“补齐文档”技能给它生成说明文档,再用“修复风格”技能过一遍代码规范。整个过程都是自然语言触发,不需要手动复制粘贴大量上下文。这就是把Skills当“工具箱”用的感觉。
这里顺便说明一下技能之间的调用方式。某些AI编辑器支持在一个技能里调用另一个技能,但第一次上手时我不建议立刻用嵌套。嵌套意味着提示词上下文会叠加,如果第一个技能写得不够收敛,第二个技能接收的信息就会冗余,反而影响结果。先把每个技能做成独立且稳定的单元,再考虑编排。
5.2 让技能文件成为你的个人资产
技能文件本质上是一段可复用的逻辑,它和你的代码一样,有价值。我建议在项目里建一个docs目录专门存放技能说明,或者直接在技能文件夹里写一个README,记录每个技能的变更历史和适用场景。这样几周后回来看,你还能想起来当时为什么这么设计步骤。
还有一个值得尝试的做法:把技能的公共部分抽取出来。比如你的多个技能都要用“读取项目结构”这个动作,就可以考虑写一个公共技能,或者在每个技能里都复用同一段“查看目录”的描述。抽取的时候要注意保持独立,别让一个技能对另一个技能形成硬依赖。
我在实际使用中还有一个体会:不要把技能写成“什么都能干”的万能工具,越专注的技能越容易出好结果。把“生成Vue组件”和“生成Vue页面”拆开,比合成一个“生成Vue文件”要可靠得多。因为前者的执行路径明确,后者则会让AI在组件和页面之间犹豫。
结尾
回到开头的问题:Skills到底值不值得花时间去学?我个人用下来最大的感受是,它的价值不在于让你少敲几下键盘,而在于让你把自己的工作方法沉淀成可以反复使用的标准动作。写配置文件的那些时间,其实是在帮你把模糊的经验变成清晰的规则。第一次在Vue项目里跑通这个流程后,你会明显觉得AI的产出变得更可预测,而不是每次都要碰运气。
最后分享一个小技巧:如果你在配置技能时不确定某条指令该不该写,那就先写上去,用一个最小例子验证。比如不确定AI会不会主动处理文件名大小写,就在步骤里明确写上“文件名使用大驼峰命名”。试一次你就知道区别在哪了。实践比猜测高效得多。