Official agent skill

Csharp Expert

by dotnet in dotnet/skills

Route C and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin.

OfficialMITAuto-check passedDevelopment

Install Csharp Expert

skills CLI
$ npx skills add dotnet/skills --skill csharp-expert -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/skills csharp-expert --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .claude/skills/csharp-expert && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
csharp-expert
GitHub stars
5.6k
Used in
1 other repo
Token cost
~5.4k tokens
SKILL.md length
2,924 words
Files
2 (incl. references)
Skills in repo
93
Repo updated
First seen
Licence
MIT

At a glance

Route C and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin.

  • Works in 6 steps: Classify the Prompt → Detect the Solution Type → Match the Skill and Marketplace Plugin → …
  • : which specialist should own this
  • SKILL.md covers Purpose, Routing Contract, Step 1: Classify the Prompt and Step 2: Detect the Solution Type, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Csharp Expert is an agent skill from dotnet/skills, published by the product's own GitHub organization. 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…

Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/dotnet-skills-marketplace.md`).

It sits in Development, covering Code migrations and Cross-platform mobile apps. It works with C#, .NET, ASP.NET Core and Blazor. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.

When your agent uses it

  • : which specialist should own this
  • How do I add the skill requests involving ASP.NET Core endpoints
  • Windows Forms specialist selection
  • EF Core queries

Example prompts

  • “which specialist should own this”
  • “how do I add the skill”
  • “/csharp-expert”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Classify the Prompt
  2. Detect the Solution Type
  3. Match the Skill and Marketplace Plugin
  4. Obtain a Missing Skill
  5. Compose Skills Deliberately
  6. C# Language Fallback

What it can do on your machine

Read from SKILL.md and the folder at commit 3d38ac3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Csharp Expert loads about 5.4k tokens when it runs, and up to ~7k if it reads all its reference files. Until then it costs about 169 tokens; SKILL.md has 2,924 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~169
When it runs · the whole SKILL.md, loaded when a task matches
~5.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from dotnet/skills at commit 3d38ac3, republished under its MIT licence (© dotnet). 2,924 words, ~5,446 tokens.

Download SKILL.mdSave it as .claude/skills/csharp-expert/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
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

  1. Classify the requested outcome from the prompt.
  2. Inspect the smallest set of repository files needed to identify the solution type.
  3. Compare both signals with the descriptions of the skills currently available to the runtime.
  4. If the best skill is available and the user asked to perform the downstream work, invoke it with the skill tool 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.
  5. 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.
  6. Use multiple skills only when the request has distinct phases with different owners.
  7. 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 forRequired behavior
Implement, fix, diagnose, migrate, or createInvoke 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 capabilityInspect 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 /skillsRefresh 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 intentPrefer skills whose description owns
Create or scaffoldProject/template creation for the detected solution type
Add application behaviorThe framework or component where the behavior lives
Fix a compiler/runtime defectThe narrow language, framework, data, or interop owner
Build or restore failureMSBuild, SDK, workload, project-reference, or NuGet diagnosis
Write, run, review, or migrate testsThe exact testing lifecycle or migration requested
Upgrade or migrateThe source version, target version, and artifact being migrated
Diagnose slowness, crash, hang, or memory growthRuntime diagnostics unless evidence points to build performance or a local code hot path
Refactor without changing behaviorRefactoring rather than feature or bug-fix guidance
Package, publish, or trust a feedNuGet/package-publishing workflow
Ask about C# syntax, types, nullability, async, or APIsA 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.

EvidenceSolution or concern
Microsoft.NET.Sdk.Web, controllers, endpoints, middleware, OpenAPIASP.NET Core
.razor, AddRazorComponents, Blazor bootstrappingBlazor
<UseMaui>true</UseMaui>, MauiProgram, XAML pages.NET MAUI
<UseWindowsForms>true</UseWindowsForms>, Form, designer filesWindows 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 errorsMSBuild
Directory.Packages.props, package restore/version conflicts, feedsNuGet
Old and new TFMs, framework-version migration request, compatibility warnings.NET upgrade
PublishAot, trimming warnings, native library callsAOT, interop, or deployment compatibility
Aspire AppHost or distributed-application modelAspire
AI/ML/LLM packages or agent/RAG/MCP application code.NET AI
No project plus an explicit request for a one-file C# programFile-based C#
None of the above; correctness depends on C# semanticsC# 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:

  1. An exact transformation or lifecycle skill, such as a specific test migration, framework conversion, template operation, query optimization, or diagnostic collection workflow.
  2. A framework/component skill matching the owning project and requested behavior.
  3. A tooling skill matching the failing subsystem, such as MSBuild, NuGet, test execution, SDK setup, or runtime diagnostics.
  4. A cross-cutting specialist matching the actual mechanism, such as interop, vectorization, serialization, AOT, or microbenchmarking.
  5. csharp-refactoring for behavior-preserving structural change.
  6. 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 requestDistinguishing 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:

  1. 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.
  2. If it does not appear, open references/dotnet-skills-marketplace.md and map the capability or skill name to the owning marketplace plugin.
  3. Recommend the smallest plugin that contains the needed skill. Do not install every .NET plugin.
  4. 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 not search GitHub, inspect unrelated plugin source, or enumerate alternatives after the prompt and one nearby manifest already identify the owner. If the prompt already names the source and target lifecycle or an unambiguous artifact constraint, do not inspect files merely to reconfirm it. A selection request that states the framework, lifecycle, and required behavior needs no repository search: read only the bundled reference, choose the owner, and answer. Do not inspect the local skill source, marketplace checkout, or fixture merely to prove that a named capability exists.

Answer in four compact parts:

  1. Exact skill name and plugin; never substitute a generic capability label when the bundled reference contains an exact route.
  2. One sentence matching the decisive behavior or artifact evidence. Use the user's concrete mechanism: N+1/database round trips for repeated EF related-data queries; deployed-process CPU/allocation collection before a known hot path for runtime tracing; source and target TFM plus compatibility work for upgrades.
  3. Host-correct install steps.
  4. Restart/discovery verification, when the host requires it.

For a selection answer, completeness beats extra exploration. Read the bundled reference once, then answer. Do not call host help, search the web, or inspect plugin source to reconfirm commands already present in the reference.

Do not add a Route: header in marketplace-planning mode; lead with the capability and plugin. Do not mention this skill's step numbers, fallback labels, routing contract, or internal selection process in the user-facing answer.

Show full SKILL.md (1,149 more words)Show less

Step 4: Obtain a Missing Skill

For GitHub Copilot CLI or Claude Code, give these exact commands with the selected plugin substituted:

text
/plugin marketplace add dotnet/skills
/plugin install <plugin>@dotnet-agent-skills

When installation is the next step, require:

text
Restart the host, run `/skills` to confirm the specialist is available, and rerun the request.

When the task can proceed without the specialist:

  1. State the missing specialist and reduced coverage in one concise sentence.
  2. Complete the requested work now using the repository, standard .NET tooling, and the fallback rules that match the task.
  3. Validate the result as narrowly as possible.
  4. Put optional installation guidance after the result. Do not ask whether to proceed, defer the implementation, or make the user repeat the request.

If the user explicitly says not to recommend or discuss installation, omit the missing-plugin sentence and all acquisition guidance. Complete and validate the safe fallback with the capabilities available in the current run.

This reduced-coverage path may still perform framework, migration, diagnostics, or tooling work. Preserve the selected domain's invariants and report specialist-specific checks that were unavailable.

Rules:

  • The marketplace name is dotnet-agent-skills; the source repository is dotnet/skills.
  • The install target is the plugin name, not the individual skill name.
  • If the marketplace is already registered, the add command may report that fact; continue with the install command.
  • Slash commands are host actions. Present them exactly; do not run shell commands that pretend to install a Copilot or Claude plugin.
  • Do not pretend to continue with the unavailable specialist workflow. Use an explicit local fallback when the task remains safely achievable.
  • If the plugin is installed but the skill is absent, ask the user to restart and check /skills before recommending a reinstall.
  • For Codex CLI, VS Code, Cursor, or individual-skill installation, use the host-specific commands in references/dotnet-skills-marketplace.md.
  • If installation is impossible, declined, or not necessary for the immediate task, state the reduced coverage and use the safest local fallback when it can still satisfy the request.
  • Never trade away implementation or validation merely to produce installation instructions.
Installed but not discovered

When the user says the plugin is already installed but its skills are absent:

  1. Trust the stated installed state unless repository evidence directly contradicts it.
  2. Start by acknowledging that the plugin is installed and discovery is stale.
  3. Tell the user to restart or reload the host, then run /skills.
  4. Name the expected skill so discovery can be verified.
  5. Stop there on the first response. Do not emit marketplace-add, install, update, shell-level plugin-management, /skills reload, or invented explicit-invocation commands.

Only after the user reports that restart plus /skills still fails should the next response move to host-specific update or reinstall diagnostics.

Step 5: Compose Skills Deliberately

Use a sequence only when phases are independently owned. Examples:

  • Scaffold a project, then author a framework-specific component.
  • Collect a trace, then analyze the captured performance evidence.
  • Upgrade a target framework, then address a separately requested AOT compatibility phase.
  • Detect the test platform, then run tests with the correct filter syntax.

Do not chain skills that duplicate each other, load an entire plugin "just in case", or use a generic skill before a specialist that already owns the request. After a specialist is loaded, follow its workflow and boundaries.

If one or more phase specialists are missing but ordinary dotnet commands and repository edits can complete the phases, execute the phases in order and report the optional plugins afterward. Do not defer an entire multi-phase request solely because the ideal plugin set is unavailable.

Step 6: C# Language Fallback

Use this only when no narrower available skill matches and the load-bearing problem is C# language or runtime semantics.

  1. Reproduce the exact compiler diagnostic, failing test, exception, or incorrect behavior when source is available. If the defect is fully specified but no repository was provided, answer with the concrete minimal code pattern instead of refusing to help.
  2. Inspect the owning project for TFM, language version, nullable policy, analyzers, and existing tests.
  3. Preserve public signatures, serialization shape, ownership, cancellation, disposal, and multi-target behavior unless the request explicitly changes them.
  4. Implement the smallest complete fix through the affected call path.
  5. Check LSP diagnostics when available, then build the narrowest affected project and run focused tests or the executable path that proves the original symptom is gone.

For a marketplace-planning request whose correct route is this fallback, say: No additional marketplace plugin is required; the loaded csharp-expert skill owns this C# semantic fix. Do not claim that no skill or specialist is involved.

Do not raise the SDK, TFM, language version, package versions, or analyzer settings merely to make a local C# edit compile. Do not edit generated files. Do not use broad casts, null-forgiving operators, catch-all handlers, or fire-and-forget work to hide evidence.

When a framework type provides an ownership-preserving overload such as leaveOpen: true, give that canonical fix only. Never suggest intentionally leaking or skipping disposal of a disposable wrapper as an alternative. Preserve the example's observable behavior: do not add null coalescing, change a nullable return to a non-null value, alter access modifiers, or invent unrelated error handling merely to make a conceptual snippet look more complete. If an example directly returns StreamReader.ReadLine(), use a nullable string? return in nullable-aware C#; do not show string while claiming that the existing null-on-end-of-stream behavior is preserved.

Boundaries and Failure Handling

  • If the best specialist is unavailable, provide its exact dotnet/skills plugin installation command. Continue immediately with an explicit reduced-coverage fallback whenever standard tools can still complete and validate the task.
  • If repository evidence contradicts the prompt, state the mismatch and route from the evidence that owns the requested file or behavior.
  • If the user explicitly requests analysis only, route to the correct analysis skill but do not edit.
  • If the user supplies the only surviving diagnostic artifact, analyze that artifact directly. Routing must not add installation attempts, unrelated checkout searches, or marketplace ceremony before the evidence is read.
  • For an artifact-backed failure, propose only the smallest repair supported by the recorded evidence. Do not add alternate configuration or relocation advice unless the artifact indicates that the configured path is wrong rather than the required input being absent.
  • Describe a missing artifact at its exact configured relative path. Do not call a nested path such as schemas/prod.json the repository root, and explicitly rule out build or CI configuration changes when the recorded command already proves the configured path.
  • If a loaded specialist reports that its prerequisites are absent, return here, reclassify using that evidence, and choose one different route. Do not bounce repeatedly between skills.
  • Non-.NET work is out of scope; leave this skill dormant rather than forcing a .NET interpretation.

Observable Completion Criteria

  • One evidence-backed owner is selected for each distinct phase and invoked when available.
  • Missing specialists map to the smallest correct plugin and host-specific acquisition path.
  • Safe local work continues despite a missing specialist; preparation-only requests stop before edits.
  • Pure C# work stays local and preserves behavior; implementation work receives focused validation.

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in plugins/dotnet/skills/csharp-expert of dotnet/skills.

  • SKILL.md
  • references/dotnet-skills-marketplace.md

Open the folder on GitHubat commit 3d38ac3

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dotnet/skills, which our catalogue first saw on October 9, 2026.

Compare with similar skills

Csharp Expert next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Csharp Expert compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Csharp Expert this skilldotnet/skills5.6k1 repos~5.4kAutomated safety check: PassMIT
Using Dotnetnovotnyllc/dotnet-artisan233—~2.3kAutomated safety check: WarnMIT
Sentry Dotnet SDKgetsentry/sentry-for-ai268—~5.8kAutomated safety check: PassApache-2.0
Maui Hot Reload Diagnosticsdavidortinau/maui-skills175—~1.3kAutomated safety check: PassMIT
C# and .NET DeveloperJeffallan/claude-skills12k—~1.3kAutomated safety check: PassMIT
Wallet QuickstartNethereum/Nethereum2.3k—~1.6kAutomated safety check: PassMIT

Similar skills

  • Using Dotnet

    novotnyllc/dotnet-artisan

    Detects .NET intent for any C, ASP.NET Core, EF Core, Blazor, MAUI, Uno Platform, WPF, WinUI, SignalR, gRPC, xUnit, NuGet, or MSBuild request from prompt keywords and repository signals (.sln…

    233 GitHub stars~2.3k tokensUpdated yesterday
    Backend & APIsAuto-check: warnings
  • Sentry Dotnet SDK

    getsentry/sentry-for-ai

    Official

    Full Sentry SDK setup for .NET. An agent skill from getsentry/sentry-for-ai.

    268 GitHub stars~5.8k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • Maui Hot Reload Diagnostics

    davidortinau/maui-skills

    Diagnose and troubleshoot .NET MAUI Hot Reload issues (C Hot Reload, XAML Hot Reload, Blazor Hybrid).

    175 GitHub stars~1.3k tokensUpdated 3 mo ago
    MobileAuto-check passed
  • C# and .NET Developer

    Jeffallan/claude-skills

    Guides C# work on .NET 8+: ASP.NET Core APIs, Entity Framework Core data access, Blazor apps and CQRS with MediatR, following a five-step build workflow.

    12k GitHub stars~1.3k tokensUpdated 6 days ago
    Backend & APIsAuto-check passed
  • Wallet Quickstart

    Nethereum/Nethereum

    Build a multi-platform wallet application using the Nethereum Wallet SDK with MVVM architecture (.NET/C).

    2.3k GitHub stars~1.6k tokensUpdated 4 days ago
    MobileAuto-check passed
  • Dotnet10 Features

    runceel/ReactiveProperty

    Reference for the .NET 10 / C 14 features that are relevant to the ReactiveProperty repository.

    944 GitHub stars~2.7k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from dotnet/skills

All 93 skills in this repo
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Official

    Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.

    5.6k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Official

    Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.

    5.6k GitHub starsUsed in 3 repos~3.1k tokens
    Auto-check passed
  • Official

    Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.

    5.6k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Microbenchmarking

    dotnet/skills

    Official

    Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.

    5.6k GitHub starsUsed in 3 repos~3.3k tokens
    Auto-check passed
  • Official

    Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.

    5.6k GitHub starsUsed in 2 repos~4.2k tokens
    Auto-check passed

Questions about Csharp Expert

What does Csharp Expert do?

Route C and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin. Csharp Expert is an agent skill from dotnet/skills, published by the product's own GitHub organization.NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin.

When should I use Csharp Expert?

Csharp Expert fits situations like: : which specialist should own this; how do I add the skill requests involving ASP.NET Core endpoints; windows Forms specialist selection; EF Core queries.

How do I install Csharp Expert in Claude Code?

Run `npx skills add dotnet/skills --skill csharp-expert -a claude-code`. Or copy the skill folder (plugins/dotnet/skills/csharp-expert in dotnet/skills) into .claude/skills/csharp-expert in your project. Claude Code loads it when a task matches its description.

How do I install Csharp Expert in Codex?

Run `npx skills add dotnet/skills --skill csharp-expert -a codex`. Or copy the skill folder (plugins/dotnet/skills/csharp-expert in dotnet/skills) into .agents/skills/csharp-expert in your project. Codex loads it when a task matches its description.

Can I use Csharp Expert in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill csharp-expert -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/csharp-expert, .gemini/skills/csharp-expert, .github/skills/csharp-expert and .opencode/skills/csharp-expert in your project.

What does Csharp Expert need to run?

SKILL.md names no scripts, command-line tools or credentials: Csharp Expert is instructions for the agent only.

Does Csharp Expert access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Csharp Expert safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Csharp Expert use?

Csharp Expert is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Csharp Expert use?

About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.

What are the alternatives to Csharp Expert?

Skills that share tags, products or a category with Csharp Expert: Using Dotnet (novotnyllc/dotnet-artisan, 233 stars), Sentry Dotnet SDK (getsentry/sentry-for-ai, 268 stars), Maui Hot Reload Diagnostics (davidortinau/maui-skills, 175 stars) and C# and .NET Developer (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Csharp Expert?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,585 GitHub stars. The repository holds 93 skills in this directory. The repository was last updated on October 9, 2026.

Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.