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…
Route C and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin.
$ npx skills add dotnet/skills --skill csharp-expert -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/skills csharp-expert --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .claude/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expertType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/skills --skill csharp-expert -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/skills csharp-expert --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .agents/skills/csharp-expert && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .agents/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill csharp-expert -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/skills csharp-expert --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .cursor/skills/csharp-expert && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .cursor/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/skills.git --path plugins/dotnet/skills/csharp-expert--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/skills --skill csharp-expert -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/skills csharp-expert --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .gemini/skills/csharp-expert && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .gemini/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/skills csharp-expertInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/skills --skill csharp-expert -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .github/skills/csharp-expert && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .github/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill csharp-expert -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/skills csharp-expert --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dotnet/skills/csharp-expert .opencode/skills/csharp-expert && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "csharp-expert" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet/skills/csharp-expert into .opencode/skills/csharp-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csharp-expert", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
csharp-expertRoute 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. 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.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3d38ac3. It shows what the files ask for, not the result of running them.
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.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from dotnet/skills at commit 3d38ac3, republished under its MIT licence (© dotnet). 2,924 words, ~5,446 tokens.
.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.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.
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.references/dotnet-skills-marketplace.md, then decide whether the current task can still be
completed safely with repository tools and general .NET knowledge.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:
.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.
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.
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.
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:
csharp-refactoring for behavior-preserving structural change.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:
references/dotnet-skills-marketplace.md and map the capability or
skill name to the owning marketplace plugin.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:
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.
For GitHub Copilot CLI or Claude Code, give these exact commands with the selected plugin substituted:
/plugin marketplace add dotnet/skills
/plugin install <plugin>@dotnet-agent-skillsWhen installation is the next step, require:
Restart the host, run `/skills` to confirm the specialist is available, and rerun the request.When the task can proceed without the specialist:
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:
dotnet-agent-skills; the source repository is dotnet/skills./skills
before recommending a reinstall.references/dotnet-skills-marketplace.md.When the user says the plugin is already installed but its skills are absent:
/skills./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.
Use a sequence only when phases are independently owned. Examples:
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.
Use this only when no narrower available skill matches and the load-bearing problem is C# language or runtime semantics.
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.
dotnet/skills plugin installation
command. Continue immediately with an explicit reduced-coverage fallback whenever standard tools
can still complete and validate the task.schemas/prod.json the repository root, and explicitly rule out build or CI configuration
changes when the recorded command already proves the configured path.© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in plugins/dotnet/skills/csharp-expert of dotnet/skills.
Open the folder on GitHubat commit 3d38ac3
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.
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Csharp Expert this skilldotnet/skills | 5.6k | 1 repos | ~5.4k | Automated safety check: Pass | MIT | |
| Using Dotnetnovotnyllc/dotnet-artisan | 233 | — | ~2.3k | Automated safety check: Warn | MIT | |
| Sentry Dotnet SDKgetsentry/sentry-for-ai | 268 | — | ~5.8k | Automated safety check: Pass | Apache-2.0 | |
| Maui Hot Reload Diagnosticsdavidortinau/maui-skills | 175 | — | ~1.3k | Automated safety check: Pass | MIT | |
| C# and .NET DeveloperJeffallan/claude-skills | 12k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Wallet QuickstartNethereum/Nethereum | 2.3k | — | ~1.6k | Automated safety check: Pass | MIT |
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…
getsentry/sentry-for-ai
Full Sentry SDK setup for .NET. An agent skill from getsentry/sentry-for-ai.
davidortinau/maui-skills
Diagnose and troubleshoot .NET MAUI Hot Reload issues (C Hot Reload, XAML Hot Reload, Blazor Hybrid).
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.
Nethereum/Nethereum
Build a multi-platform wallet application using the Nethereum Wallet SDK with MVVM architecture (.NET/C).
runceel/ReactiveProperty
Reference for the .NET 10 / C 14 features that are relevant to the ReactiveProperty repository.
dotnet/skills
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.
dotnet/skills
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.
dotnet/skills
Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.
dotnet/skills
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.
dotnet/skills
Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.
dotnet/skills
Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.
Works with
Categories
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.
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.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: Csharp Expert is instructions for the agent only.
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.
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.
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.
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.
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.
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.