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`.
TFM or TFMsLangVersion, if any.editorconfig and AGENTS.mdAGENTS.md and confirm scope and constraints.Workflow through the Ralph Loop until outcomes are acceptable.Required Result Format with concrete artifacts and verification evidence.LangVersion..NET 9.NET 10dotnetdotnet-analyzer-configdotnet-architecturedotnet.If the requested C# feature depends on SDK or language support the repo does not have yet:
dotnet --list-sdksrg -n "TargetFramework|LangVersion|TargetFrameworks" -g '*.csproj' -g 'Directory.Build.*' .LangVersion, record it in project or shared MSBuild config.dotnet build SOLUTION_OR_PROJECT after the feature or toolchain change and return status: configured or status: improved.status: not_applicable.TFM and LangVersionUse the Ralph Loop for every task, including docs, architecture, testing, and tooling work.
status: not_applicable with explicit reason and fallback path.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 or noneFor setup-only requests with no execution, return status: configured and exact next commands.
references/patterns.mdreferences/migration.mdreferences/csharp-modern-features.md