{"id":136370,"date":"2026-03-09T20:30:00","date_gmt":"2026-03-09T20:30:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=59673"},"modified":"2026-03-09T20:30:00","modified_gmt":"2026-03-09T20:30:00","slug":"extend-your-coding-agent-with-net-skills","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2026\/03\/09\/extend-your-coding-agent-with-net-skills\/","title":{"rendered":"Extend your coding agent with .NET Skills"},"content":{"rendered":"<p>Coding agents are becoming part of everyday development, but quality of responses<br \/>\nand usefulness still depends on the best context as input. That context comes in<br \/>\ndifferent forms starting from your environment, the code in the workspace, the<br \/>\nmodel training knowledge, previous memory, agent instructions, and of course<br \/>\nyour own starting prompt. On the .NET team we\u2019ve really adopted coding agents as<br \/>\na part of our regular workflow and have, like you, learned the ways to improve<br \/>\nour productivity by providing great context. Across our repos we\u2019ve adopted our<br \/>\nagent instructions and have also started to use agent skills to improve our<br \/>\nworkflows. We\u2019re introducing <a href=\"https:\/\/github.com\/dotnet\/skills\">dotnet\/skills<\/a>,<br \/>\na repository that hosts a set of agent skills for .NET developers from the team<br \/>\nwho is building the platform itself.<\/p>\n<h2>What is an agent skill?<\/h2>\n<p>If you\u2019re new to the concept, an agent skill is a lightweight package with specialized knowledge an agent can discover and use while solving a task. A skill bundles intent,<br \/>\ntask-specific context, and supporting artifacts so the agent can choose better<br \/>\nactions with less trial and error. This work follows the<br \/>\n<a href=\"https:\/\/agentskills.io\">Agent Skills specification<\/a>, which defines a common<br \/>\nmodel for authoring and sharing these capabilities with coding agents. GitHub Copilot CLI, VS Code, Claude Code and other coding agents support this specification.<\/p>\n<h2>What we are doing with <code>dotnet\/skills<\/code><\/h2>\n<p>With <code>dotnet\/skills<\/code>, we\u2019re publishing skills from the team that ships the platform.<br \/>\nThese are the same workflows we\u2019ve used ourselves, with first-party teams, and<br \/>\nin engineering scenarios we\u2019ve seen in working with developers like yourself.<\/p>\n<p>So what does that look like in practice? You\u2019re not starting from generic<br \/>\nprompts. You\u2019re starting from patterns we\u2019ve already tested while shipping<br \/>\n.NET.<\/p>\n<p>Our goal is practical: ship skills that help agents complete common .NET tasks<br \/>\nmore reliably, with better context and fewer dead ends.<\/p>\n<h3>Does it help?<\/h3>\n<p>While we\u2019ve learned that context is essential, we also have learned not to assume<br \/>\nmore is always better. The AI models are getting remarkably better each release<br \/>\nand what was thought to be needed even 3 months ago, may no longer be required<br \/>\nwith newer models. In producing skills we want to measure the validity if an<br \/>\nadded skill actually improves the result. For each of our skills merged, we run<br \/>\na lightweight validator (also available in the repo) to score it. We\u2019re also learning the best graders\/evals for this type\u2026and so is the ecosystem as well.<\/p>\n<p>Think of this as a unit test for a skill, not an integration test for the<br \/>\nwhole system. We measure (using a specific model each run) against a baseline (no skill present) and try to score if the specific skill improved the intended behavior, and by how much. Some of this is taste as well so we\u2019re careful not to draw too many hard lines on a specific number, but look at the result, adjust and re-score.<\/p>\n<p>Each skill\u2019s evaluation lives in the repository as well, so<br \/>\nyou can inspect and run them. This gives us a practical signal on usefulness<br \/>\nwithout waiting for large end-to-end benchmark cycles. We will continue to learn in this space and adjust. We have a lot of partner teams trying different evaluation techniques as well at this level. The real test is you telling us if they have improved.<\/p>\n<p>A developer posted this just recently on Discord sharing what we want to see:<\/p>\n<blockquote>\n<p><em>The skill just worked with the log that I\u2019ve with me, thankfully it was smartter[sic] than me and found the correct debug symbol. At the end it says the crash is caused by a heap corruption and the stack-trace points to GC code, by any chance does it ring a bell for you?<\/em><\/p>\n<\/blockquote>\n<p>This is a great example of how a skill accelerated to the next step rapidly in this particular investigation for this developer. This is the true definition of success in unblocking and accelerating productivity.<\/p>\n<h2>Discovery, installation, and using skills<\/h2>\n<p>Popular agent tools have adopted the concept of<br \/>\n<a href=\"https:\/\/docs.github.com\/en\/copilot\/how-tos\/copilot-cli\/customize-copilot\/plugins-marketplace#creating-a-plugin-marketplace\">plugin marketplaces<\/a><br \/>\nwhich simply put are a registry of agent artifacts, like skills. The<br \/>\n<a href=\"https:\/\/docs.github.com\/en\/copilot\/reference\/cli-plugin-reference#pluginjson\">plugin definition<\/a><br \/>\nserves as an organizational unit and defines what skills, agents, hooks, etc.<br \/>\nexist for that plugin in a single installable package. The <code>dotnet\/skills<\/code> repo<br \/>\nis organized in the same manner, with the repo serving as the marketplace and we<br \/>\nhave organized a set of plugins by functional areas. We\u2019ll continue to define<br \/>\nmore plugins as they get merged and based on your feedback.<\/p>\n<p>While you can simply copy the SKILL.md files directly to your environment, the<br \/>\nplugin concept in coding agents like GitHub Copilot aim to make that process simpler.<br \/>\nAs noted in the<br \/>\n<a href=\"https:\/\/github.com\/dotnet\/skills?tab=readme-ov-file#-plugins---copilot-cli--claude-code\">README<\/a>,<br \/>\nyou can register the repo as a marketplace and browse\/install the plugins.<\/p>\n<pre><code class=\"language-bash\">\/plugin marketplace add dotnet\/skills<\/code><\/pre>\n<p>Once the marketplace is added, then you can browse any marketplace for a set of plugins to install and install the named plugin:<\/p>\n<pre><code class=\"language-bash\">\/plugin marketplace browse dotnet-agent-skills\n\/plugin install &lt;plugin&gt;@dotnet-agent-skills<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/03\/extend-your-coding-agent-with-net-skills.gif\" alt=\"Copilot CLI browsing plugin marketplace and installing a plugin via the CLI\"><\/p>\n<p>They are now available in your environment automatically by your coding agent, or you can also invoke them explicitly.<\/p>\n<pre><code class=\"language-bash\">\/dotnet:analyzing-dotnet-performance<\/code><\/pre>\n<p>And in VS Code you can add the marketplace URL into the <a href=\"\/\/settings\/chat.plugins.marketplaces\">Copilot extension settings for Insiders<\/a>, adding <code>https:\/\/github.com\/dotnet\/skills<\/code> as the location and then you can browse in the extensions explorer to install, and then directly execute in Copilot Chat using the slash command:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/03\/extend-your-coding-agent-with-net-skills-1.gif\" alt=\"Browsing agent plugins in the Extension marketplace\"><\/p>\n<p>We acknowledge that discovery of even marketplaces can be a challenge and are<br \/>\nworking with our own Copilot partners and ecosystem to better understand ways to<br \/>\nimprove this discovery flow \u2014 it\u2019s hard to use great skills if you don\u2019t know<br \/>\nwhere to look! We\u2019ll be sure to post more on any changes and possible .NET<br \/>\nspecific tools to help identify skills that will make your project and developer<br \/>\nproductivity better.<\/p>\n<h2>Starting principles<\/h2>\n<p>Like evolving standards in the AI extensibility space, skills is fast moving. We<br \/>\nare starting with the principle of simplicity first. We\u2019ve seen in our own uses<br \/>\nthat a huge set of new tools may not be needed with well scoped skills<br \/>\nthemselves. Where we need more, we\u2019ll leverage things like MCP or scripts, or<br \/>\nSDK tools that already exist and rely on them to enhance the particular skill<br \/>\nworkflow. We want our skills to be proven, practical, and task-oriented.<\/p>\n<p>We also know there are great community-provided agent skills that have evolved,<br \/>\nlike <a href=\"https:\/\/github.com\/github\/awesome-copilot\"><code>github\/awesome-copilot<\/code><\/a> which<br \/>\nprovide a lot of value for specific libraries and architectural patterns for .NET<br \/>\ndevelopers. We support all these efforts as well and don\u2019t think there is a \u2018one<br \/>\nwinner\u2019 skills marketplace for .NET developers. We want our team to keep focused<br \/>\nclosest to the core runtime, concepts, tools, and frameworks we deliver as a<br \/>\nteam and support and learn from the community as the broader set of agentic<br \/>\nskills help all .NET developers in many more ways. Our skills are meant to<br \/>\ncomplement, not replace any other marketplace of skills.<\/p>\n<h2>What\u2019s next<\/h2>\n<p>The AI ecosystem is moving fast, and this repository will too. We\u2019ll iterate<br \/>\nand learn in the open with the developer community.<\/p>\n<p>Expect frequent updates, new skills, and continued collaboration as we improve<br \/>\nhow coding agents work across .NET development scenarios.<\/p>\n<p>Explore <code>dotnet\/skills<\/code>, try the skills in your own workflows, and <a href=\"https:\/\/github.com\/dotnet\/skills\/issues\">share<br \/>\nfeedback<\/a> on things that can improve or new ideas we should consider.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coding agents are becoming part of everyday development, but quality of responses and usefulness still depends on the best context as input. That context comes in different forms starting from your environment, the code in the workspace, the model training knowledge, previous memory, agent instructions, and of course your own starting prompt. On the .NET [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":136371,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66],"tags":[103,1567,280,403,1568,1569,653,69],"class_list":["post-136370","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-webdev","tag-net","tag-agent-skills","tag-ai","tag-c","tag-coding-agents","tag-copilot","tag-debugging","tag-performance"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/136370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=136370"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/136370\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/136371"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=136370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=136370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=136370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}