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. USE FOR: general .NET requests without a narrower framework; C# implementation, debugging, review, or refactoring; routing to framework and tooling skills. DO NOT USE FOR: unrelated stacks; tasks already covered by a narrower .NET skill. INVOKES: inspect the repository context, edit targeted files, and ru
SkillScore95Maintained
Automatic
◆Coding pack
Last verified 8/19/2026
What it changes
Passed 21 of 22 test cases with the skill, and 13 of 22 without it.
Without skill59%
With skill95%
Checks it passed that the model alone missed
Routes the task to the orleans skill.
Answers with the narrow web skill web-api.
Explains the routing choice in one short sentence.
and 7 more in the full report
8 fixed13 passed either way1 still failing0 broke
Pass-rate lift
+36 pp
Tokens
+21%
Agent turns
0%
Response time
-52%
Model gemini-3.6-flashMeasured 8/19/2026v221 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 8 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 8
Prompt
We are updating our template generation scripts for .NET SDK 10.0.400 feature band. What separator character should be used between options when calling `dotnet new`?
What was checked, without and with the skill
Checked
Without skill
With skill
Identifies @ as the option separator character for dotnet new in .NET SDK 10.0.400.
Missed
Passed
case-11 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md73 lines3 files
.NET Router Skill
Trigger On
the user asks for general .NET help without naming a narrower framework or tool
implementing, debugging, reviewing, or refactoring C# or .NET code in a repo with multiple app models or frameworks
deciding which .NET skill should own a task before editing code
tasks that combine platform work with testing, quality, architecture, setup, or migration decisions
Workflow
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
Route to the narrowest platform skill as soon as the stack is known:
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
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 .NET plus 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
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.
Do not stop at this skill once a narrower match exists. This skill should classify and hand off, not become a generic dumping ground.
After code changes, validate with the repository's actual build, test, and quality workflow instead of generic .NET commands.
Current Upstream Notes
.NET 10.0.11 runtime and ASP.NET Core releases are servicing updates. Re-test affected paths such as cgroup-v2 memory limits, Mono native-library resolution, Windows directory enumeration, WASM AOT/lazy-load startup, thread-static initialization, Blazor persisted circuits, and OpenAPI generation rather than changing architecture by default.
Use ESLint in .NET repositories that ship JavaScript, TypeScript, React, or other Node-based frontend assets. USE FOR: the repo has package.json, eslint.config.*, .eslintrc*, tsconfig.json, or JS/TS/React frontend files; the user asks for JavaScript or TypeScript linting, React rule. DO NOT USE FOR: CSS ownership by itself; route that to stylelint; HTML-only checks on static output; route that to htmlhint. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test