创建自己的 Skill


什么是 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 步:在开发环境中测试

  1. 在你使用的 IDE(VS Code、JetBrains 等)中打开项目文件夹
  2. 打开 AI 助手的对话窗口(Copilot Chat 或其他)
  3. 输入相关请求,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 行 使用说明和示例


  目录