Appearance
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.shSKILL.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 文件):
- 解压到
~/.copilot/skills/或项目的skills/目录 - 在 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.md 的 allowed-tools 字段预批准脚本,避免每次执行都需要确认,同时也让使用者清楚 Skill 会调用哪些命令。
Q: Skill 描述写多详细才够?
A: description 字段越详细,Copilot 的自动触发越准确。建议包含:这个 Skill 的用途、典型使用场景("当用户提到 X 或 Y 时")、这个 Skill 能做什么。