GitHub Copilot 现代化代理支持自定义技能,可用于定义组织特定的迁移模式、内部库使用情况和编码标准。 通过使用这些自定义技能,可以在使用专有知识的同时确保整个组织的现代化一致。
什么是自定义技能?
自定义 技能遵循代理技能规范 ,指导现代化代理如何使用组织的模式和库执行特定的迁移任务。 创建现代化计划时,代理会根据迁移提示自动检测并应用相关的自定义技能。
自定义技能适用于:
- 内部库迁移:切换到特定于组织的 SDK 或框架。
- 重复使用迁移模式:捕获和重复使用成功的迁移模式。
自定义技能结构
请在 SKILL.md 文件中定义每个自定义技能:
- YAML 前置内容:技能检测的元数据。
- 概述:迁移方案的说明。
- 步骤:为代理人提供的详细说明。
- 示例代码:演示迁移的具体示例。
创建自定义技能
步骤 1:创建技能目录
在存储库的
mkdir -p .github/skills/my-migration-pattern
步骤 2:写入 SKILL.md 文件
使用以下部分所示的结构创建 .github/skills/my-migration-pattern/SKILL.md 。
所需的前置信息字段
---
name: my-migration-pattern
description: A concrete description of what this skill helps migrate
---
重要提示:字段 description 至关重要。 代理使用它来确定何时根据用户的迁移提示应用技能。 使其更具体且准确。
优良的描述:
- ✅ “使用 AMQP 从 RabbitMQ 迁移到 Azure 服务总线进行消息传输”
- ✅ “将直接 JDBC 调用替换为 Spring Data 存储库”
不良描述:
- ❌ “消息传递迁移”(太模糊)
- ❌ “更新库”(不具体)
- ❌ “改进代码”(目标不清楚)
步骤 3:提供示例和迁移验证检查
包括代码示例和验证检查,以指导代理:
- 代码更改:代码片段显示使用新方法迁移的实现。
- 配置更改:对属性、XML 或其他配置文件的更新。
- 依赖项更改:迁移所需的 Maven、Gradle 或 NuGet 更新。
- 验证检查:应用迁移后代理应验证的条件。
还可以在技能目录中提供资源文件,并告知代理如何在文件内容 SKILL.md 中使用它们。
使用自定义技能
自动检测
在您创建现代化计划后,代理会自动:
- 扫描
.github/skills/以查找自定义技能。 - 将迁移提示与技能说明进行比较。
- 将相关技能纳入计划。
- 使用专业技能引导代码转换过程。
例:
# Agent will automatically detect and use the RabbitMQ skill
modernize plan create "migrate from rabbitmq to azure service bus"
手动验证
验证检测到哪些技能:
使用提示创建计划。
审阅
.github/modernization/{plan-name}/tasks.json。查找对自定义技能的引用:
"skills": [ { "name": "your-skill-name", "location": "project" } ]
如果未检测到技能:
- 优化技能
description以更好地匹配提示。 - 使提示更具体。
- 确保
SKILL.md格式正确。
示例存储库
有关完整示例,请参阅 NewsFeedSite 示例存储库,其中包括:
- RabbitMQ 到 Azure 服务总线迁移的自定义技能。
- 演示如何使用内部 JDK 库。
- 显示适当的技能结构和格式。
克隆并探索:
git clone https://github.com/Azure-Samples/NewsFeedSite.git
cd NewsFeedSite
ls -la .github/skills/
modernize plan create "migrate from rabbitmq to azure service bus"
故障排除
未检测到技能
问题:代理不使用自定义技能。
解决方法:
- 检查 YAML 前端中的技能名称是否不包含空格。 请改用连字符(例如,
my-custom-skill而不是my custom skill)。 - 验证是否
description与提示关键字匹配。 - 检查 YAML 前端语法。
- 确保
SKILL.md位于.github/skills/{skill-name}/中。 - 使迁移提示更具体。