
Dotnet
- 44 installs
- 466 repo stars
- Updated July 25, 2026
- managedcode/dotnet-skills
Helps with ai & agent building tasks.
About
dotnet is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- dotnet
- AI & Agent Building
- AI-coding skill
Dotnet by the numbers
- 44 all-time installs (skills.sh)
- +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #7,794 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/managedcode/dotnet-skills --skill dotnetAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 44 |
|---|---|
| repo stars | ★ 466 |
| Last updated | July 25, 2026 |
| Repository | managedcode/dotnet-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
.NET Router Skill
Trigger On
- the user asks for general
.NEThelp without naming a narrower framework or tool - implementing, debugging, reviewing, or refactoring C# or
.NETcode in a repo with multiple app models or frameworks - deciding which
.NETskill should own a task before editing code - tasks that combine platform work with testing, quality, architecture, setup, or migration decisions
Workflow
1. Detect the real stack first:
- target frameworks and SDK version
LangVersion- project SDKs and workload hints
- hosting model and app entry points
- test framework and runner
- analyzers, formatters, coverage, and CI quality gates
2. Route to the narrowest platform skill as soon as the stack is known:
- Web:
aspnet-core,minimal-apis,web-api,blazor,signalr,grpc - Cloud and hosting:
aspire,azure-functions,worker-services - Desktop and client:
maui,wpf,winforms,winui - Data and distributed:
entity-framework-core,entity-framework6,orleans - AI and agentic:
semantic-kernel,microsoft-extensions-ai,microsoft-agent-framework,mlnet,mixed-reality - Legacy:
legacy-aspnet,wcf,workflow-foundation
3. Route cross-cutting work to the companion skill instead of keeping it inside generic .NET advice:
- project bootstrap or repo shape:
project-setup,architecture - frontend asset analysis in mixed
.NETplus Node repos:eslint,stylelint,htmlhint,webhint,biome,sonarjs,metalint,chous - code review:
code-review - language features:
modern-csharp - testing:
tunit,xunit,mstest - format, analyzers, coverage, and CI:
format,code-analysis,quality-ci,coverlet,reportgenerator - maintainability and architecture rules:
complexity,netarchtest,archunitnet
4. If more than one specialized skill applies, prefer the one closest to the user-visible behavior first, then pull in the quality or tooling skill second. 5. Do not stop at this skill once a narrower match exists. This skill should classify and hand off, not become a generic dumping ground. 6. After code changes, validate with the repository's actual build, test, and quality workflow instead of generic .NET commands.
Current Upstream Notes
.NET 9.0.17runtime and ASP.NET Core releases are servicing updates. Treat them as patch validation work unless the repo shows a concrete affected area such as WebSocket frame handling, JIT loop cloning, QUIC/MsQuic, or Linux CRL caching..NET SDK 8.0.422belongs to the 8.0.28 servicing train. Use it for repos pinned to .NET 8, but do not infer modern C# or .NET 10 language availability from that SDK line.- The refreshed "Build apps with .NET" Learn page remains broad routing context; still hand off to
project-setup,worker-services,aspnet-core,modern-csharp, or another narrow skill as soon as the app model is known.
Routing Heuristics
- If the repo contains
Microsoft.NET.Sdk.Web, start from a web skill, not generic.NET. - If the repo contains Blazor, Razor Components, or
.razorpages, preferblazor. - If the repo contains
package.json, frontend lint configs, or browser-facing asset pipelines inside the.NETsolution, prefer the dedicated frontend analysis skills instead of generic.NET. - If the repo contains Orleans grains or silo hosting, prefer
orleans. - If the repo is mostly analyzers, CI, or coverage work, prefer the quality skill directly.
- If the user asks about “which skill should I use?”, answer with the narrowest matching skill and explain why in one short sentence.
- If no narrower skill matches, keep the work here and stay explicit about the missing specialization.
Deliver
- the correct specialized skill choice for the task
- repo-compatible code or documentation changes that stay aligned with the detected stack
- validation evidence that matches the real project runner and quality toolchain
Validate
- the chosen downstream skill actually exists in the catalog
- platform assumptions match project SDKs, packages, and workloads
- generic guidance has been replaced by framework-specific guidance whenever possible
- runner-specific commands are not mixed incorrectly
- language or runtime features are only used when the repo supports them
Documentation
References
- references/routing.md - Decision tree for routing tasks to specialized .NET skills, including app model classification and cross-cutting concern handling.
- references/detection.md - Project detection patterns for identifying SDK types, target frameworks, workloads, language versions, and app models.
{
"version": "1.0.3",
"category": "Core"
}
Project Detection Patterns
This reference defines detection patterns for identifying .NET project characteristics including SDK types, target frameworks, workloads, and app models.
SDK Detection
Project SDK Types
Detect the SDK from the <Project Sdk="..."> attribute in .csproj/.fsproj/.vbproj files:
| SDK | Indicates |
|---|---|
Microsoft.NET.Sdk | Class library or console app |
Microsoft.NET.Sdk.Web | ASP.NET Core web app |
Microsoft.NET.Sdk.BlazorWebAssembly | Blazor WebAssembly app |
Microsoft.NET.Sdk.Razor | Razor class library |
Microsoft.NET.Sdk.Worker | Worker service |
Microsoft.NET.Sdk.WindowsDesktop | WPF or WinForms (legacy SDK style) |
Aspire.AppHost.Sdk | Aspire app host |
Aspire.ServiceDefaults.Sdk | Aspire service defaults |
SDK Version Detection
Check global.json for SDK version constraints:
{
"sdk": {
"version": "10.0.100",
"rollForward": "latestMinor"
}
}Key SDK version ranges:
10.0.x- .NET 10 (LTS, supported until November 2028)9.0.x- .NET 9 (STS, supported until November 2026)8.0.x- .NET 8 (LTS, supported until November 2026)7.0.x- .NET 7 (end of support)6.0.x- .NET 6 (end of support)5.0.x- .NET 5 (end of support)3.1.x- .NET Core 3.1 (end of support)
Target Framework Detection
Target Framework Monikers (TFM)
Detect from <TargetFramework> or <TargetFrameworks> in project files:
| TFM Pattern | Platform |
|---|---|
net10.0, net9.0, net8.0, net7.0, net6.0 | Modern .NET |
net10.0-windows, net9.0-windows, net8.0-windows | Windows-specific workload |
net10.0-ios, net10.0-android, net10.0-maccatalyst, net10.0-browser | MAUI/mobile or browser workloads |
netstandard2.0, netstandard2.1 | .NET Standard library |
netcoreapp3.1, netcoreapp2.1 | Legacy .NET Core |
net48, net472, net461 | .NET Framework |
Multi-Targeting
Projects with <TargetFrameworks> (plural) target multiple platforms:
<TargetFrameworks>net10.0;net10.0-windows;net10.0-ios;net10.0-android</TargetFrameworks>Workload Detection
Installed Workloads
Check installed workloads via:
dotnet workload listProject-Implied Workloads
| Indicator | Workload |
|---|---|
TFM contains -ios, -android, -maccatalyst | maui or individual platform workloads |
TFM contains -browser | wasm-tools |
Package Aspire.Hosting | aspire |
Package Microsoft.WindowsAppSDK | windowsdesktop |
Workload Manifest Files
Check for workload requirements in:
.config/dotnet-tools.json- local toolsDirectory.Build.props- workload version pinsNuGet.config- custom feeds for preview workloads
Language Version Detection
LangVersion Property
Detect from <LangVersion> in project files or Directory.Build.props:
| Value | Language Version |
|---|---|
latest | Highest version for TFM |
preview | Preview features enabled |
14.0, 13.0, 12.0, 11.0 | Explicit version |
default | SDK default |
Implicit Language Version
When <LangVersion> is not specified, the SDK sets it based on TFM:
net10.0implies C# 14net9.0implies C# 13net8.0implies C# 12net7.0implies C# 11net6.0implies C# 10
App Model Detection
Web Apps
Look for these indicators:
ASP.NET Core general:
Program.cswithWebApplication.CreateBuilderStartup.cswithConfigureServices/Configureappsettings.json,appsettings.Development.jsonwwwroot/folder
Blazor:
.razorfiles@pagedirectiveRenderModeInteractiveServer,RenderModeInteractiveWebAssemblyAddInteractiveServerComponents(),AddInteractiveWebAssemblyComponents()_Imports.razor
Minimal APIs:
app.MapGet(),app.MapPost(), etc.- No
[ApiController]classes - Route handlers as lambdas or delegates
MVC/Web API:
Controllers/folder- Classes inheriting
ControllerorControllerBase [ApiController],[Route],[HttpGet]attributes
SignalR:
- Classes inheriting
HuborHub<T> IHubContext<T>injectionMapHub<T>()calls
gRPC:
.protofilesGrpc.AspNetCorepackageMapGrpcService<T>()calls
Desktop Apps
MAUI:
MauiProgram.csMauiApp.CreateBuilder().mauifile extensionsMicrosoft.Maui.*namespaces
WPF:
<UseWPF>true</UseWPF>in project.xamlfiles with WPF namespacesPresentationFrameworkreferenceApp.xaml,MainWindow.xaml
WinForms:
<UseWindowsForms>true</UseWindowsForms>in projectSystem.Windows.FormsnamespaceFormclass inheritance.Designer.csfiles
WinUI 3:
Microsoft.WindowsAppSDKpackageMicrosoft.WinUInamespaceWinUIExpatterns
Uno Platform:
Uno.WinUIorUno.UIpackages- Cross-platform XAML with Uno namespaces
- Platform head projects
Worker and Background Services
<OutputType>Exe</OutputType>with no web SDKBackgroundServiceinheritanceIHostedServiceimplementationHost.CreateDefaultBuilder()without web
Azure Functions
[Function]attributeMicrosoft.Azure.Functions.Workernamespacehost.jsonfilelocal.settings.jsonfile
Aspire
App Host:
Aspire.AppHost.SdkDistributedApplicationBuilderbuilder.AddProject<T>()
Service Defaults:
Aspire.ServiceDefaults.SdkAddServiceDefaults()extension
Component Usage:
Aspire.*packagesAddRedis(),AddPostgres(), etc.
Test Framework Detection
| Indicator | Framework |
|---|---|
Microsoft.NET.Test.Sdk + TUnit | TUnit |
Microsoft.NET.Test.Sdk + xunit | xUnit |
Microsoft.NET.Test.Sdk + MSTest.TestFramework | MSTest |
[Fact], [Theory] attributes | xUnit |
[Test], [TestCase] attributes | TUnit |
[TestMethod], [TestClass] attributes | MSTest |
Build and Quality Tooling Detection
Analyzers
| Package | Tool |
|---|---|
Microsoft.CodeAnalysis.NetAnalyzers | Built-in analyzers |
Roslynator.Analyzers | Roslynator |
StyleCop.Analyzers | StyleCop |
Meziantou.Analyzer | Meziantou rules |
SonarAnalyzer.CSharp | SonarQube |
Formatters
| Indicator | Tool |
|---|---|
.editorconfig present | dotnet format |
CSharpier package or .csharpierrc | CSharpier |
jb CLI usage | ReSharper CLI |
Coverage
| Package | Tool |
|---|---|
coverlet.collector | Coverlet |
coverlet.msbuild | Coverlet (MSBuild) |
ReportGenerator tool | Report generation |
Architecture Testing
| Package | Tool |
|---|---|
NetArchTest.Rules | NetArchTest |
ArchUnitNET | ArchUnitNET |
Common File Locations
| File | Purpose |
|---|---|
*.sln | Solution file (find all projects) |
*.csproj, *.fsproj, *.vbproj | Project files |
global.json | SDK version pinning |
Directory.Build.props | Shared MSBuild properties |
Directory.Build.targets | Shared MSBuild targets |
Directory.Packages.props | Central package management |
NuGet.config | NuGet configuration |
.editorconfig | Code style and analyzer settings |
*.ruleset | Legacy analyzer rules |
Routing Decision Tree
This reference defines the decision tree for routing tasks from the generic dotnet skill to the narrowest matching specialized skill.
Primary Classification
Start by classifying the repository or task by its primary app model, then refine by cross-cutting concerns.
Is the task about a specific framework or platform?
|
+-- YES --> Route to the platform skill immediately
|
+-- NO --> Continue to app model detectionApp Model Detection Order
Evaluate project indicators in this order and route to the first matching skill:
1. Web and API
| Indicator | Route To |
|---|---|
Blazor components (.razor, @page, RenderModeInteractiveServer) | blazor |
Minimal API patterns (app.MapGet, app.MapPost, no controllers) | minimal-apis |
MVC or Web API controllers ([ApiController], ControllerBase) | web-api |
SignalR hubs (Hub, IHubContext, /hubs/ routes) | signalr |
gRPC services (.proto, Grpc.AspNetCore) | grpc |
| General ASP.NET Core hosting without specific pattern | aspnet-core |
2. Cloud and Hosting
| Indicator | Route To |
|---|---|
Aspire app host or service defaults (Aspire.Hosting, AddProject) | aspire |
Azure Functions ([Function], Microsoft.Azure.Functions.Worker) | azure-functions |
Background services (BackgroundService, IHostedService) | worker-services |
3. Desktop and Client
| Indicator | Route To |
|---|---|
MAUI app (Microsoft.Maui, .maui) | maui |
Uno Platform (Uno.WinUI, cross-platform XAML) | uno-platform |
WinUI 3 (Microsoft.WindowsAppSDK, WinUI) | winui |
WPF (UseWPF, PresentationFramework) | wpf |
Windows Forms (UseWindowsForms, System.Windows.Forms) | winforms |
| MVVM patterns in any client app | mvvm |
4. Data and Distributed
| Indicator | Route To |
|---|---|
EF Core (Microsoft.EntityFrameworkCore, DbContext) | entity-framework-core |
EF6 (EntityFramework, System.Data.Entity) | entity-framework6 |
Orleans grains and silos (Orleans.Core, [Grain]) | orleans |
5. AI and Agentic
| Indicator | Route To |
|---|---|
Semantic Kernel (Microsoft.SemanticKernel, Kernel.CreateBuilder) | semantic-kernel |
Microsoft.Extensions.AI (IChatClient, IEmbeddingGenerator) | microsoft-extensions-ai |
Microsoft Agent Framework (Microsoft.Agents) | microsoft-agent-framework |
ML.NET (Microsoft.ML, MLContext) | mlnet |
Mixed Reality (Microsoft.MixedReality) | mixed-reality |
MCP servers (ModelContextProtocol) | mcp |
6. Legacy
| Indicator | Route To |
|---|---|
Legacy ASP.NET (System.Web, Global.asax) | legacy-aspnet |
WCF (System.ServiceModel, .svc) | wcf |
Windows Workflow Foundation (System.Activities) | workflow-foundation |
Cross-Cutting Concerns
After platform routing, check if the task is primarily about a cross-cutting concern:
Project and Architecture
| Concern | Route To |
|---|---|
| Project creation, solution structure, SDK selection | project-setup |
| Architecture decisions, patterns, layering | architecture |
| Microsoft.Extensions patterns (DI, config, logging) | microsoft-extensions |
Code Quality and Review
| Concern | Route To |
|---|---|
| Code review, PR feedback | code-review |
| Modern C# language features | modern-csharp |
Testing
| Concern | Route To |
|---|---|
| TUnit test framework | tunit |
| xUnit test framework | xunit |
| MSTest test framework | mstest |
Formatting and Analysis
| Concern | Route To |
|---|---|
dotnet format usage | format |
| CSharpier formatting | csharpier |
| Built-in code analysis, editorconfig | code-analysis |
| EditorConfig and analyzer configuration | analyzer-config |
| Roslyn analyzers (Roslynator) | roslynator |
| StyleCop rules | stylecop-analyzers |
| Meziantou analyzers | meziantou-analyzer |
| ReSharper CLI tools | resharper-clt |
| CodeQL security scanning | codeql |
Quality and CI
| Concern | Route To |
|---|---|
| CI quality gates, build pipelines | quality-ci |
| Code coverage collection | coverlet |
| Coverage report generation | reportgenerator |
| Mutation testing | stryker |
| Complexity metrics | complexity |
| Lines of code counting | cloc |
| Duplicate code detection | quickdup |
| Performance profiling | profiling |
Architecture Enforcement
| Concern | Route To |
|---|---|
| NetArchTest rules | netarchtest |
| ArchUnitNET rules | archunitnet |
Multi-Skill Tasks
When a task spans multiple skills:
1. Prefer the user-visible behavior skill first - if the task is about adding a Blazor feature with tests, start with blazor 2. Pull in quality/tooling skills second - after the feature is implemented, route testing to xunit or tunit 3. Do not combine incompatible guidance - runner-specific commands and patterns should come from one skill at a time
Fallback Behavior
If no narrower skill matches:
1. Stay at dotnet skill 2. Be explicit about missing specialization 3. Provide generic .NET guidance only when necessary 4. Suggest which skill should be created if the gap is recurring