如何给自己的项目添加一个skill-案例

我们用vs code中的github copilot为例来实战给项目创建一个skill.

首先我们需要了解skill的一些规则:

Skills 的核心优势在于:

  • 可移植性:同一个 Skill 可以在 VS Code、Copilot CLI 和 GitHub.com 上工作

  • 模块化:你可以同时应用多个 Skills

  • 团队共享:通过 .github/skills/ 文件夹可以轻松在团队内部分享

如何编写一个 Skill 案例

第一步:开启 Agent Skills 功能

在 VS Code 中:

  1. 打开设置(Ctrl + ,

  2. 搜索 chat.useAgentSkills

  3. 确保该选项已勾选

第二步:创建 Skill 文件夹结构

在你的项目根目录下创建以下路径:

你的项目根目录/
└── .github/
    └── skills/
        └── your-skill-name/   (例如:code-formatter)
            └── SKILL.md

注意事项

  1. 文件夹名是 .github(注意开头的点)

  2. SKILL.md 文件名必须全大写

  3. 技能名称文件夹(如 code-review)可以任意命名,建议用英文小写加连字符

  4. 完整路径:autotc/.github/skills/你的技能名/SKILL.md

在 VS Code 中打开 autotc 文件夹作为工作区根目录,Copilot 就能自动识别这个路径下的 Skills。

第三步:编写 SKILL.md 文件

这里以一个实用的 "代码审查与格式化" Skill 为例:

---
name: code-review-formatter
description: 对代码进行审查和格式化,修复常见的代码风格问题。当用户说"审查代码""格式化这段代码"时触发。
---

# 代码审查与格式化 Skill

这个 Skill 会自动检查并修复代码中的常见问题。

## 执行步骤

当用户请求代码审查或格式化时,请按以下顺序执行:

1. **检查缩进和空格**
   - 确保使用 4 个空格进行缩进
   - 删除行尾多余的空格
   - 确保文件末尾有一个空行

2. **修复引号风格**
   - 将所有双引号字符串转换为单引号(除非字符串内包含单引号)
   - 确保引号是直引号(' 和 "),而不是弯引号(‘ ’ “ ”)

3. **检查命名规范**
   - 变量和函数名使用 camelCase
   - 常量使用 UPPER_SNAKE_CASE
   - 类和组件名使用 PascalCase

4. **添加必要的注释**
   - 为所有函数添加 JSDoc 风格的注释
   - 注释模板应包含:功能描述、参数说明、返回值说明

5. **生成审查报告**
   - 列出所有已修复的问题
   - 标注需要注意但无法自动修复的问题
   - 给出改进建议

## 示例

用户输入:"审查这段代码"

你的响应应该:
1. 显示修复前后的对比(diff 视图)
2. 等待用户确认后应用更改
3. 输出简洁的审查报告

我的一个实际操作案例;

1.在仓库中创建一个TestDemo.py文件如下:

def getResult(expected, actual):
    if expected == actual:
        return "Test passed"
    else:
        return "Test failed

2.在仓库的这个目录下创建SKILL.md (名字必须是SKILL.md): 

image

---
name: generate-python-pytest-case
description: Generate a pytest test case for a given Python function.
---
# Generate a pytest test case for a given Python function
This skill generates a pytest test case for a specified Python function. It takes the function's name, its parameters, and the expected output to create a test case that can be used to validate the function's behavior.
- testcase model name format: <function_name>_test.py

ps:

--- 这个符号必须是成对出现,并且它就表示这是skill的metadata(元数据),也叫做概要。里面必须包含name和description字段。描述字段要尽量仔细,因为后续你的用户提示词促发到这个description中的描述才会促发这个skill.

3. 在copilot chat中输入用户提示词:

请帮我给TestDemo.py文件生成一个pytest的测试用例

4.查看结果:

4.1最终是git copilot会自动生成一个测试用例文件。

4.2测试用例文件名是: getResult_test.py (之所以生成这个测试用例文件名,是由于我在SKILL.md中设置了生成测试用文件的模式:- testcase model name format: <function_name>_test.py)

4.3 生成的测试用例文件内容如下:

 

import pytest

from TestDemo import getResult


@pytest.mark.parametrize(
    "expected, actual, result",
    [
        (10, 10, "Test passed"),
        (10, 8, "Test failed: expected 10, got 8"),
        ("ok", "ok", "Test passed"),
        ("ok", "no", "Test failed: expected ok, got no"),
    ],
)
def test_getResult(expected, actual, result):
    assert getResult(expected, actual) == result

 

image

 4.4 运行这个测试用例结果:

image

  ps:

如果我没有写这个SKILL.md的话,相同的提示词它生成的测试用例文件名会不同,生成的测试用例的内容也会有所不一样。

反正规则就是,你定义了哪样的SKILL,当你的用户提示词触发到这个SKILL时就能按照这个skill定义的内容给你执行。不需要你每次都在用户提示词中去写一堆提示词约束了。就会很节省token,帮你省钱。

第四步:使用 Skill

  1. 保存 SKILL.md 文件

  2. 在 VS Code 中打开 Copilot Chat(Ctrl + Shift + I

  3. 输入与 Skill 描述匹配的命令,例如 "审查这段代码"。 这个关键字就是触发你的skill中的metadata(元数据)中的description中设置的关键字的关键词。如果你的用户提示词没有触发到skill的元数据的description中的任何描述信息,那么就不会触发读取并执行这个skill.

  4. Copilot 会自动识别并执行你的 Skill。

团队共享 Skill

你可以通过以下方式与团队分享 Skills:

  1. 将 .github/skills/ 文件夹提交到 Git 仓库

  2. 团队成员拉取代码后,Skills 会自动出现在他们的 Copilot 中

  3. 也可以直接复制 Skill 文件夹分享给他人

注意事项

  • Skills 目前是实验性功能,可能还在持续优化中

  • 确保你的 VS Code 版本 ≥ 1.106

  • Skill 文件夹必须放在项目根目录的 .github/skills/ 下

  • SKILL.md 中的 name 和 description 字段是必填的,Copilot 靠它们来识别何时调用该 Skill

 
 
posted @ 2026-04-17 14:35  苹果芒  阅读(642)  评论(0)    收藏  举报