微軟 .NET 團隊展示 Markout 0.40.0 時,NuGet 快取裡已出現五份 SKILL.md,技能檔也標有 version: 0.40.0。新版套件因此能附上對應版本的 Markdown 輸出與功能指引,處理函式庫 API 更新快於模型既有知識的落差;但檔案進入快取,不代表程式代理已讀取。團隊如何找到這些技能,再讓代理在任務中採用,才是導入時要回答的問題。.NET 團隊的 Markout 示範呈現了這個情境。

NuGet Agent Skills 要解決什麼版本落差?

它把程式代理可讀的技能指引放進 NuGet 套件,讓文件有機會隨函式庫版本更新。這能提供較貼近目前 API 的背景,但不保證代理一定選到正確技能或產生正確程式碼。iThome 報導也指出,套件下載後仍須由代理或配套工具找到並讀取技能檔。

程式代理常根據模型訓練時學到的資訊回答;新套件的 API 可能晚於訓練資料才發布,冷門套件也可能沒有足夠的既有知識。代理即使能從套件快取讀 README,或反射(檢視程式組件的型別與中繼資料)推敲 API,也要花額外步驟和上下文。微軟 .NET 團隊的說法是,讓技能與二進位套件一起交付,可提供更即時的使用指引;這是設計機會,成效仍要靠任務評估驗證。官方文章也說明技能的版本綁定構想。

這和專案內的通用代理指令不同。通用指令通常描述整個程式庫或團隊的規則;套件技能可以只涵蓋某個套件的 API、慣用模式、常見錯誤與工作流程。Agent Skills 的基本格式是含 YAML 標頭與 Markdown 指令的 SKILL.md,也可附帶參考文件或腳本。Agent Skills 規格定義檔案格式,NuGet 則負責把這些檔案與函式庫一併散布。若想了解技能跨代理使用時要檢查什麼,可參考 Agent Skills 跨平台驗收的相容性檢查;此處要處理的核心則是技能內容如何對應套件版本。

技能怎麼跟著 NuGet 套件發布?

維護者把 SKILL.md 納入套件內容,套件依既有版本號封裝、發布與還原。消費者取得套件後,還要用能辨識技能的工具找到它,再決定如何提供給代理。

第一個案例是 Markout 套件本身:.NET 團隊文章展示 0.40.0 版本含五份技能檔,建置後的 project.assets.json 列出技能路徑,作者的本機 NuGet 快取也能找到檔案,標頭版本為 0.40.0。結果是套件還原後,使用者能依套件版本定位對應指引;這只證明檔案隨套件交付,沒有證明代理會自動啟用它。Markout 套件示範。NuGet 一般封裝機制本來就能收納額外檔案,因此維護者可將技能加入建置輸出與套件清單;NuGet 封裝文件說明一般檔案的納入方式。

第二個案例是 .NET 團隊文章中的 Mockly 示範:作者建立一個測試用的 .NET 專案並加入 Mockly 1.13.0,再用 dotnet-inspect 掃描專案相依。工具列出 skills/mockly/SKILL.md,並呈現它適用於模擬 HTTP 呼叫、設定回應及撰寫測試。這個結果讓開發者能從專案實際引用的套件找到技能;探索能力來自 dotnet-inspect,並非所有代理都內建。Mockly 專案探索示範。

第三個案例是作者在 dotnet-inspect 方案中執行 dotnet-package-skills install:工具掃描 23 個直接相依套件,從 Markout 0.40.1 複製五份技能到 .agents/skills,之後作者將這些檔案加入版控。結果是專案目錄中有可供代理讀取的技能副本,但套件升版後仍須重新抽取並更新;這呈現另一種整合取捨,來源套件更新不會自動同步到已提交的副本。技能複製與版控示範。

套件還原後,探索工具找到技能檔,再由安裝步驟複製到專案技能目錄
套件還原只讓技能檔抵達本機,探索與複製仍需要工具或明確操作。

因此,NuGet 負責版本化和分發,探索工具負責列出或抽取技能,代理產品則決定是否支援該目錄與如何選用。加入套件參考後,代理不一定就會理解新版 API。另一條路徑是以 C# 類別建構 Agent Framework 技能,再透過 NuGet 發布給應用程式執行階段載入;它與函式庫套件內放 SKILL.md 的做法相近,但整合位置不同。Microsoft Learn 的 Agent Skills 文件列出兩種路徑。

交付方式技能抵達代理的步驟維護時要確認
函式庫套件內放 SKILL.md代理或探索工具找到並讀取檔案是否隨套件版本更新
複製到專案技能目錄工具抽取後,由專案納入版控套件升版時是否同步重抽
Agent Framework 類別技能應用程式加入套件並註冊載入執行階段的設定及權限

“Skills delivered via NuGet packages don’t change much.”(以 NuGet 套件交付技能的做法本身變化不大;目前仍要找出如何以合理成本提供高品質技能,並確認它是否帶來價值。)(Richard Lander,.NET Blog)

版本綁定能改善什麼,又有哪些限制?

版本綁定可以讓正確指引更容易和相依套件一同取得;它不能單獨確保代理發現、載入或遵循指引。是否改善產碼,要檢查套件版本、技能選取與輸出結果。

受益情境包括新 API 剛發布、文件中的範例容易過期,或冷門函式庫缺乏模型訓練資料。若舊版技能留在新版本套件中,內容也可能誤導;若多個相依套件提供相似技能,代理還要辨認哪個套件、版本與任務相符。NuGet 套件解析能決定專案相依的套件版本,卻不等於代理一定會解析技能的相容性。版本選取、衝突處理與不同代理環境的探索規則,仍要依實際工具文件和專案設定確認。

維護成本也不會因為把 Markdown 放進 .nupkg 就消失。函式庫維護者要在 API 改動時檢視技能是否同步,讓技能的版本標記與套件版本一致,並為仍在支援的舊版保留正確指引。技能若包含過時範例或不安全指令,套件散布反而會擴大影響。微軟 .NET 團隊提醒,技能可能提升任務效果,也可能增加成本或導致更差結果;維護者需以評測判斷是否值得保留。

“only use packages from maintainers you trust”(只使用你信任的維護者所發布的套件。)(.NET Blog) 安全面也需要納入審查。SKILL.md 是代理會讀取的指令,可能要求它執行命令、參考資源或改動檔案。套件簽章、來源、授權與建置流程原本就要檢查;技能加入後,還應檢查文字指令、腳本和外部連結。台灣團隊可先確認內部 NuGet feed 的套件審核者是否也負責技能內容,避免程式碼審查只看 DLL,忽略了代理會遵循的 Markdown。

目前公開的示範呈現的是檔案如何隨套件交付、如何被工具探索或複製,尚未建立所有代理都會自動選取技能的共同機制。這也讓成效驗證不能只看「套件裡有沒有 SKILL.md」,而要看代理在指定工作中是否載入符合版本的內容、是否減少錯誤,以及額外指令是否增加成本。技能評估結果應按模型、任務與套件版本分開記錄,不能把單次成功推廣成普遍效果。

團隊導入前可以怎麼評估?

先挑一個版本變動頻繁且有明確測試任務的套件,再確認技能如何打包、被誰發現、何時更新,最後用相同任務比較代理是否改善。

  1. 選定套件與任務:找一個 API 常更新、團隊已在使用的 NuGet 套件,挑選可重複執行的實際工作,例如產生某類查詢或撰寫單元測試。
  2. 檢查封裝內容:在套件建置與發布檢查中確認 SKILL.md 有被納入,標示的適用套件與版本清楚,並能追溯到原始碼及審查紀錄。
  3. 走過發現流程:分別確認代理是直接讀套件快取、由工具列出,還是先複製到專案目錄;記下還原後是否仍需手動啟用或提交檔案。
  4. 測試版本匹配:對照至少一個舊版和新版任務,檢查代理取得的技能版本是否和專案實際相依版本相符,也測試多個套件提供同名或重疊技能時的選擇結果。
  5. 比較品質與成本:使用相同代理、任務和驗收條件,記錄錯誤、人工修正量、耗時與 token 使用;若品質沒有改善或成本增加,應修訂或移除技能。
  6. 指定維護責任:明定誰負責 API 變更時更新技能、誰審核指令與腳本、如何處理舊版,以及發布失誤後如何撤回或修正。
評估表列出 API 任務、技能版本匹配、測試結果、人工修正與 token 成本
有系統地記錄品質與成本,才能判斷版本相符的技能是否真的改善任務表現。

這類試行能回答團隊自己的問題:技能是否真的讓代理依照目前版本工作,而非只是把文件搬到套件裡。正在評估導入的 .NET 團隊,可先從一個常變動套件開始,追蹤「版本標記、技能選取、產碼驗收、維護負責人」四個環節。相關的程式代理交付評估方法也提醒,代理產出要放進實際軟體交付流程檢視;

  • NuGet 可讓技能檔與函式庫套件一起版本化、散布,但不保證代理會自動載入。
  • dotnet-inspect 展示技能探索,dotnet-package-skills 展示複製到專案目錄;兩者都涉及代理端與專案流程。
  • 導入效果取決於版本匹配、技能品質、代理支援、評測方式與維護責任。

常見問題

Q1:NuGet 還原套件後,程式代理就會自動讀取技能嗎?

不一定。還原會把套件檔案下載到本機,但代理是否能探索技能、何時載入,取決於代理本身與額外工具或專案設定。微軟展示的流程包括列出技能及複製到專案技能目錄。

Q2:技能版本一定要和 NuGet 套件版本相同嗎?

示範中的 Markout 技能使用與套件相符的版本標記,這有助於追蹤指引適用範圍。團隊仍須決定版本政策,並在套件升版時驗證技能內容;目前的示範不能視為所有套件都必須採用的規範。

Q3:把技能放進套件,就能避免代理使用過時 API 嗎?

不能保證。版本相符的指引可以降低代理只能依賴舊知識的機會,但代理仍可能沒載入技能、選錯套件,或不遵循指令。應以實際程式任務與測試結果驗收。

Q4:套件技能和 Agent Framework 的 NuGet 技能是一樣的嗎?

兩者都以 NuGet 發布技能內容,但交付形式和使用流程不同。函式庫套件內的 SKILL.md 需由工具發現或複製;Agent Framework 也支援以 C# 類別封裝技能,供框架執行階段載入,應依應用架構分別評估。

參考文獻

  1. Richard Lander (2026). Delivering Skills in NuGet packages. Microsoft .NET Blog. https://devblogs.microsoft.com/dotnet/delivering-skills-in-nuget-packages/
  2. Microsoft (2026). Agent Skills. Microsoft Learn. https://learn.microsoft.com/en-us/agent-framework/agents/skills
  3. agentskills.io contributors (2026). Specification. Agent Skills. https://github.com/agentskills/agentskills/blob/main/docs/specification.mdx
  4. 李建興 (2026). 微軟展示NuGet套件封裝代理技能,開發指引可對應函式庫版本. iThome. https://www.ithome.com.tw/news/180214
  5. Microsoft (2021). .nuspec File Reference for NuGet. Microsoft Learn. https://learn.microsoft.com/en-us/nuget/reference/nuspec