【AI开发】—— Agent Skills详解及Copilot 进阶玩法

【AI开发】—— Agent Skills详解及Copilot 进阶玩法

Copilot 进阶玩法:Agent Skills 让 AI 助手适配你的专属开发流

用过 GitHub Copilot 的开发者应该都有这样的体验:想让它适配项目专属的测试流程、调试规范,总要反复输入 prompt;团队统一的开发准则,要挨个给 Copilot 喂指令;换个工具(比如从 VS Code 切到 Copilot CLI),之前的定制化配置全失效……

Agent Skills就是 Copilot 为解决这些痛点推出的核心功能 —— 它把 Copilot 从 “通用代码补全工具” 升级成了可自定义、可复用、跨工具的智能代理,让我们能为 AI 打造专属的 “技能工具箱”,一次配置,多端复用。这篇文章就从基础概念到实操步骤,把 Agent Skills 的用法讲透,让你的 Copilot 真正懂你的开发流。

一、什么是 Agent Skills?

简单来说,Agent Skills 是包含指令、脚本、资源的标准化文件夹,GitHub Copilot 能根据任务相关性自动加载这些技能,完成专业化的开发任务。它是一套开放标准,不仅能在 VS Code 的 Copilot 中使用,还能无缝兼容 Copilot CLI、Copilot coding agent 等多个 AI 代理工具。

和传统的自定义 prompt 相比,Agent Skills 的核心是模块化、可复用、轻量加载:它不是把一堆指令一次性塞给 Copilot,而是把技能拆成 “元数据 + 核心指令 + 辅助资源”,只有在需要时才加载对应内容,既不浪费上下文,又能让 Copilot 精准执行专业任务。

Agent Skills 的核心优势

  1. 专属定制:为领域化任务定制能力,比如项目专属的 Playwright 测试流程、GitHub Actions 调试规范,无需重复输入上下文;
  2. 一次配置多端用:创建的技能可跨 VS Code、Copilot CLI 等工具使用,告别跨工具重新配置的麻烦;
  3. 能力组合:多个技能可搭配使用,构建复杂的开发工作流,比如 “代码检查 + 单元测试 + 部署验证” 一站式执行;
  4. 高效加载:采用渐进式加载机制,仅在需要时加载相关内容,避免上下文冗余,提升 Copilot 响应效率。

二、别搞混!Agent Skills vs 自定义指令

很多开发者会把 Agent Skills 和 Copilot 的Custom Instructions(自定义指令) 弄混,两者虽然都是定制 Copilot 行为,但定位、用法完全不同,核心区别看这张表就够了:

表格

特性Agent SkillsCustom Instructions
核心用途教 Copilot 专业能力和工作流(如测试、调试、部署)定义编码标准和通用准则(如命名规范、提交信息要求)
可移植性跨 VS Code、Copilot CLI、Copilot coding agent仅支持 VS Code、GitHub.com
内容组成指令 + 脚本 + 示例 + 各类资源仅纯文本指令
生效范围任务专属,按需加载全局生效(或通过 glob 匹配文件类型)
遵循标准开放标准(agentskills.io)VS Code 专属标准

什么时候用哪个?记好这两个原则

用 Agent Skills:想创建跨工具复用的能力、需要搭配脚本 / 模板等资源、想定义专业化工作流(测试 / 调试 / 部署)、想分享能力给社区;

用自定义指令:想定义项目专属的编码规范、设置语言 / 框架的通用约定、指定代码审查 / 提交信息规则、按文件类型配置专属规则。

简单来说:自定义指令管 “基础规矩”,Agent Skills 管 “专业能力”

三、实操第一步:创建属于你的 Agent Skill

创建 Agent Skills 的核心是标准化的文件夹结构SKILL.md 文件,整个过程零开发门槛,按步骤来就能搞定,甚至还能根据需求添加脚本、模板等辅助资源。

先搞懂:技能的两种存储位置

Copilot 支持项目级技能个人级技能,分别对应不同的使用场景,存储路径也不同,可根据需求选择:

表格

技能类型存储路径适用场景
项目级技能(仓库内).github/skills/.claude/skills/.agents/skills/仅对当前项目生效,比如项目专属的测试流程、部署脚本
个人级技能(全局)~/.copilot/skills/~/.claude/skills/~/.agents/skills/跨所有项目生效,比如个人通用的调试方法、代码规范

💡 小技巧:可通过 VS Code 的chat.agentSkillsLocations配置项,添加自定义的技能搜索路径,方便跨项目共享技能。

手把手创建技能:三步搞定

这里以创建项目级的 Web 应用测试技能为例,全程只需三步,其他技能可直接复用这个流程:

步骤 1:创建技能目录结构

在项目根目录创建标准化的目录,每个技能对应一个独立子目录(目录名后续要和 SKILL.md 中的 name 一致,小写,横杠分隔空格):

bash

运行

# 进入项目根目录 cd your-project # 创建项目级技能根目录 mkdir -p .github/skills # 创建专属技能子目录(示例:webapp-testing) mkdir .github/skills/webapp-testing 
步骤 2:编写核心文件 SKILL.md

这是技能的核心文件,必须放在技能子目录下,采用「YAML 头 + Markdown 主体」的格式:YAML 头定义技能元数据,Markdown 主体写详细的执行指令、步骤、示例。

基础模板如下,其中namedescription为必填项,其他为可选:

markdown

--- # 必选:技能唯一标识,小写+横杠,必须和父目录名一致(最大64字符) name: webapp-testing # 必选:技能用途+触发场景,越具体越好(最大1024字符) description: 基于Playwright的Web应用测试指南,创建/运行/调试浏览器测试时自动加载 # 可选:斜杠命令调用时的参数提示 argument-hint: [测试文件] [调试选项] # 可选:是否在Copilot聊天的/菜单中显示,默认true user-invokable: true # 可选:是否禁止Copilot自动加载,默认false(true则仅能手动调用) disable-model-invocation: false --- # 技能主体:详细指令 ## 适用场景 - 创建Playwright浏览器测试用例 - 调试失败的Web应用测试 - 搭建项目的Playwright测试基础设施 ## 操作步骤 1. 参考测试模板[./test-template.js]创建测试文件,遵循项目标准结构 2. 优先使用Playwright的角色选择器定位元素,避免使用XPath 3. 本地运行测试:npx playwright test 4. 调试测试:npx playwright test --debug ## 最佳实践 - 为动态内容添加data-testid属性 - 测试用例保持独立,避免依赖其他用例 - 失败时自动截图,方便问题定位 
步骤 3:添加辅助资源(可选)

在技能子目录下,可添加脚本、模板、示例等资源,比如上面的测试技能可添加:

  • test-template.js:Playwright 测试模板文件
  • examples/:测试用例示例目录
  • debug-script.sh:测试调试辅助脚本

Copilot 会根据 SKILL.md 中的引用,按需加载这些资源,无需提前塞入上下文。

SKILL.md 编写踩坑提醒

  1. name字段必须和技能子目录名完全一致,否则 Copilot 无法加载技能;
  2. description要写清触发场景,比如 “创建 Playwright 测试时加载”,否则 Copilot 无法精准匹配;
  3. 引用子目录内的资源时,使用相对路径,比如./test-template.js
  4. 指令要步骤化、具体化,避免模糊描述,让 Copilot 能直接执行。

四、如何使用已创建的 Agent Skills?

创建好的技能有两种使用方式:Copilot 自动加载手动斜杠命令调用,可通过 SKILL.md 中的配置项控制,灵活适配不同场景。

方式 1:自动加载(懒人首选)

只要你的提问匹配 SKILL.md 中description的触发场景,Copilot 会自动加载对应的技能,无需手动操作。

比如你在 Copilot 聊天中输入:“帮我写一个登录页的 Playwright 测试用例”,Copilot 会自动匹配webapp-testing技能,按其中的指令生成符合规范的测试代码。

方式 2:手动斜杠命令调用(精准控制)

在 Copilot 聊天输入框中输入/,会弹出技能列表,选择对应的技能即可调用,还能在技能后添加额外上下文,让 Copilot 更精准执行:

plaintext

# 示例1:调用webapp-testing技能,为登录页创建测试 /webapp-testing 为登录页创建浏览器测试用例 # 示例2:调用github-actions-debugging技能,调试PR#42的工作流 /github-actions-debugging 调试PR#42的失败的CI工作流 

四种技能调用配置组合

通过user-invokabledisable-model-invocation两个可选配置,可实现四种调用方式,覆盖所有使用场景:

表格

配置组合能否通过 / 命令调用能否被 Copilot 自动加载适用场景
都不配置(默认)通用技能,比如通用测试、基础调试
user-invokable: false背景知识类技能,无需手动调用,比如项目专属的技术栈知识
disable-model-invocation: true高危 / 特殊技能,需手动触发,比如项目部署、代码重构
两者都设为 false/true禁用技能,暂时不用的技能可这样配置

五、Copilot 如何高效加载技能?三层渐进式机制

为什么 Agent Skills 能做到 “多技能共存但不冗余”?核心是 Copilot 的三层渐进式加载机制,只在需要时加载对应内容,最大化节省上下文,提升响应效率。

第一层:技能发现(始终加载)

Copilot 只会读取所有技能 SKILL.md 中的YAML 头元数据(name+description),这部分内容极轻量,用于判断技能是否和当前任务相关,不会占用过多上下文。

第二层:指令加载(匹配时加载)

当你的提问匹配某个技能的 description 时,Copilot 才会加载该技能的SKILL.md 主体指令,此时 Copilot 就能获取详细的执行步骤。

第三层:资源访问(需要时加载)

只有 Copilot 执行指令时需要用到辅助资源(脚本、模板、示例),才会加载技能子目录中的相关文件,未引用的资源永远不会被加载。

这套机制让我们可以为 Copilot 配置几十个甚至上百个技能,而不用担心上下文冗余,真正实现 “技能多而不杂”。

六、进阶玩法:复用共享技能 + 插件贡献技能

除了自己创建技能,我们还能复用社区的共享技能,插件开发者还能将技能集成到自己的 VS Code 插件中,让技能的复用性拉满。

复用社区共享技能

GitHub 社区已经有大量现成的 Agent Skills,可直接复用,核心仓库有两个:

  • github/awesome-copilot:社区精选的技能、自定义代理、prompt 合集;
  • anthropics/skills:官方参考技能库,覆盖测试、调试、部署等常见场景。

使用步骤

  1. 浏览仓库,找到符合需求的技能;
  2. 将技能子目录复制到自己项目的.github/skills/(项目级)或~/.copilot/skills/(个人级);
  3. 根据自己的需求,修改 SKILL.md 中的指令和资源;
  4. 直接使用,无需额外配置。

💡 安全提醒:使用社区技能前,一定要检查其中的脚本和指令,避免包含恶意代码,VS Code 的终端工具可配置脚本执行白名单,提升安全性。

插件开发者:为插件添加 Agent Skills

VS Code 插件开发者可通过chatSkills贡献点,将技能集成到插件中,用户安装插件后就能直接使用,步骤如下:

  1. 插件内创建技能目录,遵循标准结构:

plaintext

extension-root/ # 插件根目录 └── skills/ └── my-skill/ # 技能子目录,名对应SKILL.md的name └── SKILL.md # 核心技能文件 
  1. 在 package.json 中注册技能,添加chatSkills贡献点,指定 SKILL.md 的路径:

json

{ "contributes": { "chatSkills": [ { "path": "./skills/my-skill/SKILL.md" } ] } } 
  1. 发布插件,用户安装后,就能在 Copilot 中直接使用该技能。

七、实战案例:两个常用技能模板

分享两个开发中高频使用的 Agent Skills 模板,可直接复制修改,快速适配自己的项目:

案例 1:GitHub Actions 调试技能

解决开发中 CI/CD 工作流失败的调试问题,让 Copilot 按标准化流程排查问题:

markdown

--- name: github-actions-debugging description: GitHub Actions工作流调试指南,排查失败的PR/分支工作流时自动加载 argument-hint: [PR编号/分支名] --- # GitHub Actions工作流调试 ## 调试流程 1. 使用list_workflow_runs工具查询目标PR/分支的最新工作流运行状态 2. 使用summarize_job_log_failures工具获取失败任务的日志摘要 3. 若摘要信息不足,使用get_job_logs工具查看完整失败日志 4. 本地复现失败场景,定位问题根源 5. 修复问题后,本地验证再提交代码 ## 常见问题排查 - 环境变量缺失:检查仓库Secrets是否配置齐全 - 版本不兼容:验证Action版本和项目依赖版本匹配 - 权限不足:确保工作流拥有仓库/分支的操作权限 - 超时问题:拆分长任务或增加timeout配置 

案例 2:Vue3 组件开发技能

让 Copilot 按团队规范生成 Vue3 组件,避免重复的代码审查问题:

markdown

--- name: vue3-component-dev description: Vue3组件开发指南,创建/重构Vue3组件时自动加载,遵循团队TS+Script Setup规范 argument-hint: [组件名] [组件类型(全局/业务)] --- # Vue3组件开发规范 ## 技术栈要求 - 必须使用<script setup>语法+TypeScript - 样式使用Scoped CSS,全局样式统一放在@/styles/ - 组件Props必须添加类型注解和默认值 - 事件触发使用defineEmits,添加类型校验 ## 组件创建步骤 1. 在对应目录创建组件文件:[组件名].vue,按“容器组件/展示组件”拆分 2. Props定义遵循“最小可用”原则,避免冗余属性 3. 展示组件仅负责渲染,业务逻辑放在容器组件 4. 为组件添加基础注释,说明用途、Props、事件 5. 全局组件需在@/components/index.ts中注册 ## 最佳实践 - 避免组件嵌套过深(不超过3层) - 通用逻辑抽离为Composables,放在@/composables/ - 图片使用vite的import.meta.url导入,避免绝对路径 - 组件命名使用PascalCase,文件命名和组件名一致 

八、最后总结:Agent Skills 的核心价值

Agent Skills 的出现,让 GitHub Copilot 从 “通用的 AI 代码助手” 升级成了可定制、可扩展、跨工具的智能开发代理,它的核心价值不是 “多一个功能”,而是让 AI 适配开发者的开发流,而不是开发者适配 AI

通过 Agent Skills,我们可以:

  • 把个人 / 团队的开发经验、标准化流程封装成可复用的技能;
  • 让 Copilot 在不同工具中保持一致的行为,告别跨工具重新配置;
  • 构建属于自己的 AI 技能库,让 Copilot 成为真正的 “专属开发助手”。

如果你还在为 Copilot “不懂你的项目” 而烦恼,不妨从一个简单的技能(比如测试、调试)开始,试试 Agent Skills,你会发现 Copilot 的效率能提升一个台阶。

💡 最后一个小技巧:在 Copilot 聊天中输入/skills,可快速打开技能配置菜单,查看、管理所有已创建的技能,新手必用!

Read more

C++高精度时间库——<chrono>

C++高精度时间库——<chrono>

在前面学习C语言我们就已经学习了C语言的时间库<time.h>。它操作简单、是全平台行为一致的时间库。但是它却存在着很多的问题——类型不安全,精度较低(通常为秒),扩展只能依赖编译器特制的宏。         而现代项目中如果要进行性能测试、时间间隔计算的话,C语言的<time.h>显然是不够的。因此在C++11中,引入了<chrono>这个时间库。接下来我们就来一次学习一下。         相关的英文文档为:Standard library header <chrono> (C++11) - cppreference.com         相关的测试代码已经上传至作者的个人gitee:楼田莉子/CPP代码学习 目录 设计哲学 库中的单位         时长单位(Duration Units)         时钟单位(

By Ne0inhk
华为OD机试真题-网上商城优惠活动 (Py/Java/C/C++/Js/Go)

华为OD机试真题-网上商城优惠活动 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷-网上商城优惠活动 华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 题目描述 某网上商场举办优惠活动,发布了满减、打折、无门槛3种优惠券。 分别为:每满100元优惠10元,无使用数限制,如100 ~ 199元可以使用1张减10元,200 ~ 299可使用2张减20元,以此类推; 92折券,1次限使用1张,如100元,则优惠后为92元; 无门槛5元优惠券,无使用数限制,直接减5元。 优惠券使用限制每次最多使用2种优惠券,2种优惠可以叠加(优惠叠加时以优惠后的价格计算),以购物200元为例,可以先用92折券优惠到184元,再用1张满减券优惠10元,最终价格是174元,也可以用满减券2张优惠20元为180元,再使用92折券优惠到165(165.6向下取整),不同使用顺序的优惠价格不同,以最优惠价格为准。在一次购物种,同一类型优惠券使用多张时必须一次性使用,不能分多次拆开使用(不允许先使用1张满减券,再用打折券,再使用一张满减券)。

By Ne0inhk
《C++实战项目-高并发内存池》4.CentralCache构造

《C++实战项目-高并发内存池》4.CentralCache构造

💡Yupureki:个人主页 ✨个人专栏:《C++》 《算法》《Linux系统编程》《高并发内存池》 🌸Yupureki🌸的简介: 目录 1.CentralCache结构初识 2. Span与SpanList的构造 3. CentralCache类初步实现 1.CentralCache结构初识 centralcache也是一个哈希桶结构,他的哈希桶的映射关系跟threadcache是一样的。不同的是他的每个哈希桶位置挂是SpanList链表结构,不过每个映射桶下面的span中的大内存块被按映射关系切成了一个个小内存块对象挂在span的自由链表中。 span是一个结构体,专门用来管理一定大小(如8字节,16字节)的内存块的自由链表 申请内存: 1. 当threadcache中没有内存时,就会批量向centralcache申请一些内存对象。centralcache也有一个哈希映射的spanlist,spanlist中挂着span,从span中取出对象给thread cache,这个过程是需要加锁的,不过这里使用的是一个桶锁,尽可能提高效率。 2

By Ne0inhk
【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)

【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)

Hi,我是云边有个稻草人......who?me,be like——→ 《C++》本篇文章所属专栏—持续更新中—欢迎订阅 目录 一、红黑树的概念 1.1 红黑树的规则 1.2 思考⼀下,红黑树如何确保最长路径不超过最短路径的2倍的? 1.3 红黑树的效率 二、红黑树的实现 2.1 红黑树的结构 2.2 红⿊树的插⼊ 【红⿊树树插⼊⼀个值的⼤概过程】 【情况1:变⾊】 【情况2:单旋+变⾊】 【情况2:双旋+变⾊】 2.3 红黑树的插入代码实现 2.4

By Ne0inhk