创建自己的 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 行 使用说明和示例


  目录