掘金文章归档 · 第 34 篇 AI / Agent 系列 5/8 Agent Skill · 前端

前端视角详解 Agent Skill

从背景、实操 Demo 到 Reference/Script 与 MCP 区别,一次讲透

原文作者:随意_(掘金) | juejin.cn/post/7604012106154754094 | 发布于 2026-02-09 | 阅读 1,913 · 约 27 分钟

0背景

在 AI 赋能前端开发的浪潮中,Agent 已从"辅助聊天"升级为"可落地的开发助手",而 Agent Skill(智能体技能)正是让 Agent 摆脱"只会说不会做"、真正适配前端开发场景的核心能力支撑。

本文完全贴合前端开发实际,从 Agent Skill 的出现背景、核心价值、Cursor 实操 demo、加载逻辑、高级用法(Reference/Script 加载)、Token 消耗解析,到与 MCP 的核心区别,逐一拆解。

1一、出现背景:前端开发中 AI 的"痛点"催生需求

在 Agent Skill 出现之前,前端开发者使用 AI 工具(如 Cursor、Copilot)时,始终面临三个无法解决的核心痛点:

1. 重复 Prompt,效率低下

前端开发中存在大量"固定流程类"工作,比如"生成符合项目规范的 Vue3 组件""格式化 Axios 请求拦截器"。每次使用 AI 都要重复输入冗长的 Prompt,明确项目规范、代码风格、功能要求,重复操作占用大量开发时间。

2. 上下文割裂,适配性差

AI 无法"记住"项目的个性化规则:项目中自定义的工具函数、接口请求规范、路由配置逻辑、UI 组件库的封装规范等,每次提问都需要重新提供,否则生成的代码会与项目脱节。

3. 能力局限,无法联动执行

传统 AI 只能"生成代码",无法"执行操作":生成批量修改文件名的脚本后需要自己复制执行;发现代码中的路径错误后,无法自动定位并修改。AI 与实际开发流程脱节,无法形成"提出需求 → AI 处理 → 完成落地"的闭环。

📌 Agent Skill 本质是"给 Agent 预设的、可复用的技能模板",把固定流程、项目规范、操作逻辑封装成 Agent 能直接调用的"技能",真正实现"一次封装,多次复用"。

2二、核心价值:解决前端 AI 开发的 3 大痛点

痛点Skill 的解法
重复 Prompt将项目规范、操作流程封装成 Skill,调用时只需输入简单指令
上下文割裂Skill 内置项目个性化配置,调用时自动加载上下文,代码直接适配项目
无法联动执行通过 Script 和 Reference 实现"生成 → 执行 → 校验"的闭环

简单来说,Agent Skill 就像给前端 AI 助手"制定了详细的工作手册",手册中明确了"做什么、怎么做、遵循什么规则、需要用到什么资料",让 AI 从"只会猜"变成"懂规则、会操作"的专属助手。

3三、实操 Demo:用 Cursor 玩转 Agent Skill

前置准备:确保 Cursor 已更新至最新版本,打开 Cursor 设置(Ctrl+Shift+J / Cmd+Shift+J),开启"Agent Skills"开关(默认开启)。

Demo 1:基础用法——封装"Vue3 组件生成 Skill"

场景:项目中所有 Vue3 组件都需遵循"Setup 语法糖 + TailwindCSS + Props 类型校验 + emits 声明"的规范。进入当前前端项目,打开设置点击"创建 skills",在 Agent 对话框中用 AI 生成对应的 Skill,提示词如下:

/create-skill Help me create this skill for Cursor: 名字为:vue3-component-gen
适用范围是这个 vue3-skills 的项目,内容规则为:

# Vue3 组件生成技能(前端专用)

## 技能描述
根据用户需求,生成符合项目规范的 Vue3 单文件组件(SFC),严格遵循以下规则:
1. 语法:使用 <script setup> 语法糖,不使用 Options API;
2. 样式:使用 TailwindCSS,不写原生 CSS,样式需简洁、适配响应式;
3. Props:所有传入参数需用 defineProps 定义,并做类型校验(使用 TypeScript);
4. Emits:组件触发的事件需用 defineEmits 声明,明确事件参数类型;
5. 结构:模板结构清晰,包含注释,组件根节点使用 div,添加基础样式类;
6. 依赖:不引入项目中未使用的依赖,如需使用 UI 组件,仅使用 Element Plus。

## 使用场景
用户输入"生成XX组件""写一个XX组件"时,自动触发该技能,无需额外提示。

## 示例
用户需求:生成用户卡片组件(包含头像、姓名、手机号)
生成结果需符合上述所有规则,Props 包含 avatar(字符串)、name(字符串)、phone(字符串),
emits 包含 click(参数为用户信息对象)。

调用 Skill 一键生成组件:重启 Cursor(确保 Skill 被识别),打开 Agent 聊天框(Ctrl+L / Cmd+L),输入简单指令:"生成用户卡片组件,包含头像、姓名、手机号、邮箱,使用的哪些 skill 请你列出来"。无需额外补充规范,Cursor 会自动触发 vue3-component-gen Skill,生成符合项目规范的组件代码。

Demo 2:进阶用法——封装"ESLint 错误修复 Skill"

场景:项目使用 ESLint 规范代码(禁止 var、强制单引号、禁止 console.log),创建流程同第一个 Demo,提示词如下:

/create-skill Help me create this skill for Cursor: 帮我创建 名字是:eslint-fix 作用域是当前项目,内容是

# ESLint 错误修复技能(前端专用)

## 技能描述
识别用户提供的前端代码(JS/TS/Vue)中的 ESLint 错误,自动修复,严格遵循项目 ESLint 规范:
1. 变量声明:禁止使用 var,优先使用 const,可变变量使用 let;
2. 引号:所有字符串强制使用单引号,禁止双引号;
3. 控制台输出:禁止使用 console.log、console.warn 等控制台打印语句,直接删除;
4. 分号:语句结尾不添加分号(适配前端项目常见规范);
5. 缩进:使用 2 个空格缩进,禁止使用 Tab;
6. 结尾:修复后,需输出修复说明(列出修复的错误类型及数量)。

## 使用场景
用户输入"修复这段代码的 ESLint 错误""ESLint 校验修复",或直接粘贴存在 ESLint 错误的代码,自动触发该技能。

## 注意事项
修复时不改变代码原有功能,仅修复 ESLint 规范相关问题;若有无法自动修复的错误,需提示用户手动修改。

调用 Skill 修复代码:在项目中创建有 ESLint 报错的 js 文件,选中并添加 chat(Ctrl+K),在 Agent 聊天框输入"修复这段代码的 ESLint 错误,并列出你使用了哪些 skill",Cursor 自动触发 eslint-fix Skill,修复后的代码完全符合规范,并输出修复说明。

✅ 通过两个 Demo 可以发现,Agent Skill 完全贴合前端开发实际需求,核心是"一次封装,无限复用"。

4四、高级用法:Reference 与 Script 加载

4.1 Reference 加载:按需加载"参考资料"

Reference 是 Agent Skill 的"参考资料库",可存放前端项目中的个性化配置、规范文档、接口信息等。前端常用场景:接口联调 Skill 加载接口文档、组件生成 Skill 加载 UI 组件封装规范、路由配置 Skill 加载路由规范。

加载方式(Cursor 实操):

  1. 在 Skill 文件夹中创建 reference 子文件夹(固定名称,Cursor 会自动识别);
  2. 将参考资料放入该文件夹(支持 .md、.json、.js、.txt 等格式);
  3. 在 SKILL.md 中明确"加载条件";
  4. 调用 Skill 时,满足加载条件则自动加载对应 Reference 文件,执行完成后自动释放。

实操示例:新建 Skill api-request-gen,创建 reference 子文件夹放入 api-docs.md(用户列表接口:GET /api/user/list,参数:pageNum、pageSize),在 SKILL.md 中添加加载条件:

# 接口请求代码生成 Skill
## 技能描述
生成符合项目接口规范的 Axios 请求代码,自动匹配接口地址、请求方式、参数类型。
## Reference 加载条件
当用户需要生成"接口请求代码",且提及具体接口名称(如用户列表、登录接口)时,
自动加载 reference/api-docs.md 文档,获取接口信息。
## 规则
1. 请求代码使用项目全局封装的 Axios 实例(import request from '@/utils/request');
2. 生成请求函数,包含参数类型校验(TypeScript);
3. 处理请求异常(try/catch 包裹,抛出异常提示)。

调用 Skill 输入"生成用户列表接口的请求代码,保存在 user.js 里面",Cursor 自动加载 api-docs.md 并生成:

import request from '@/utils/request'

/**
 * 用户列表接口请求函数
 * @param params - 请求参数
 * @param params.pageNum - 页码(必填)
 * @param params.pageSize - 每页条数(必填)
 * @returns 用户列表数据
 */
export const getUserList = async (params: { pageNum: number; pageSize: number }) => {
  try {
    const response = await request({
      url: '/api/user/list',
      method: 'GET',
      params
    })
    return response.data
  } catch (error) {
    console.error('获取用户列表失败:', error)
    throw error
  }
}

4.2 Script 加载:按需加载"可执行脚本"

Script 是 Agent Skill 的"可执行操作模块",实现"生成代码 → 自动执行操作"的闭环。前端常用场景:批量重构脚本、文件操作脚本、规范校验脚本。

⚠️ 前端脚本仅在 Cursor 内置的沙箱环境中执行,不会影响本地项目文件(需手动确认执行结果后,再应用到本地项目,避免误操作)。

加载方式:创建 scripts 子文件夹 → 放入可独立执行的 JS/TS 脚本 → 在 SKILL.md 中明确"脚本执行条件" → 调用 Skill 时在沙箱中执行,输出结果经用户确认后应用。

实操示例(批量修改组件文件名脚本):

// scripts/rename-component.js
// 批量修改组件文件名脚本(Cursor 沙箱执行,不直接修改本地文件)
const fs = require('fs')
const path = require('path')

// 项目组件目录(前端项目常见目录)
const componentDir = path.join(__dirname, '../../src/components')

// 遍历目录,修改文件名和引入路径
const renameComponents = () => {
  const files = fs.readdirSync(componentDir)
  const modifiedFiles = []
  
  files.forEach(file => {
    if (file.endsWith('Card.vue')) {
      const newFileName = file.replace('Card.vue', 'CardItem.vue')
      const oldPath = path.join(componentDir, file)
      const newPath = path.join(componentDir, newFileName)
      
      // 读取文件内容,修改引入路径
      let content = fs.readFileSync(oldPath, 'utf8')
      content = content.replace(/import .* from './(.*)Card'/g, (match, p1) => {
        return `import ${p1}CardItem from './${p1}CardItem'`
      })
      
      // 模拟修改(沙箱环境中不实际写入文件,仅输出结果)
      modifiedFiles.push({
        oldName: file,
        newName: newFileName,
        path: componentDir
      })
    }
  })
  
  return {
    success: true,
    modifiedCount: modifiedFiles.length,
    modifiedFiles
  }
}

// 执行脚本并输出结果
const result = renameComponents()
console.log('批量修改结果:', result)

在 SKILL.md 中添加脚本执行条件:

# 组件批量重命名 Skill
## 技能描述
批量修改项目中 Vue 组件的文件名,同时修改组件内部的引入路径,避免路径错误。
## Script 执行条件
当用户输入"批量修改组件文件名""批量重命名 Card 组件"时,
自动加载 scripts/rename-component.js 脚本,执行批量修改操作。
## 注意事项
1. 脚本在 Cursor 沙箱环境中执行,不直接修改本地文件;
2. 执行完成后,输出修改结果(修改的文件列表、数量);
3. 用户确认无误后,可手动将修改结果应用到本地项目。

调用 Skill 输入"批量重命名 Card 组件",Cursor 自动执行脚本并输出修改结果(如"修改了 3 个文件"),用户确认后手动应用即可完成批量重构。

4.3 Reference 与 Script 加载核心区别(前端视角)

加载类型核心作用加载时机前端类比
Reference提供参考资料,让 Skill 贴合项目满足触发条件时加载,执行完成后释放按需引入的配置文件(如 .env)
Script执行具体操作,实现自动化闭环满足执行条件时加载,执行完成后销毁按需执行的工具函数

5五、加载逻辑:三阶段按需加载

Agent Skill 采用"按需加载"的核心逻辑,与前端的"路由懒加载""组件按需引入"原理完全一致——"需要时加载,不需要时不占用资源"。

  1. 初始化阶段:仅加载"Skill 元数据"(轻量加载)——进入项目时扫描 .cursor/skills 文件夹,仅加载每个 Skill 的名称、描述(类比前端只加载路由表,不加载组件代码);
  2. 触发阶段:按需加载"Skill 核心规则"(精准加载)——判定需要调用某个 Skill 时,才加载其 SKILL.md 全部内容(类比点击路由才懒加载组件);
  3. 执行阶段:按需加载"Skill 依赖资源"(按需中的按需)——执行过程中用到 Reference/Script 时才加载对应依赖资源,执行完成后自动释放。
📌 核心总结:Agent Skill 的加载逻辑 = 前端"路由懒加载" + "组件按需引入"的结合体:元数据加载 → 路由表加载;核心规则加载 → 路由对应组件加载;依赖资源加载 → 组件依赖的图片/工具函数加载。

6六、按需加载的 Token 消耗解析

AI 工具的 Token 消耗本质是"加载的文本内容长度"。Agent Skill 的按需加载,本质是"只加载当前需要的文本内容",实测数据显示在处理前端长流程任务时,按需加载架构能将上下文 Token 消耗降低 60%-80%。

不同加载阶段的 Token 消耗(1000 字符 ≈ 750 Token)

阶段加载内容Token 消耗前端类比
初始化Skill 名称、简短描述(约 50-100 字符/个)单 Skill 约 30-75 Token,10 个约 300-750 Token加载路由表
触发当前 Skill 的 SKILL.md(约 500-2000 字符)约 375-1500 Token加载路由组件
执行Reference(1000-5000 字符)/ Script(500-2000 字符)Reference 约 750-3750 Token;Script 约 375-1500 Token加载依赖资源

实测显示,将庞大知识库拆分为按需加载的 Reference 文件,比全量加载的 Token 成本节省 92% 以上,同时加载速度提升 45%。

前端场景下的 Token 节省技巧

  1. 精简 SKILL.md 内容:仅保留核心规则,删除冗余的示例、描述;
  2. 拆分 Reference 文件:将庞大的参考资料拆分为多个小文件(如接口文档按模块拆分),按需加载对应模块;
  3. 避免同时触发多个 Skill:每次仅调用 1 个需要的 Skill,避免 Token 浪费。

7七、Agent Skill 与 MCP 的核心区别

📌 一句话分清:Agent Skill 是"给 AI 用的技能模板",聚焦"AI 操作的标准化、自动化";MCP 是"前端项目的构建/部署工具",聚焦"项目的构建、打包、部署流程"。两者无直接关联,但可能配合使用。
对比维度Agent SkillMCP(如 Webpack、Vite、Rollup)
核心定位AI 智能体的"技能模板",赋能 AI 更适配前端场景前端项目的"构建/部署工具",处理项目文件
核心作用省去重复 Prompt、关联项目上下文、执行自动化操作打包、优化、构建、部署
使用场景编码阶段:生成组件、修复代码、接口请求、批量重构构建/部署阶段:打包源码、优化项目、部署上线
依赖环境依赖支持 Skill 的 AI 工具,无需额外部署依赖 Node.js 环境,需项目配置
操作对象操作"AI 的指令和行为",间接作用于源码直接操作"前端源码文件",输出可部署静态文件
前端关联度可选但推荐(提升编码效率)必用(否则无法打包部署上线)

两者配合场景:用 Agent Skill 辅助编码(生成、修复代码)→ 编码完成后,用 MCP 打包、优化项目 → 部署上线,形成前端开发的完整流程。

8八、总结:前端开发者如何高效用好 Agent Skill

Agent Skill 对于前端开发者而言,核心价值是"解放双手、提升效率"——把重复、机械、规范的编码工作交给 AI 自动完成,开发者专注于核心业务逻辑。

给前端开发者的 3 个实用建议

  1. 从高频场景入手:优先封装"重复次数最多"的 Skill(组件生成、ESLint 修复、接口请求生成),快速看到效率提升;
  2. 贴合项目规范:封装时严格遵循项目的代码规范、接口规范、组件规范,让生成的代码无需手动修改;
  3. 合理使用 Reference/Script:简单场景用基础 Skill,复杂场景(接口联调、批量重构)结合 Reference 和 Script,同时注意控制 Token 消耗。
✅ 随着 AI 技术普及,Agent Skill 会逐渐成为前端开发者的"必备工具"——它不是"替代开发者",而是"成为开发者的专属 AI 助手"。后续可根据自己的项目场景不断优化、扩展 Skill 库,真正实现"高效编码、轻松开发"。