dotnet-modern-csharp
Skill13 starsChanged 8 months agoMITView on GitHub
Write modern, version-aware C# for .NET repositories. Use when choosing language features across C# versions, especially C# 13 and C# 14, while staying compatible with the repo's target framework and `LangVersion`.
In this repository84 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- dotnet-analyzer-configSkill
- dotnet-architectureSkill
- dotnet-archunitnetSkill
- dotnet-aspireSkill
- dotnet-aspnet-coreSkill
- dotnet-asynkron-profilerSkill
- dotnet-azure-functionsSkill
- dotnet-biomeSkill
- dotnet-blazorSkill
- dotnet-chousSkill
- dotnet-clocSkill
- dotnet-code-analysisSkill
- dotnet-codeqlSkill
- dotnet-code-reviewSkill
- dotnet-complexitySkill
- dotnet-coverletSkill
- dotnet-csharpierSkill
- dotnet-entity-framework6Skill
- dotnet-entity-framework-coreSkill
- dotnet-eslintSkill
- dotnet-formatSkill
- dotnet-grpcSkill
- dotnet-htmlhintSkill
- dotnet-legacy-aspnetSkill
- dotnet-libvlcSkill
- dotnet-managedcode-communicationSkill
- dotnet-managedcode-markitdownSkill
- dotnet-managedcode-mimetypesSkill
- dotnet-managedcode-orleans-graphSkill
- dotnet-managedcode-orleans-signalrSkill
- dotnet-managedcode-storageSkill
- dotnet-mauiSkill
- dotnet-mcaf-agile-deliverySkill
- dotnet-mcaf-devexSkill
- dotnet-mcaf-documentationSkill
- dotnet-mcaf-feature-specSkill
- dotnet-mcaf-human-review-planningSkill
- dotnet-mcaf-ml-ai-deliverySkill
- dotnet-mcaf-nfrSkill
- dotnet-mcafSkill
- dotnet-mcaf-source-controlSkill
- dotnet-mcaf-ui-uxSkill
- dotnet-mcpSkill
- dotnet-metalintSkill
- dotnet-meziantou-analyzerSkill
- dotnet-microsoft-agent-frameworkSkill
- dotnet-microsoft-extensions-aiSkill
- dotnet-microsoft-extensionsSkill
- dotnet-minimal-apisSkill
- dotnet-mixed-realitySkill
- dotnet-mlnetSkill
- dotnet-mstestSkill
- dotnet-mvvmSkill
- dotnet-netarchtestSkill
- dotnet-nunitSkill
- dotnet-orleansSkill
- dotnet-profilingSkill
- dotnet-project-setupSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 13 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈13
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
leave reusable project context so future tasks are faster and safer
- Distinctive: line 38
Read the nearest AGENTS.md and confirm scope and constraints.
- Very specific: line 39
Run this skill's Workflow through the Ralph Loop until outcomes are acceptable.
- Distinctive: line 45
Prefer stable features that the current repo actually supports.
- Distinctive: line 46
Use modern syntax when it reduces ceremony, improves correctness, or makes invariants clearer.
- Distinctive: line 47
Do not mass-rewrite a codebase into newer syntax unless the repo wants that churn.
- Distinctive: line 48
Treat preview features as opt-in only.
- Distinctive: line 52
When feature selection changes architecture, style rules, or generated-code patterns, coordinate with:
- Very specific: line 56
After feature-driven refactors, run the repo's .NET quality pass through dotnet.
- Distinctive: line 60
If the requested C# feature depends on SDK or language support the repo does not have yet:
- Distinctive: line 66
If the feature requires a newer supported SDK or target framework, upgrade the repo toolchain deliberately instead of relying on the local …
- Very specific: line 67
If the repo needs explicit LangVersion, record it in project or shared MSBuild config.
- Very specific: line 68
Run dotnet build SOLUTION_OR_PROJECT after the feature or toolchain change and return status: configured or status: improved.
- Very specific: line 69
If the repo intentionally stays below the required language level, return status: not_applicable.
- Distinctive: line 75
no accidental preview or unsupported-language drift
- Distinctive: line 86
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
- Distinctive: line 91
write a detailed execution plan
- Distinctive: line 96
Update the plan after each iteration.
- Very specific: line 98
If a dependency is missing, bootstrap it or return status: not_applicable with explicit reason and fallback path.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Modern C# for .NET
Trigger On
- the repo wants more modern idiomatic C# code
- a change depends on language-version compatibility
- the team is upgrading or reviewing C# feature usage across versions
- you need to know whether a C# 13 or C# 14 feature is safe to use
Value
- produce a concrete project delta: code, docs, config, tests, CI, or review artifact
- reduce ambiguity through explicit planning, verification, and final validation skills
- leave reusable project context so future tasks are faster and safer
Do Not Use For
- non-C# .NET languages such as F# or VB
- analyzer-only or formatter-only setup with no language feature choice
Inputs
- target
TFMorTFMs - explicit
LangVersion, if any - current SDK version
- team style rules in
.editorconfigandAGENTS.md
Quick Start
- Read the nearest
AGENTS.mdand confirm scope and constraints. - Run this skill's
Workflowthrough theRalph Loopuntil outcomes are acceptable. - Return the
Required Result Formatwith concrete artifacts and verification evidence.
Workflow
- Detect the real language ceiling from the repo's target framework and explicit
LangVersion. - Prefer stable features that the current repo actually supports.
- Use modern syntax when it reduces ceremony, improves correctness, or makes invariants clearer.
- Do not mass-rewrite a codebase into newer syntax unless the repo wants that churn.
- Treat preview features as opt-in only. Never assume preview because the current machine has a newer SDK.
- Pay special attention to C# 13 and C# 14:
- C# 13 is the stable language for
.NET 9 - C# 14 is the stable language for
.NET 10
- C# 13 is the stable language for
- When feature selection changes architecture, style rules, or generated-code patterns, coordinate with:
dotnetdotnet-analyzer-configdotnet-architecture
- After feature-driven refactors, run the repo's .NET quality pass through
dotnet.
Bootstrap When Missing
If the requested C# feature depends on SDK or language support the repo does not have yet:
- Detect current state:
dotnet --list-sdksrg -n "TargetFramework|LangVersion|TargetFrameworks" -g '*.csproj' -g 'Directory.Build.*' .
- Confirm whether the repo wants to stay on the current stable language level or intentionally upgrade.
- If the feature requires a newer supported SDK or target framework, upgrade the repo toolchain deliberately instead of relying on the local machine by accident.
- If the repo needs explicit
LangVersion, record it in project or shared MSBuild config. - Run
dotnet build SOLUTION_OR_PROJECTafter the feature or toolchain change and returnstatus: configuredorstatus: improved. - If the repo intentionally stays below the required language level, return
status: not_applicable.
Deliver
- modern C# code that fits the repo's real language version
- fewer obsolete patterns when a newer stable feature is clearer
- no accidental preview or unsupported-language drift
Validate
- the chosen syntax is supported by the repo's
TFMandLangVersion - the feature improves clarity, correctness, or maintainability
- preview-only features are used only when the repo explicitly opted in
- style and analyzer rules still agree with the new syntax
Ralph Loop
Use the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
- Plan first (mandatory):
- analyze current state
- define target outcome, constraints, and risks
- write a detailed execution plan
- list final validation skills to run at the end, with order and reason
- Execute one planned step and produce a concrete delta.
- Review the result and capture findings with actionable next fixes.
- Apply fixes in small batches and rerun the relevant checks or review steps.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable or only explicit exceptions remain.
- If a dependency is missing, bootstrap it or return
status: not_applicablewith explicit reason and fallback path.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current iteration stepactions_taken: concrete changes madevalidation_skills: final skills run, or skipped with reasonsverification: commands, checks, or review evidence summaryremaining: top unresolved items ornone
For setup-only requests with no execution, return status: configured and exact next commands.
Load References
references/patterns.mdreferences/migration.mdreferences/csharp-modern-features.md
Example Requests
- "Make this C# code more modern."
- "Which features can we use on .NET 9?"
- "Review this repo for C# 13 or C# 14 opportunities."
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

