csharp-expert
Route C# and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin. USE FOR: "which specialist should own this" or "how do I add the skill" requests involving ASP.NET Core endpoints, Blazor, MAUI binding, Windows Forms specialist selection or installation, EF C…
Install / Use
npx skills add dotnet/skills --skill csharp-expertInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of csharp-expert
csharp-expert scores 94/100 on our quality scale, 485th of 4,588 Development & Engineering skills we index (top 11%).
Its SKILL.md is 21 KB long, well organised into 12 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.
With 5,471 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 15 days ago, so csharp-expert is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
csharp-expert compared with similar skills
All 4 of these similar skills score higher than csharp-expert; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| csharp-expert (this skill)by dotnet | 94 | 5.5k | 15d ago | SKILL.md |
| ai-job-searchby MadsLorentzen | 100 | 45.4k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.8k | 9d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 16d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 16d ago | SKILL.md |
Frequently asked questions
- How do I install csharp-expert?
- Run
npx skills add dotnet/skills --skill csharp-expert. The install tabs above show the steps for each supported agent. - Which AI agents does csharp-expert work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is csharp-expert safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is csharp-expert still maintained?
- The repository was last updated 15 days ago, so csharp-expert is actively maintained.
Skill content
View source on GitHubname: csharp-expert
description: >-
Route C# and .NET requests to the exact installed specialist or smallest dotnet/skills
marketplace plugin. USE FOR: "which specialist should own this" or "how do I add the skill"
requests involving ASP.NET Core endpoints, Blazor, MAUI binding, Windows Forms specialist
selection or installation, EF Core queries, test or framework migration, runtime
CPU/allocation evidence, file-based C#, editor/compiler defects, a surviving MSBuild
.binlog, or a plugin missing from /skills; also use for C# semantics
when no narrower specialist exists. DO NOT USE FOR: requests that already name the exact
installed specialist to invoke, or work unrelated to C# or .NET.
license: MIT
C# Expert
Purpose
Act as the front door for C# and .NET work. Determine what the user wants, identify the kind of
solution that owns the work, invoke the narrowest installed specialist, and give exact
dotnet/skills marketplace installation steps when that specialist is missing. Keep direct C#
language guidance as the fallback, not the default.
Routing Contract
- Classify the requested outcome from the prompt.
- Inspect the smallest set of repository files needed to identify the solution type.
- Compare both signals with the descriptions of the skills currently available to the runtime.
- If the best skill is available and the user asked to perform the downstream work, invoke it with
the
skilltool as the first external action; do not emit a routing explanation before the invocation and do not merely recommend the skill. For selection or preparation-only requests, name the installed specialist and stop without invoking it. - If the best skill is missing, identify its plugin in
references/dotnet-skills-marketplace.md, then decide whether the current task can still be completed safely with repository tools and general .NET knowledge. - Use multiple skills only when the request has distinct phases with different owners.
- If no narrower marketplace skill owns the request, continue with the C# fallback workflow.
Routing is not task completion. A missing specialist changes the confidence and preferred workflow; it does not automatically justify stopping. Continue in the same turn when the task can be completed and validated without the specialist. Stop for installation only when the missing capability is actually required to proceed safely or the user asked specifically to install or load it.
Use these fast paths before general repository exploration:
- Marketplace selection only: when the prompt already states the framework, lifecycle, host, and required behavior, read only the bundled marketplace reference. Do not inspect the fixture, repository, GitHub, or plugin source. Name the exact skill and plugin, explain the decisive mapping, give host-correct acquisition steps, and stop.
- Only surviving diagnostic artifact: inspect that artifact first with the narrowest available
query. For a supplied
.binlog, do not glob, list, or search unrelated workspace files before extracting its recorded error, property, target, and path evidence.
Choose the operating mode from the user's requested outcome:
| User asks for | Required behavior |
|---|---|
| Implement, fix, diagnose, migrate, or create | Invoke the installed specialist, or complete a safe local fallback. If a narrower specialist exists but is unavailable, report its optional plugin afterward unless the user prohibited installation advice. |
| Identify, choose, install, prepare, or load the right marketplace capability | Inspect enough solution evidence to choose the owner, name it whether installed or missing, give acquisition steps only when needed, and stop without invoking the specialist, editing files, or generating the requested application artifact. |
| Recover a plugin already installed but absent from /skills | Refresh discovery first; do not reinstall or update on the first response. |
Choose one owner per phase. Do not expose internal routing ceremony or turn the answer into a menu.
Step 1: Classify the Prompt
Identify the primary action before inspecting implementation details.
| Prompt intent | Prefer skills whose description owns | |---|---| | Create or scaffold | Project/template creation for the detected solution type | | Add application behavior | The framework or component where the behavior lives | | Fix a compiler/runtime defect | The narrow language, framework, data, or interop owner | | Build or restore failure | MSBuild, SDK, workload, project-reference, or NuGet diagnosis | | Write, run, review, or migrate tests | The exact testing lifecycle or migration requested | | Upgrade or migrate | The source version, target version, and artifact being migrated | | Diagnose slowness, crash, hang, or memory growth | Runtime diagnostics unless evidence points to build performance or a local code hot path | | Refactor without changing behavior | Refactoring rather than feature or bug-fix guidance | | Package, publish, or trust a feed | NuGet/package-publishing workflow | | Ask about C# syntax, types, nullability, async, or APIs | A language specialist unless solution-specific behavior is load-bearing |
Treat user nouns as clues, not proof. "Performance" may mean runtime tracing, a microbenchmark, EF query shape, SIMD, allocation-heavy C#, or MSBuild evaluation. "API" may mean ASP.NET Core, a public library contract, or an external service client.
When a deployed .NET process needs CPU and allocation evidence and no observability vendor is named, prefer the vendor-neutral .NET runtime diagnostics route. Do not substitute an APM-vendor agent for raw process evidence merely because it can also report performance data. In a selection answer, state that runtime trace collection gathers deployed-process evidence before a hot method is known, whereas source optimization starts from code or an already identified hot path.
Step 2: Detect the Solution Type
Inspect only likely manifests and nearby owning files. Prefer a solution/project file and the file named by the prompt over broad repository searches.
Use LSP navigation when available to trace a prompt-named symbol or file to its owning project and nearby callers. Use LSP diagnostics as early evidence, but do not treat them as a substitute for the specialist's required build or runtime validation.
When the prompt names a C# source file with an editor/compiler defect and LSP is available, request diagnostics before running a build or broad search. Use the diagnostic location and code to scope the edit, request diagnostics again after the edit, then run the narrowest build or test that proves the fix.
| Evidence | Solution or concern |
|---|---|
| Microsoft.NET.Sdk.Web, controllers, endpoints, middleware, OpenAPI | ASP.NET Core |
| .razor, AddRazorComponents, Blazor bootstrapping | Blazor |
| <UseMaui>true</UseMaui>, MauiProgram, XAML pages | .NET MAUI |
| <UseWindowsForms>true</UseWindowsForms>, Form, designer files | Windows Forms |
| EF Core package references, DbContext, migrations | .NET data / EF Core |
| <IsTestProject>true</IsTestProject>, test SDK/framework packages | .NET testing |
| Directory.Build.*, custom targets/tasks, .binlog, evaluation errors | MSBuild |
| Directory.Packages.props, package restore/version conflicts, feeds | NuGet |
| Old and new TFMs, framework-version migration request, compatibility warnings | .NET upgrade |
| PublishAot, trimming warnings, native library calls | AOT, interop, or deployment compatibility |
| Aspire AppHost or distributed-application model | Aspire |
| AI/ML/LLM packages or agent/RAG/MCP application code | .NET AI |
| No project plus an explicit request for a one-file C# program | File-based C# |
| None of the above; correctness depends on C# semantics | C# language fallback |
When several project types exist, trace from the file or behavior named in the prompt to its owning
project. Do not route the whole solution from the first .csproj found.
Step 3: Match the Skill and Marketplace Plugin
Use the runtime-provided available-skill names and descriptions as the source of truth. Do not search for a skill installation directory or invoke a remembered skill that is not currently available.
Rank candidates in this order:
- An exact transformation or lifecycle skill, such as a specific test migration, framework conversion, template operation, query optimization, or diagnostic collection workflow.
- A framework/component skill matching the owning project and requested behavior.
- A tooling skill matching the failing subsystem, such as MSBuild, NuGet, test execution, SDK setup, or runtime diagnostics.
- A cross-cutting specialist matching the actual mechanism, such as interop, vectorization, serialization, AOT, or microbenchmarking.
csharp-refactoringfor behavior-preserving structural change.- The C# language fallback below when no narrower available skill owns the work.
Because csharp-expert ships in the core dotnet plugin, prefer its installed sibling skills
csharp-refactoring, msbuild, and setup-local-sdk when they own the request. Do not require the
user to install dotnet-msbuild merely to analyze an ordinary build failure or binlog that the
core msbuild entry already covers.
The most specific noun is not always the owner. Route by the decision that determines success:
| Ambiguous request | Distinguishing evidence | |---|---| | "Make this faster" | Build duration -> build-performance skill; SQL/query shape -> data skill; process CPU/memory -> diagnostics; isolated code comparison -> microbenchmarking/vectorization | | "Fix the API" | HTTP pipeline/endpoint -> ASP.NET Core; public type contract -> C# fallback; JSON version behavior -> serialization specialist | | "Upgrade the tests" | Framework version change -> exact migration skill; failing execution -> run-tests/platform skill; quality review -> analysis skill | | "Fix nullability" | Project-wide nullable adoption -> migration skill; one incorrect flow/contract -> C# fallback; generated framework binding -> owning framework skill | | "Add authentication" | Framework-specific application auth -> owning framework skill; token parsing primitive -> C# fallback |
If two candidates remain plausible, gather one more decisive artifact rather than loading both.
After selecting the capability:
- If its skill appears in the runtime's available-skill catalog, invoke it immediately only when the operating mode requires downstream implementation. For selection or preparation-only mode, name the installed skill and stop after the requested plan or availability guidance.
- If it does not appear, open
references/dotnet-skills-marketplace.mdand map the capability or skill name to the owning marketplace plugin. - Recommend the smallest plugin that contains the needed skill. Do not install every .NET plugin.
- Follow the missing-skill workflow below. Do not claim that an unavailable skill was loaded, and do not stop if a safe, verifiable local fallback can still complete the request.
When the bundled reference contains a maintained marketplace capability, recommend that capability. Do not ask the user to author a repository-local agent or skill as a substitute. For migrations, state the source-to-target lifecycle and parameterization mappings that make the chosen capability fit, not only its name.
For marketplace-planning requests, name both the narrow skill and its plugin. Use project evidence to disambiguate framework nouns, but do not perform the downstream implementation the user asked to prepare for.
For migration selection, quote concrete source-to-target syntax from the bundled reference: include at least one lifecycle mapping and one parameterization mapping instead of saying only that those behaviors are supported.
Use the bundled marketplace reference as the authoritative lookup. Do
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
45.4kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.8kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
