- Stars
- 5.9k
- This week
- +70
- Forks
- 455
- Open issues
- 101
- Skills inside
- 114
Get started
Install the skills
npx skills add dotnet/skillsInstalls into Claude Code, Codex, Cursor, OpenCode and the other agents it finds on your machine.
/plugin marketplace add dotnet/skills
/plugin install <plugin>@dotnet-agent-skillsRun inside Claude Code, then pick what to install from /plugin.
git clone --depth 1 https://github.com/dotnet/skills.git /tmp/skills
cp -r /tmp/skills ~/.claude/skills/skillsClaude Code reads ~/.claude/skills/ (or .claude/skills/ in a project). Other agents read the same SKILL.md format from their own skills folder.
Inside this repo
48 of 114 skills
.agents/skills/authoring-github-workflowscreate-custom-agentCreates VS Code custom agent files (.agent.md) for specialized AI personas with tools, instructions, and handoffs. Use when scaffolding new custom agents, configuring agent workflows, or setting up agent-to-agent handoffs..agents/skills/create-custom-agentcreate-skill-testScaffolds eval.yaml evaluation specs for skills, custom agents, and redistributable gh-aw workflow packages in the dotnet/skills repository. Use when creating skill or workflow-package tests, writing evaluation stimuli, defining graders and rubrics, sizing an eval for statistical power, or setting u.agents/skills/create-skill-testcreate-skillScaffolds new agent skills for the dotnet/skills repository. Use when creating a new skill, generating SKILL.md files, writing a skill description that the runtime will actually route to, or setting up skill directory structures. Handles frontmatter generation, section templates, and validation guid.agents/skills/create-skillimprove-skill-qualityDiagnoses and fixes skills in the dotnet/skills repository that lose to their own baseline, fail to activate, time out, or return "no credible improvement". Use when an evaluation verdict is a regression or underpowered, when a skill regressed after a change, when /evaluate reports no results, or wh.agents/skills/improve-skill-qualityagentic-workflowsRoute gh-aw design, creation, diagnosis, patching, active debugging, and upgrade requests to the right strategies..github/skills/agentic-workflowscsharp-scriptsRun file-based C# apps with the .NET CLI when the user explicitly wants C#/.NET code without creating a project. Use for C# language/API experiments, one-file C# apps, small multi-file C# apps composed with `#:include`/`#:exclude`, or C# file-based apps linked with `#:ref`. Do not use for language-aplugins/dotnet-advanced/skills/csharp-scriptsdotnet-pinvokeCorrectly call native (C/C++) libraries from .NET using P/Invoke and LibraryImport. Covers function signatures, string marshalling, memory lifetime, SafeHandle, and cross-platform patterns. USE FOR: writing new P/Invoke or LibraryImport declarations, reviewing or debugging existing native interop coplugins/dotnet-advanced/skills/dotnet-pinvokenuget-trusted-publishingSet up NuGet trusted publishing (OIDC) on a GitHub Actions repo — replaces long-lived API keys with short-lived tokens. USE FOR: trusted publishing, NuGet OIDC, keyless NuGet publish, migrate from NuGet API key, NuGet/login, secure NuGet publishing. DO NOT USE FOR: publishing to private feeds or Azuplugins/dotnet-advanced/skills/nuget-trusted-publishingvectorizationDesign, implement, optimize, and review SIMD code in .NET. USE FOR: vectorizing scalar loops with TensorPrimitives, Vector64/128/256/512, or platform hardware intrinsics; reviewing existing SIMD code, including the generic Vector type, for contract equivalence, tail handling, memory safety, portabilplugins/dotnet-advanced/skills/vectorizationtechnology-selectionGuides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp. Covers the full spectrum from classic ML through modern LLM orchestration to plugins/dotnet-ai/skills/technology-selectionconvert-blazor-server-to-webappGuides conversion of a pre-.NET 8 Blazor Server app into a .NET 8+ Blazor Web App. USE FOR: migrating apps that use AddServerSideBlazor and MapBlazorHub to the AddRazorComponents/MapRazorComponents model, converting _Host.cshtml to an App.razor root component, replacing blazor.server.js with blazor.plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webappdotnet-webapiGuides creation and modification of ASP.NET Core Web API endpoints with correct HTTP semantics, OpenAPI metadata, and error handling. USE FOR: adding new API endpoints (controllers or minimal APIs), wiring up OpenAPI/Swagger, creating .http test files, setting up global error handling middleware. DOplugins/dotnet-aspnetcore/skills/dotnet-webapiauthor-componentCreate or review Blazor components (.razor files) with correct architecture. USE FOR: writing new Blazor components that do NOT involve JavaScript interop, implementing parameters and EventCallback, RenderFragment slots, component lifecycle (OnInitializedAsync, OnParametersSet), async patterns, IAsyplugins/dotnet-blazor/skills/author-componentcollect-user-inputBuild forms, validate data, and react to user input in Blazor. USE FOR adding forms, search boxes, filter panels, inline editing, data-entry UI, file uploads, validation (annotations or custom), handling form submissions, and binding input controls. Covers EditForm, built-in input components, DataAnplugins/dotnet-blazor/skills/collect-user-inputconfigure-authAdd authentication and authorization to a Blazor Web App, accounting for the app's render mode. USE WHEN the user needs [Authorize] on pages, AuthorizeView, role or policy-based access, login/logout Identity pages, or AuthenticationStateProvider. Also USE WHEN auth state is null after WebAssembly loplugins/dotnet-blazor/skills/configure-authcoordinate-componentsShare state between components that don't have a direct parent-child parameter relationship, using cascading values, scoped services with change events, or CascadingValueSource via DI. USE WHEN the user needs a CascadingParameter or CascadingValue that works across render mode boundaries, a shoppingplugins/dotnet-blazor/skills/coordinate-componentscreate-blazor-projectCreate a new ASP.NET Core web application or web site using Blazor. USE FOR: creating a new Blazor web app, scaffolding a new web project, starting a new web site, choosing render modes (Static SSR, Interactive Server, Interactive WebAssembly, Auto), running dotnet new blazor with the right options,plugins/dotnet-blazor/skills/create-blazor-projectfetch-and-send-dataCall APIs, load data into components, and handle the async lifecycle in Blazor. USE FOR fetching data from a backend, submitting data to an API, displaying loading/error states, registering HttpClient, building service abstractions for Auto/WebAssembly render modes. DO NOT USE for form validation (splugins/dotnet-blazor/skills/fetch-and-send-dataplan-ui-changePlan complex Blazor UI features by decomposing them into focused components. USE FOR: building a complex Blazor page with multiple sections, planning component decomposition, designing a multi-section dashboard or layout, breaking down a large UI feature into composable components, pages with sidebaplugins/dotnet-blazor/skills/plan-ui-changesupport-prerenderingMake interactive Blazor components work correctly with prerendering. USE FOR fixing duplicate data loads, UI flicker during prerender-to-interactive handoff, null references during prerender, persisting state across prerender, disabling prerendering, excluding pages from interactive routing, or deteplugins/dotnet-blazor/skills/support-prerenderinguse-igniteui-blazorAdd, configure, or review Ignite UI for Blazor Lite component support in Blazor applications. USE FOR: installing IgniteUI.Blazor.Lite or IgniteUI.Blazor.GridLite, registering AddIgniteUIBlazor() in Blazor Server, WASM, Hybrid, or split Blazor Web App projects, adding @using IgniteUI.Blazor.Controlsplugins/dotnet-blazor/skills/use-igniteui-blazoruse-js-interopAdd, review, or fix JavaScript interop in Blazor components. USE FOR: calling JavaScript from Blazor, calling .NET from JavaScript, collocated .razor.js modules, IJSRuntime, IJSObjectReference lifecycle, DotNetObjectReference, ElementReference, timing rules for when JS is available, IAsyncDisposableplugins/dotnet-blazor/skills/use-js-interopcreate-datadriven-aspnetcoreGenerate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools. Use when (1) adding CRUD pages, views, or API endpoints backed by Entity Framework (EF Core) and a database, plugins/dotnet-data/skills/create-datadriven-aspnetcoreoptimizing-ef-core-queriesReview and optimize application data access that uses Entity Framework Core (EF Core). Use for EF Core performance and correctness reviews of services, repositories, imports, and background jobs: slow or memory-heavy queries, excessive round-trips, hidden SaveChanges, premature materialization, dynaplugins/dotnet-data/skills/optimizing-ef-core-queriesanalyzing-dotnet-performance- Scans .NET code for ~50 performance anti-patterns across async, memory, strings, collections, LINQ, regex, serialization, and I/O with tiered severity classification. Use when analyzing .NET code for optimization opportunities, reviewing hot paths, or auditing allocation-heavy patterns.plugins/dotnet-diag/skills/analyzing-dotnet-performanceandroid-tombstone-symbolicationSymbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI oplugins/dotnet-diag/skills/android-tombstone-symbolicationapple-crash-symbolicationSymbolicate .NET runtime frames in Apple platform .ips crash logs (iOS, tvOS, Mac Catalyst, macOS). Extracts UUIDs and addresses from the native backtrace, locates dSYM debug symbols, and runs atos to produce function names with source file and line numbers. Automatically downloads .dwarf symbols frplugins/dotnet-diag/skills/apple-crash-symbolicationclr-activation-debugging- Diagnoses .NET Framework CLR activation issues using CLR activation logs (CLRLoad logs) produced by mscoree.dll. Use when: the shim picks the wrong runtime, fails to load any runtime, shows unexpected .NET 3.5 Feature-on-Demand (FOD) dialogs, unexpectedly does NOT show FOD dialogs, loads both v2 aplugins/dotnet-diag/skills/clr-activation-debuggingdotnet-trace-collectGuide developers through capturing diagnostic artifacts to diagnose production .NET performance issues. Use when the user needs help choosing diagnostic tools, collecting performance data, or understanding tool trade-offs across different environments (Windows/Linux, .NET Framework/modern .NET, contplugins/dotnet-diag/skills/dotnet-trace-collectdump-collectConfigure and collect crash dumps for modern .NET applications. USE FOR: enabling automatic crash dumps for CoreCLR or NativeAOT, capturing dumps from running .NET processes, setting up dump collection in Docker or Kubernetes, using dotnet-dump collect or createdump. DO NOT USE FOR: analyzing or debplugins/dotnet-diag/skills/dump-collectmicrobenchmarkingActivate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks. Also activate when microbenchmarking .NET code would be useful and BenchmarkDotNet is the likely tool. Consider activating when answering a .NET performance question plugins/dotnet-diag/skills/microbenchmarkingexp-mock-usage-analysisAudits .NET test mock usage by tracing each mock setup through the production code's execution path to find dead, unreachable, redundant, or replaceable mocks. Use when the user asks to audit mock usage, find unused or unnecessary mock setups, check if mocks are needed, reduce mock duplication or ovplugins/dotnet-experimental/skills/exp-mock-usage-analysisexp-test-maintainabilityDetects duplicate boilerplate, copy-paste tests, and structural maintainability issues across .NET test suites. Use when the user asks to reduce repetition, consolidate similar test methods, convert copy-paste tests to data-driven parameterized tests, suggest a better test structure, or identify refplugins/dotnet-experimental/skills/exp-test-maintainabilitydotnet-maui-doctor- Diagnoses and fixes .NET MAUI development environment issues. Validates .NET SDK, workloads, Java JDK, Android SDK, Xcode, and Windows SDK. All version requirements discovered dynamically from NuGet WorkloadDependencies.json — never hardcoded. Use when: setting up MAUI development, build errors meplugins/dotnet-maui/skills/dotnet-maui-doctormaui-app-lifecycle- .NET MAUI app lifecycle guidance — the four app states, cross-platform Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying), platform-specific lifecycle mapping, backgrounding and resume behavior, and state-preservation patterns. USE FOR: "app lifecycle", "windowplugins/dotnet-maui/skills/maui-app-lifecyclemaui-collectionviewGuidance for implementing CollectionView in .NET MAUI apps — data display, layouts (list & grid), selection, grouping, scrolling, empty views, templates, incremental loading, swipe actions, and pull-to-refresh. USE FOR: "CollectionView", "list view", "grid layout", "data template", "item template", plugins/dotnet-maui/skills/maui-collectionviewmaui-data-binding- Guidance for .NET MAUI XAML and C# data bindings — compiled bindings, INotifyPropertyChanged / ObservableObject, value converters, binding modes, multi-binding, relative bindings, fallbacks, and MVVM best practices. USE FOR: setting up compiled bindings with x:DataType, implementing INotifyPropertplugins/dotnet-maui/skills/maui-data-bindingmaui-dependency-injectionGuidance for configuring dependency injection in .NET MAUI apps — service registration in MauiProgram.cs, lifetime selection (Singleton / Transient / Scoped), constructor injection, Shell navigation auto-resolution, platform-specific registrations, and testability patterns. USE FOR: "dependency injeplugins/dotnet-maui/skills/maui-dependency-injectionmaui-safe-area- .NET MAUI safe area and edge-to-edge layout guidance for .NET 10+. Covers the new SafeAreaEdges property, SafeAreaRegions enum, per-edge control, keyboard avoidance, Blazor Hybrid CSS safe areas, migration from legacy iOS-only APIs, and platform-specific behavior for Android, iOS, and Mac Catalystplugins/dotnet-maui/skills/maui-safe-areamaui-shell-navigation- Guide for implementing Shell-based navigation in .NET MAUI apps. Covers AppShell setup, visual hierarchy (FlyoutItem, TabBar, Tab, ShellContent), URI-based navigation with GoToAsync, route registration, query parameters, back navigation, flyout and tab configuration, navigation events, and navigatplugins/dotnet-maui/skills/maui-shell-navigationmaui-theming- Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences. Use when: "dark mode", "light mode", "theming", "AppThemeBinding", "theme switching", "ResourceDictionary theme"plugins/dotnet-maui/skills/maui-themingbinlog-failure-analysisAnalyze MSBuild binary logs to diagnose build failures. USE FOR: build errors that are unclear from console output, diagnosing cascading failures across multi-project builds, tracing MSBuild target execution order, and generally any MSBuild build issues. Requires an existing .binlog file. DO NOT USEplugins/dotnet-msbuild/skills/binlog-failure-analysisbinlog-generationGenerate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding /bl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build inveplugins/dotnet-msbuild/skills/binlog-generationbuild-parallelismAnalyze MSBuild scheduling across at least two distinct projects in a solution/filter/Build.proj. USE FOR: measured idle workers, -m not scaling, serial ProjectReference critical paths, graph builds, MSBuild Projects-list scheduling. DO NOT USE FOR: duplicate executions or invariant-generation racesplugins/dotnet-msbuild/skills/build-parallelismbuild-perf-baselineEstablish MSBuild/.NET baselines before optimizing. USE FOR: unranked slow builds; cold/warm/incremental/no-op measurements; before/after comparisons; CI caching; static graph, artifacts output, dependency graph trimming. DO NOT USE FOR: measured bottlenecks (build-perf-diagnostics), known repeated plugins/dotnet-msbuild/skills/build-perf-baselinebuild-perf-diagnosticsDiagnose MSBuild bottlenecks from binlog timelines and Target/Task Performance Summaries after baseline measurements. USE FOR: unknown build slowness, RAR >5s, analyzers >30% of Csc, a target >50% of build, node utilization below 80%, excessive Copy, restore overhead. DO NOT USE FOR: within-build duplugins/dotnet-msbuild/skills/build-perf-diagnosticscheck-bin-obj-clashFind OutputPath/IntermediateOutputPath collisions between distinct projects or required property/TFM variants. USE FOR: missing/overwritten bin/obj or project.assets.json, parallel 'Cannot create a file when that file already exists' or 'file is being used by another process', shared paths, missing plugins/dotnet-msbuild/skills/check-bin-obj-clashDocumentation
README
.NET Agent Skills
This repository contains the .NET team's curated set of portable skills and host-specific custom agents for coding agents. For information about the Agent Skills standard, see agentskills.io.
[!TIP] Compare skill value: Open the Skill Value dashboard See token use, elapsed time, activation, and not-passed rates by plugin, skill, executor model, and judge model.
Plugin support is component-specific:
- Skills and MCP servers are the portable component types defined by Agent Plugins 1.0.
- Files under
agents/*.agent.mduse GitHub Copilot custom-agent conventions. They are not installed as native OpenAI Codex agents. - Native Codex agents use
.codex/agents/*.toml. This repository does not currently ship them because Codex plugin installation does not place agent files in those discovery locations.
What's Included
| Plugin | Description |
|---|---|
| dotnet | High-level .NET development skills plus C# language server (LSP) integration for hosts that support it. |
| dotnet-advanced | Collection of .NET skills for handling specific .NET tasks for special scenarios. |
| dotnet-data | Skills for .NET data access and Entity Framework related tasks. |
| dotnet-diag | Skills for .NET performance investigations, debugging, and incident analysis. |
| dotnet-msbuild | Comprehensive MSBuild and .NET build skills: failure diagnosis, performance optimization, code quality, and modernization. |
| dotnet-nuget | NuGet and .NET package management: dependency management and modernization. |
| dotnet-upgrade | Skills for migrating and upgrading .NET projects across framework versions, language features, and compatibility targets. |
| dotnet-maui | Skills for .NET MAUI development: environment setup, diagnostics, and troubleshooting. |
| dotnet-ai | AI and ML skills for .NET: technology selection, LLM integration, agentic workflows, RAG pipelines, MCP, and classic ML with ML.NET. |
| dotnet-template-engine | .NET Template Engine skills: template discovery, project scaffolding, and template authoring. |
| dotnet-test | Skills for running, generating, analyzing, and improving .NET tests: test execution, filtering, platform detection, coverage, testability, and MSTest workflows. |
| dotnet-test-migration | Skills and a GitHub Copilot orchestrator agent for migrating .NET test frameworks and platforms: MSTest and xUnit version upgrades, xUnit-to-MSTest conversion, and VSTest to Microsoft.Testing.Platform. |
| dotnet-aspnetcore | ASP.NET Core web development skills including middleware, endpoints, real-time communication, and API patterns. |
| dotnet-blazor | Skills for Blazor development: component authoring, interactivity, and web application patterns. |
| dotnet-winforms | Skills for Windows Forms development: project setup, UI design, data binding, accessibility, and modern .NET practices. |
| dotnet11 | Skills for new .NET 11 APIs and language features. |
Agentic Workflows
Reusable GitHub Agentic Workflows are published under
agentic-workflows/. Install the complete collection with
gh aw add-wizard dotnet/skills/agentic-workflows@main, or install an individual
package using the command in its README.
Installation
🚀 Plugins - Copilot CLI / Claude Code
- Launch Copilot CLI or Claude Code
- Add the marketplace:
/plugin marketplace add dotnet/skills - Install a plugin:
/plugin install <plugin>@dotnet-agent-skills - Restart to load the new plugins
- View available skills:
/skills - View available agents:
/agents - Update plugin (on demand):
/plugin update <plugin>@dotnet-agent-skills
VS Code / VS Code Insiders (Preview)
[!IMPORTANT]
VS Code plugin support is a preview feature and subject to change. You may need to enable it first.
// settings.json
{
"chat.plugins.enabled": true,
"chat.plugins.marketplaces": ["dotnet/skills"]
}
Once configured, type /plugins in Copilot Chat or use the @agentPlugins filter in Extensions to browse and install plugins from the marketplace.
Cursor
This repository is a Cursor plugin marketplace. You can discover and install published plugins directly in Cursor:
- Open the marketplace panel in Cursor
- Search for
.NETor browse cursor.com/marketplace - Install the desired plugins
For local development or unpublished changes, import plugins from a local checkout:
- Copy or symlink your local checkout to
~/.cursor/plugins/local/dotnet-agent-skills - Restart Cursor or run Developer: Reload Window
Codex CLI
Skills in this repository follow the agentskills.io open standard and are compatible with OpenAI Codex.
Codex plugin installs expose the skills and any Codex-compatible MCP servers declared by the
plugin. They do not expose the repository's GitHub Copilot .agent.md files, their static
handoffs, or host-specific LSP declarations. Use Codex's built-in dynamic subagent delegation
instead. Native Codex custom agents are a separate configuration mechanism documented under
multi-agent workflows. OpenAI
Agents SDK handoffs are an
application-level transfer between SDK-defined agents; they are separate from both Copilot's
static UI handoff metadata and Codex plugin or custom-agent packaging.
Plugin marketplace (recommended)
Codex CLI v0.121.0 and later supports a plugin marketplace.
This repository ships a Codex-native marketplace manifest at .agents/plugins/marketplace.json,
so you can register dotnet/skills as a marketplace and install plugins from it directly.
- Add the marketplace:
codex plugin marketplace add dotnet/skills - Launch Codex and open the plugin browser:
/plugins - Browse the
dotnet-agent-skillstab and install the desired plugins. - Update plugins on demand:
codex plugin marketplace upgrade dotnet-agent-skills
Individual skills
You can also install individual skills using the skill-installer CLI with the GitHub URL:
$ skill-installer install https://github.com/dotnet/skills/tree/main/plugins/<plugin>/skills/<skill-name>
Contributing
See CONTRIBUTING.md for contribution guidelines and how to add a new plugin.
License
See LICENSE for details.
Releases