Skip to content

Copilot CLI Skills 是一种轻量级的专项能力扩展:创建一个包含 SKILL.md 的目录,写入指令和辅助脚本,Copilot 在相关上下文中自动加载并使用。适合封装特定框架的测试规范、部署流程、或任何需要在多个项目复用的工作流知识。

GitHub Copilot CLI Skills(技能):为 AI 注入专项能力

什么是 Skills

Skills 是 Copilot CLI 的专项能力扩展机制。每个 Skill 是一个包含 SKILL.md 文件的目录,可以包含:

  • SKILL.md:描述 Skill 的用途、何时使用、如何使用(必须)
  • 脚本:辅助 Copilot 完成任务的可执行脚本(可选)
  • 其他资源:模板、参考文档等(可选)

当你提问时,Copilot 会根据上下文自动加载相关 Skills,把它们的知识注入到对话中。

Skills 存放位置

项目级 Skills(项目内共享,可提交到 Git):

.github/skills/your-skill-name/
.claude/skills/your-skill-name/   # 与 Claude Code 共用
.agents/skills/your-skill-name/

个人级 Skills(本机所有项目可用):

~/.copilot/skills/your-skill-name/
~/.agents/skills/your-skill-name/

创建一个 Skill

以创建一个"webapp-testing"技能为例:

目录结构

.github/skills/webapp-testing/
├── SKILL.md
├── scripts/
│   ├── run-tests.sh
│   └── check-coverage.sh

SKILL.md 格式

markdown
---
name: webapp-testing
description: 用于这个项目的 Web 应用测试规范和辅助工具。当用户提到要写测试、跑测试、
             或检查测试覆盖率时使用这个技能。
---

# Webapp Testing Skill

本项目使用 Vitest 作为测试框架,React Testing Library 处理组件测试。

## 测试规范

- 单元测试放在 `src/__tests__/` 目录
- 每个组件至少需要以下三个测试用例:渲染不报错、关键交互、空数据状态
- 不 mock 外部 HTTP 请求,使用 MSW(Mock Service Worker)

## 运行测试

使用 scripts/run-tests.sh 运行测试并输出覆盖率报告。

frontmatter 字段说明

字段必须说明
name唯一标识符,小写 + 连字符
description描述功能和触发时机,越详细越准确
allowed-tools预批准的工具列表,避免每次执行脚本时弹出确认
license开源分发时使用

使用 Skills

自动使用:Copilot 分析你的 Prompt,判断相关 Skill,自动加载。

强制调用:在 Prompt 中使用 /skill-name

/webapp-testing 帮我给 UserCard 组件写测试

查看可用 Skills

bash
/skills list          # 列出所有已加载的 Skills
/skills info webapp-testing  # 查看某个 Skill 的详情
/skills reload        # 重新加载(添加新 Skill 后使用)
/skills remove .github/skills/webapp-testing  # 移除某个 Skill

安装他人的 Skills

从网上下载 Skill 包(通常是一个包含 SKILL.md 的 zip 文件):

  1. 解压到 ~/.copilot/skills/ 或项目的 skills/ 目录
  2. 在 CLI 中运行 /skills reload

Skills vs 自定义指令的选择

自定义指令Skills
加载方式每次对话都加载按需/按 Prompt 上下文加载
适合内容简短的通用规范详细的专项知识 + 辅助脚本
维护位置配置文件独立目录(可包含脚本)
共享方式复制粘贴文本分发整个目录

一般原则:总是需要记住的短规范 → 自定义指令;某类任务的专项指南 → Skills。

常见问题

Q: Copilot CLI 的 Skills 和 Claude Code 的 Skills 可以共用吗?

A: 文件格式相同(SKILL.md + frontmatter),存放在 .claude/skills/.agents/skills/ 目录的 Skills 两者都会读取。这是有意为之的设计,方便团队在不同 AI 工具之间共享能力包。

Q: Skill 中的脚本在什么权限下运行?

A: 脚本以当前用户身份运行。建议在 SKILL.mdallowed-tools 字段预批准脚本,避免每次执行都需要确认,同时也让使用者清楚 Skill 会调用哪些命令。

Q: Skill 描述写多详细才够?

A: description 字段越详细,Copilot 的自动触发越准确。建议包含:这个 Skill 的用途、典型使用场景("当用户提到 X 或 Y 时")、这个 Skill 能做什么。