review-dotnet
Skill8 starsChanged 2 months agoMITView on GitHub
Review .NET (C#/F#) code for language and runtime conventions: async/await, nullable, API versioning, IDisposable, LINQ, and testability. Language-only atomic skill; output is a findings list.
In this repository77 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- archive-milestoneSkill
- assess-product-opportunitySkill
- automate-testsSkill
- bump-versionSkill
- capture-work-itemsSkill
- commit-workSkill
- competitive-researchSkill
- consume-nats-messageSkill
- decontextualize-textSkill
- deep-researchSkill
- define-docs-normsSkill
- define-missionSkill
- define-north-starSkill
- define-roadmapSkill
- define-strategic-pillarsSkill
- define-visionSkill
- deliver-featureSkill
- design-strategic-goalsSkill
- eli5Skill
- establish-delivery-workflowSkill
- execute-delivery-workflowSkill
- generate-agent-entrySkill
- generate-github-workflowSkill
- generate-standard-readmeSkill
- inspect-artifact-stateSkill
- integrate-branchesSkill
- manage-secretSkill
- map-item-dependenciesSkill
- market-researchSkill
- orchestrate-code-reviewSkill
- orchestrate-governance-stepSkill
- orchestrate-repair-loopSkill
- orchestrate-repair-requirements-loopSkill
- orchestrate-roadmap-planningSkill
- plan-milestonesSkill
- plan-nextSkill
- policy-researchSkill
- ponytailSkill
- prepare-presales-responseSkill
- prepare-version-notesSkill
- prioritize-backlogSkill
- product-opportunity-analysisSkill
- promote-roadmap-itemsSkill
- publish-nats-messageSkill
- record-milestone-achievementSkill
- redeploy-localSkill
- refine-skill-designSkill
- review-architectureSkill
- review-codebaseSkill
- review-diffSkill
- review-error-surfacingSkill
- review-functional-designSkill
- review-goSkill
- review-implementation-alignmentSkill
- review-javaSkill
- review-observabilitySkill
- review-orm-usageSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 5 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 30
Acceptance: test: does the output carry a .NET-centred findings list whose file:line references cover every relevant language/runtime …
- Distinctive: line 61
.NET-only review: when the user wants to check language/runtime conventions alone (after adding new C# files, for example).
- Distinctive: line 64
When to use: when the code under review is .NET (C#/F#) and the task includes language/runtime quality.
- Distinctive: line 109
Do not: check .NET-specific rules in non-.NET code unless the user explicitly includes it (an embedded script, for example).
- Very specific: line 115
Do not select or define the code scope - the caller or orchestrate-code-review sets it
- Very specific: line 116
Do not perform security analysis — use review-security
- Very specific: line 117
Do not perform architecture analysis — use review-architecture
- Distinctive: line 118
Do not review non-.NET code against .NET conventions
- Very specific: line 123
When the user wants a full review (scope + language + cognitive), redirect to orchestrate-code-review
- Very specific: line 124
When a security problem turns up in .NET code, note it and suggest review-security
≈ “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
Skill: Review .NET
Purpose
Review only the language and runtime conventions of code in the .NET ecosystem (C#, F#). Do not define the scope (diff vs codebase) and do not run security/architecture analysis; the scope and cognitive skills handle those. Emit a findings list in the standard format for aggregation. Concentrate on async/await and ConfigureAwait, nullable reference types and avoiding NREs, API and versioning, resources and IDisposable, collections and LINQ, and testability.
Core Objective
Primary goal: produce a .NET language/runtime findings list covering async/await, nullable types, API stability, resource management, LINQ usage and testability across the given code scope.
Success criteria (all of them must hold):
- ✅ .NET scope only: only .NET (C#/F#) language and runtime conventions were reviewed; no scope selection, security or architecture analysis was performed
- ✅ All six .NET dimensions covered: async/await, nullable reference types, API/versioning, resources/IDisposable, collections/LINQ and testability where relevant
- ✅ Findings format compatible: every finding carries every element findings-list §5.1 requires, with category
language-dotnet - ✅ file:line references: every finding points at a specific file location with a line number
- ✅ Non-.NET code excluded: .NET-specific rules are not applied to non-.NET files unless they are explicitly in scope
Acceptance test: does the output carry a .NET-centred findings list whose file:line references cover every relevant language/runtime dimension, and without security, architecture or scope analysis?
Scope Boundaries
This skill owns:
- async/await correctness and ConfigureAwait usage (library vs application code)
- Nullable reference types and avoiding NREs
- Public API stability and the versioning policy
- IDisposable, IAsyncDisposable and using-statement patterns
- Collection and LINQ efficiency (multiple enumeration, allocation, Span/Memory)
- Testability (DI, sealed vs overridable, static usage)
This skill does not own:
- Scope selection — the scope comes from the caller
- Security analysis (injection, auth, cryptography) — use
review-security - Architecture analysis — use
review-architecture - A performance deep dive — use
review-performance - A full orchestrated review — use
orchestrate-code-review - Codebase state review — use
review-codebase
Handoff point: once every .NET finding has been emitted, hand it to orchestrate-code-review for aggregation. For security or architecture problems spotted in .NET code, note them and suggest running the appropriate cognitive skill.
Use Cases
- Orchestrated review: used as the language step when orchestrate-code-review runs scope → language → framework → library → cognitive over a .NET project.
- .NET-only review: when the user wants to check language/runtime conventions alone (after adding new C# files, for example).
- Pre-PR .NET checklist: confirm that the async, nullable and resource patterns are correct.
When to use: when the code under review is .NET (C#/F#) and the task includes language/runtime quality. The scope (diff vs path) is set by the caller or the user.
Behavior
What this skill covers
- Analyze: .NET language and runtime conventions inside the given code scope (files or a diff supplied by the caller). It does not decide the scope; it takes the code scope as input.
- Do not: perform scope selection (diff vs codebase), a security review or an architecture review; do not look at non-.NET files unless asked to disregard the language.
Review checklist (.NET dimensions only)
- async/await and ConfigureAwait: correct use of async; ConfigureAwait(false) where appropriate (library code); cancellation-token propagation; avoid async void outside event handlers.
- Nullable reference types and NREs: nullable annotations; null checks and null-forgiving where justified; avoid needless null-forgiving.
- API and versioning: public API surface stability; breaking changes; the versioning or deprecation policy for a library.
- Resources and IDisposable: correct use of IDisposable, the using statement, IAsyncDisposable; no leaked handles or streams.
- Collections and LINQ: appropriate use of LINQ; allocation and enumeration; avoid multiple enumeration; Span/Memory where relevant.
- Testability: dependency injection and testability; static usage; sealed vs overridable where it affects tests.
Tone and references
- Professional and technical: cite a concrete location (file:line). Emit findings carrying every element findings-list §5.1 requires.
Input and Output
Input
- Code scope: files or directories (or a diff) already selected by the user or by the scope skill. This skill does not decide the scope; it checks language conventions in the .NET code it is given.
Output
- Emit zero or more findings in the format defined in specs/findings-list.md, with Category
language-dotnet. - The category for this skill is language-dotnet.
Restrictions
Hard Boundaries
- Do not perform security, architecture or scope selection. Stay inside .NET language and runtime conventions.
- Do not emit a finding without a precise location. When a suggestion is included, it must be actionable; follow the canonical Findings Spec for required elements.
- Do not check .NET-specific rules in non-.NET code unless the user explicitly includes it (an embedded script, for example).
Skill Boundaries
Do not do these (other skills handle them):
- Do not select or define the code scope - the caller or
orchestrate-code-reviewsets it - Do not perform security analysis — use
review-security - Do not perform architecture analysis — use
review-architecture - Do not review non-.NET code against .NET conventions
When to stop and hand off:
- Once every .NET finding has been emitted, hand it to
orchestrate-code-reviewfor aggregation - When the user wants a full review (scope + language + cognitive), redirect to
orchestrate-code-review - When a security problem turns up in .NET code, note it and suggest
review-security
Self-Check
Core success criteria
- .NET scope only: only .NET (C#/F#) language and runtime conventions were reviewed; no scope selection, security or architecture analysis was performed
- All six .NET dimensions covered: async/await, nullable reference types, API/versioning, resources/IDisposable, collections/LINQ and testability where relevant
- Findings format conformant: every finding carries every element findings-list §5.1 requires, with category
language-dotnet - file:line references: every finding points at a specific file location with a line number
- Non-.NET code excluded: .NET-specific rules are not applied to non-.NET files unless they are explicitly in scope
Process quality checks
- Were only the .NET language/runtime dimensions reviewed (no scope/security/architecture)?
- Were the relevant async, nullable, IDisposable, LINQ and testability aspects covered?
- Does every finding carry every element findings-list §5.1 requires, with category=language-dotnet?
- Does a file:line reference point at each issue?
Acceptance test
Does the output carry a .NET-centred findings list with file:line references covering every relevant language/runtime dimension, and without security, architecture or scope analysis?
Examples
Example 1: an async method
- Input: an async C# method that calls other async methods without passing a CancellationToken.
- Expected: emit a finding on CancellationToken propagation (minor/suggestion, say); cite the method and its parameter list. category = language-dotnet.
Example 2: nullable and disposal
- Input: a C# class that holds an IDisposable but neither implements IDisposable nor uses using.
- Expected: emit a finding on resource disposal, and possibly on nullability if the field can be null. category = language-dotnet.
Edge case: mixed C# and SQL
- Input: a file containing C# alongside embedded SQL strings.
- Expected: review only the C# part against .NET conventions (async, nullable, disposal, say). Do not emit SQL injection findings; those belong to review-security or review-sql.
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.

