1---2name: dotnet3description: Primary router skill for broad .NET work. Classify the repo by app model and cross-cutting concern first, then switch to the narrowest matching .NET skill instead of staying at a generic layer.4---56# .NET Router Skill78## Trigger On910- the user asks for general `.NET` help without naming a narrower framework or tool11- implementing, debugging, reviewing, or refactoring C# or `.NET` code in a repo with multiple app models or frameworks12- deciding which `.NET` skill should own a task before editing code13- tasks that combine platform work with testing, quality, architecture, setup, or migration decisions1415## Workflow16171. Detect the real stack first:18 - target frameworks and SDK version19 - `LangVersion`20 - project SDKs and workload hints21 - hosting model and app entry points22 - test framework and runner23 - analyzers, formatters, coverage, and CI quality gates242. Route to the narrowest platform skill as soon as the stack is known:25 - Web: `aspnet-core`, `aspnet-mvc`, `minimal-apis`, `web-api`, `blazor`, `signalr`, `grpc`26 - Cloud and hosting: `aspire`, `azure-functions`, `worker-services`27 - Desktop and client: `maui`, `wpf`, `winforms`, `winui`28 - Data and distributed: `entity-framework-core`, `entity-framework6`, `orleans`29 - AI and agentic: `semantic-kernel`, `microsoft-extensions-ai`, `microsoft-agent-framework`, `mlnet`, `mixed-reality`30 - Legacy: `legacy-aspnet`, `wcf`, `workflow-foundation`313. Route cross-cutting work to the companion skill instead of keeping it inside generic `.NET` advice:32 - project bootstrap or repo shape: `project-setup`, `architecture`33 - frontend asset analysis in mixed `.NET` plus Node repos: `eslint`, `stylelint`, `htmlhint`, `webhint`, `biome`, `sonarjs`, `metalint`, `chous`34 - code review: `code-review`35 - language features: `modern-csharp`36 - logging / observability: `aspnet-logging`37 - caching: `aspnet-caching`38 - health checks: `aspnet-health-checks`39 - background jobs / scheduled tasks: `background-jobs`40 - advanced auth (OAuth/OIDC/Identity/refresh tokens): `aspnet-auth-advanced`41 - testing runner (v2/v3, VSTest/MTP): `xunit`, `tunit`, `mstest`42 - testing design (mocks, integration, fixtures): `dotnet-testing-patterns`43 - format, analyzers, coverage, and CI: `format`, `code-analysis`, `quality-ci`, `coverlet`, `reportgenerator`44 - maintainability and architecture rules: `complexity`, `netarchtest`, `archunitnet`454. 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.465. Do not stop at this skill once a narrower match exists. This skill should classify and hand off, not become a generic dumping ground.476. After code changes, validate with the repository's actual build, test, and quality workflow instead of generic `.NET` commands.4849## Routing Heuristics5051- If the repo contains `Microsoft.NET.Sdk.Web`, start from a web skill, not generic `.NET`.52- If the repo contains Blazor, Razor Components, or `.razor` pages, prefer `blazor`.53- If the repo has `Views/` folder + Controllers returning `View()` (Razor Views), prefer `aspnet-mvc`.54- If the repo contains `package.json`, frontend lint configs, or browser-facing asset pipelines inside the `.NET` solution, prefer the dedicated frontend analysis skills instead of generic `.NET`.55- If the repo contains Orleans grains or silo hosting, prefer `orleans`.56- If the repo is mostly analyzers, CI, or coverage work, prefer the quality skill directly.57- If the user asks about “which skill should I use?”, answer with the narrowest matching skill and explain why in one short sentence.58- If no narrower skill matches, keep the work here and stay explicit about the missing specialization.5960## Deliver6162- the correct specialized skill choice for the task63- repo-compatible code or documentation changes that stay aligned with the detected stack64- validation evidence that matches the real project runner and quality toolchain6566## Validate6768- the chosen downstream skill actually exists in the catalog69- platform assumptions match project SDKs, packages, and workloads70- generic guidance has been replaced by framework-specific guidance whenever possible71- runner-specific commands are not mixed incorrectly72- language or runtime features are only used when the repo supports them7374## Documentation7576### References7778- [`references/routing.md`](references/routing.md) - Decision tree for routing tasks to specialized .NET skills, including app model classification and cross-cutting concern handling.79- [`references/detection.md`](references/detection.md) - Project detection patterns for identifying SDK types, target frameworks, workloads, language versions, and app models.