GitHub Copilot 現代化代理程式支援自訂技能,可用來定義組織專屬的遷移模式、內部函式庫使用及編碼標準。 透過運用這些客製化技能,你可以確保組織內部持續現代化,同時運用專有知識。
什麼是自訂技能?
自訂技能依照 代理技能規範 ,教導現代化代理如何利用組織的模式與函式庫執行特定遷移任務。 當你建立現代化計畫時,代理會自動偵測並根據你的遷移提示套用相關的自訂技能。
自訂技能適用於:
- 內部函式庫遷移:切換到組織專屬的 SDK 或框架。
- 重複使用遷移模式:捕捉並重用成功的遷移模式。
自訂技能結構
於檔案 SKILL.md 中定義每個自訂技能,包含:
- YAML 前言:用於技能偵測的元資料。
- 概述:移民情境描述。
- 步驟:為代理提供詳盡的指示。
- 範例程式碼:示範遷移的具體範例。
創建自訂技能
步驟一:建立技能目錄
在你的資料庫中,於 .github/skills/ 下建立一個新資料夾,並使用描述性名稱。
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 領域至關重要。 代理會根據使用者的遷移提示,決定何時應用該技能。 要具體且準確。
很好的描述:
- ✅ 「從 RabbitMQ with AMQP 遷移到 Azure Service Bus 進行訊息傳遞」
- ✅ 「將直接的 JDBC 呼叫替換為 Spring Data 資料庫」
糟糕的描述:
- ❌ 「訊息遷移」(過於模糊)
- ❌ 「更新函式庫」(未具體說明)
- ❌ 「改進程式碼」(目標不明)
步驟三:提供範例及遷移驗證檢查
包含程式碼範例與驗證檢查以指導代理人:
- 程式碼變更:展示使用新方法遷移實作的程式碼片段。
- 設定變更:更新屬性、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 Service Bus。
- 示範使用內部 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"
Troubleshooting
技能未檢測到
問題是:代理人沒有使用你的自訂技能。
解決方案:
- 檢查 YAML 前言裡的技能名稱是否包含空格。 請改用連字號(例如,
my-custom-skill不要my custom skill)。 - 請確認
description是否符合您的提示關鍵字。 - 檢查 YAML 的前置語法。
- 確保
SKILL.md存在於.github/skills/{skill-name}/。 - 讓你的遷移提示更具體。