什么是 Skill?
Skill 是一个自定义模块,通过配置文件 (SKILL.md, .instructions.md, .prompt.md 等) 扩展 AI 助手(如 GitHub Copilot、Claude 等)的功能,使其能够执行特定领域的任务。
💡 重要:Skill 不仅仅限于 VS Code Copilot,它是一个开放的生态系统。可以用于:
- GitHub Copilot (VS Code、JetBrains IDE 等)
- Claude 和其他 AI 助手
- 任何支持 Skill 协议的 AI 平台
类比理解
如果 AI 助手是一个通用工具,那么 Skill 就像教它一项专门技能:
未使用 Skill: AI 助手是通用对话机器人
👤 我想要代码审查
🤖 我可以帮你看代码...
使用 Skill: AI 助手成为领域专家
👤 审查这段代码
🤖 [自动应用审查标准、检查清单、最佳实践...]
Skill 的核心特性
1. 特定用途
每个 Skill 解决一个明确的问题或完成特定的工作:
- 🔍 代码分析 - 检查代码质量
- 📝 文档生成 - 自动写文档
- 🐛 调试助手 - 帮助定位问题
- ✅ 测试编写 - 生成测试用例
- 🎨 代码审查 - 执行代码审查
2. 可配置
通过 SKILL.md 定义:
- 工作范围和能力
- 执行的步骤
- 使用的工具
- 输出格式
3. 可复用
一旦创建,可以:
- 在多个项目中使用
- 与团队共享
- 社区分享并获取反馈
- 不断改进和迭代
4. 集成
可以与各种工具集成:
- 外部 API
- 代码检查工具
- 数据服务
- 第三方库
Skill vs 普通 Prompt 对比
| 特性 | 普通 Prompt | Skill |
|---|---|---|
| 定义方式 | 即兴输入 | SKILL.md 配置文件 |
| 可复用性 | 每次手动输入 | 保存后直接调用 |
| 版本管理 | 无 | 支持版本控制 |
| 工具使用 | 有限 | 无限扩展 |
| 性能 | 低 | 高 |
| 团队共享 | 困难 | 简单 |
SKILL 结构
完整的 SKILL.md 由两部分组成:
---
[YAML Frontmatter - 元数据]
---
[Markdown - 文档内容]
YAML Frontmatter (元数据)
必需字段
---
title: 你的 Skill 名称
version: 1.0.0
description: 简短描述(一句话)
author: 你的名字
---
常用可选字段
---
# 基本信息
title: Code Review Skill
version: 2.5.1
description: Automated code review with best practices
author: John Doe
license: MIT
# 分类和标记
category: code-review
tags:
- code-quality
- testing
- best-practices
- javascript
# 能力声明
capabilities:
- analyze-code
- detect-bugs
- suggest-improvements
- check-standards
# 依赖声明
dependencies:
- eslint: "^8.0"
- prettier: "^3.0"
# 兼容性
compatibility:
vscode: ">=1.80"
copilot: ">=1.0"
node: ">=16.0"
# 应用到哪些文件/项目
applyTo:
- "**/*.js"
- "**/*.ts"
- "**/*.jsx"
- "**/*.tsx"
---
Markdown 内容结构
SKILL.md 的 Markdown 部分应该包括以下几个关键部分:
1. Skill 简介
简洁地描述 Skill 的作用:
# Code Review Skill
自动审查代码质量,遵循最佳实践。
2. Purpose(目的)
清楚地说明 Skill 的用途:
## Purpose
- 检查代码质量和风格
- 识别潜在 bug 和性能问题
- 验证最佳实践遵循情况
- 提供具体改进建议
3. Keywords(关键词)
让 AI 助手知道何时应该使用这个 Skill:
## Keywords
- code review
- review
- 审查
- CR
- quality check
- bug detection
4. Instructions(指令)
这是最重要的部分!AI 助手会遵循这些指令:
## Instructions
### Step 1: Understand the Context
- Read through the entire code
- Identify the purpose and functionality
- Check for TODOs and FIXMEs
### Step 2: Code Quality Analysis
- Check naming conventions
- Verify error handling
- Assess code complexity
### Step 3: Performance Check
- Identify potential optimizations
- Check for memory leaks
- Review algorithm efficiency
### Step 4: Security Review
- Check input validation
- Verify authentication/authorization
- Look for injection vulnerabilities
### Step 5: Provide Output
- List all issues found
- Prioritize by severity
- Provide actionable suggestions
创建 Skill
项目结构
完整的 Skill 项目结构如下:
my-awesome-skill/
├── SKILL.md # Skill 元数据和指令(最关键)
├── .instructions.md # 执行指令(可选,高级用法)
├── .prompt.md # 自定义提示(可选)
├── README.md # 项目文档
├── package.json # 依赖管理(如需要)
├── examples/ # 使用示例
│ ├── example-1.md
│ └── example-2.md
└── templates/ # 可复用模板(可选)
└── template-1.md
创建步骤
第 1 步:创建项目目录
mkdir my-awesome-skill && cd my-awesome-skill
git init
第 2 步:创建 SKILL.md
在项目根目录创建 SKILL.md 文件,这是 Skill 的核心。YAML 元数据定义了 Skill 的基本信息,Markdown 内容定义了执行逻辑。
第 3 步:创建 .instructions.md (可选)
对于复杂的 Skill,可以创建 .instructions.md 来补充详细的执行指令,保持 SKILL.md 的简洁性。
第 4 步:在开发环境中测试
- 在你使用的 IDE(VS Code、JetBrains 等)中打开项目文件夹
- 打开 AI 助手的对话窗口(Copilot Chat 或其他)
- 输入相关请求,AI 助手会自动加载和应用 Skill
第 5 步:发布和共享
- 分享到 GitHub:提交到 GitHub 仓库
- 社区发布:发布到 AI Skills 生态
- 团队分享:共享项目文件夹给团队成员
完整例子:打造一个 JavaScript 代码审查 Skill
现在让我们创建一个完整的、生产级别的代码审查 Skill。
SKILL.md
---
title: JavaScript Code Review Skill
version: 1.0.0
description: Comprehensive JavaScript code review with best practices and performance optimization suggestions
author: Your Name
license: MIT
category: code-review
tags:
- javascript
- code-quality
- best-practices
- performance
- security
capabilities:
- code-analysis
- bug-detection
- performance-optimization
- security-review
- best-practices-check
compatibility:
vscode: ">=1.80"
copilot: ">=1.0"
node: ">=16.0"
applyTo:
- "**/*.js"
- "**/*.ts"
- "**/*.jsx"
- "**/*.tsx"
---
# JavaScript Code Review Skill
全面的 JavaScript 代码审查,包括质量检查、性能优化和安全审计。
## Purpose
这个 Skill 用于:
- 检查代码质量和遵循的 JavaScript 最佳实践
- 识别潜在的 bug 和性能问题
- 提出安全建议
- 建议代码改进和重构方案
- 验证命名规范和代码风格
## Keywords
- code review
- 代码审查
- review
- javascript review
- quality check
- bug detection
- performance
- security check
- best practices
## Instructions
你是一位经验丰富的 JavaScript 代码审查专家。你的任务是按照以下步骤进行全面的代码审查。
### Step 1: 理解代码背景
首先,阅读整个代码片段,理解:
- 代码的主要目的
- 使用的库和框架
- 代码的执行流程
- 任何重要的注释或 TODO
### Step 2: 代码质量分析
检查以下方面:
- **命名规范**:变量、函数和类的命名是否清晰且遵循约定(camelCase、PascalCase)
- **函数复杂度**:函数是否过长?是否可以拆分?
- **代码重复**:是否有重复的代码块可以提取为公共函数?
- **错误处理**:是否有适当的 try-catch 或错误检查?
- **注释和文档**:是否有必要的注释?文档是否完整?
### Step 3: 性能检查
识别潜在的性能问题:
- **不必要的渲染**:React/Vue 中是否有不必要的重新渲染?
- **内存泄漏**:事件监听器是否被正确清理?
- **算法效率**:是否使用了高效的算法?
- **数据结构**:数据结构是否合适?
- **异步操作**:Promise 链是否可以简化为 async/await?
### Step 4: 安全审计
检查安全问题:
- **输入验证**:用户输入是否被验证并清理?
- **XSS 漏洞**:是否存在 XSS 风险(特别是 DOM 操作)?
- **SQL 注入**:后端代码是否使用参数化查询?
- **敏感信息**:是否有暴露的秘钥或敏感信息?
- **CORS**:API 调用是否正确处理 CORS?
### Step 5: 最佳实践检查
- **使用现代 JavaScript**:是否使用了过时的 API?
- **类型安全**:是否应该使用 TypeScript?
- **测试覆盖**:代码是否有相应的单元测试?
- **模块化**:代码是否模块化和可维护?
### Step 6: 给出结果
按照以下格式输出你的审查结果:
## Code Review Report
### ✅ 优点(What's Good)
- [优点1]
- [优点2]
- ...
### ❌ 需要改进(Issues Found)
| 类型 | 优先级 | 问题描述 | 建议 |
|------|--------|--------|------|
| Performance | High | [问题说明] | [改进建议] |
| Security | Medium | [问题说明] | [改进建议] |
| Quality | Low | [问题说明] | [改进建议] |
### 💡 优化建议(Suggestions)
1. [建议1及代码示例]
2. [建议2及代码示例]
3. ...
### 📊 整体评分
- 代码质量: 7/10
- 性能: 8/10
- 安全性: 9/10
- 最佳实践: 7/10
- **综合评分: 7.75/10**
更多 Skill 示例
为了给你更多灵感,这里展示三个不同场景的 Skill 示例。
示例 2: Vue 组件文档生成 Skill
使用场景:自动为 Vue 组件生成文档
---
title: Vue Component Documenter
version: 1.0.0
description: Auto-generate documentation for Vue components
category: documentation
tags:
- vue
- documentation
- auto-generate
applyTo:
- "**/components/**/*.vue"
---
# Vue Component Documenter
自动生成 Vue 组件的 Props、Events、Slots 和用法文档。
## Purpose
- 提取组件的 Props 定义
- 记录 Events 和 Emits
- 生成使用示例
- 创建完整的组件文档
## Keywords
- vue component
- document
- auto-generate
- props
- events
## Instructions
你是一位 Vue 文档专家。分析给定的 Vue 文件:
1. **提取组件元数据**:Props、Data、Methods、Computed、Emits
2. **分析组件结构**:Template、Script、Style 的组织方式
3. **生成文档**:按标准格式输出组件文档
4. **添加示例**:为每个 Props 和 Event 提供使用示例
输出格式:
```markdown
# 组件名称
<!-- 例如:Button、Modal、Form 等 -->
简短的组件功能描述
## Props
| 名称 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| 属性1 | String | - | 属性说明 |
## Events
| 事件名 | 参数 | 说明 |
|--------|------|------|
| event1 | - | 事件说明 |
## Slots
| 插槽名 | 说明 |
|--------|------|
| default | 默认插槽说明 |
## 使用示例
```vue
<MyComponent
:prop1="value"
@event1="handler"
>
<template #default>
插槽内容
</template>
</MyComponent>
示例 3: 单元测试生成 Skill
使用场景:自动为函数生成单元测试
---
title: Unit Test Generator
version: 1.0.0
description: Generate comprehensive unit tests for functions
category: testing
tags:
- testing
- jest
- vitest
- automation
---
# Unit Test Generator
根据函数逻辑自动生成全面的单元测试用例。
## Purpose
- 分析函数的输入输出
- 识别边界情况
- 生成测试用例
- 提高测试覆盖率
## Keywords
- unit test
- test case
- jest
- vitest
- testing
- coverage
## Instructions
你是一位体验丰富的测试工程师。分析函数代码:
1. **理解函数逻辑**:参数、返回值、副作用
2. **识别测试场景**:
- 正常情况 (Happy Path)
- 边界情况 (Boundary Cases)
- 异常情况 (Error Cases)
3. **生成测试用例**:完整的 Jest/Vitest 测试代码
4. **添加注释**:解释每个测试用例的目的
输出单元测试代码,包括:
- describe 块
- beforeEach/afterEach 设置
- 多个 test/it 块
- 清晰的断言和期望值
实战应用场景
场景 1: 团队代码审查标准化
问题:团队代码审查标准不统一,每个人的要求不同
Skill 解决方案:
创建 Team Code Review Skill,包含:
- 公司编码规范检查清单
- 安全审查标准
- 性能优化指标
- 是否使用 TypeScript 等团队规定
效果:
- 🎯 代码审查标准化
- ⏱️ 审查时间减少 40%
- 📋 自动生成 CR 报告
场景 2: 新人快速学习
问题:新入职开发者需要快速掌握项目和团队技术栈
Skill 解决方案:
创建 Project Onboarding Skill,包含:
- 项目架构解读
- 常见问题 Q&A
- 开发工作流指南
- 常用命令速查
效果:
- 🚀 新人上手时间从 2 周减少到 3 天
- 📚 自动回答常见问题
- 🔄 持续更新文档
场景 3: 文档自动生成
问题:功能变更后,文档经常过时
Skill 解决方案:
创建 API Documentation Skill,包含:
- 自动扫描代码生成 API 文档
- 生成 Swagger/OpenAPI 文档
- 生成使用示例
效果:
- 📖 文档时刻保持最新
- 🤖 0 手工维护成本
- ✅ 提高代码文档率
常见问题与调试
Q1: 为什么 Skill 没有被激活?
可能的原因和解决方案:
❌ 问题1:SKILL.md 格式错误
✅ 解决:检查 YAML Frontmatter 是否有效
- 确保使用 --- 分隔符
- 检查缩进是否使用 2 个空格
- 验证字符编码是 UTF-8
❌ 问题2:关键字不匹配
✅ 解决:检查 Keywords 部分
- 添加英文和中文关键字
- 关键字要具体而非过于宽泛
❌ 问题3:AI 助手缓存问题
✅ 解决:
- 重新加载 IDE 窗口 (Cmd/Ctrl + R)
- 关闭并重新打开 AI 助手的对话窗口
- 清除开发环境的缓存
Q2: 如何调试 Skill 的输出质量?
调试步骤:
1. 明确你的指令
- Instructions 写得越具体,Copilot 输出越好
- 包含具体的步骤和格式要求
- 提供正反例对比
2. 测试关键词
- 用不同的表述测试 Skill 是否能激活
- 记录哪些关键字最有效
3. 迭代改进
- 根据输出效果调整 Instructions
- 添加更多具体的例子
- 优化输出格式
4. 使用 .instructions.md
- 对于复杂 Skill,将详细指令分离到文件中
- 提高可读性和可维护性
Q3: Skill 可以访问项目文件吗?
回答:
✅ 可以:
- 读取项目中的代码文件
- 查看项目的文件结构
- 访问打开的编辑器内容
❌ 不能:
- 自动执行命令(除非通过工具集成)
- 访问系统环境变量
- 修改文件(需要用户确认)
💡 最佳实践:
在 Instructions 中明确你希望 Skill 如何使用项目文件
Q4: 多个 Skill 冲突怎么办?
解决方案:
1. 明确 applyTo 范围
只在特定文件类型上激活 Skill
2. 使用特定的关键字
避免过于宽泛的关键字
3. 优先级管理
通过清晰的命令格式区分不同 Skill
例如:
/review 激活 Code Review Skill
/doc 激活 Documentation Skill
快速参考 Cheatsheet
SKILL.md 最小模板
---
title: Your Skill Name
version: 1.0.0
description: Brief one-line description
author: Your Name
category: category-name
tags:
- tag1
- tag2
applyTo:
- "**/*.ext"
---
# Your Skill Name
Brief introduction.
## Purpose
- Goal 1
- Goal 2
## Keywords
- keyword1
- 中文关键词
## Instructions
You are an expert in [domain].
### Step 1: [First step description]
- Detail 1
- Detail 2
### Step 2: [Second step description]
- Detail 1
### Step 3: Provide Output
Format and structure of the output.
YAML Frontmatter 字段速查
| 字段 | 必需 | 说明 | 例子 |
|---|---|---|---|
| title | 是 | Skill 名称 | “Code Review” |
| version | 是 | 版本号 | “1.0.0” |
| description | 是 | 单行描述 | “Review code quality” |
| author | 是 | 作者名 | “John Doe” |
| category | 否 | 分类 | “code-review” |
| tags | 否 | 标签列表 | [“js”, “quality”] |
| applyTo | 否 | 适用文件 | [“**/*.js”] |
| capabilities | 否 | 能力列表 | [“analyze”] |
Markdown 内容速查
| 字段 | 必需 | 说明 |
|---|---|---|
| # Title | 是 | 一级标题 |
| ## Purpose | 是 | 用途说明(列表形式) |
| ## Keywords | 是 | 关键词(列表形式) |
| ## Instructions | 是 | 执行指令(关键部分) |
| ## Example | 否 | 使用示例 |
常用关键字组合
# 代码审查
keywords:
- code review
- 代码审查
- review
- quality check
# 文档生成
keywords:
- documentation
- 文档
- doc
- auto generate
# 单元测试
keywords:
- unit test
- 单元测试
- test case
- jest
三个最重要的文件
| 文件 | 必需 | 大小指南 | 用途 |
|---|---|---|---|
| SKILL.md | 是 | 200-500 行 | 主要配置和简短指令 |
| .instructions.md | 否 | 100-1000 行 | 详细指令(大型 Skill) |
| README.md | 否 | 50-200 行 | 使用说明和示例 |