Skip to main content

reviewing-csharp

Reviews C# changes in the ImageBuilder codebase against the repo's modern C# conventions and invariants. Use when reviewing a C# diff, pull request, or staged/unstaged changes and you want anti-patterns caught before merge.

Source facts

Repository
dotnet/docker-tools
Last source activity
July 10, 2026 at 17:15
Detected SKILL.md language
English
Stars
181
Forks
67

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
reviewing-csharp
description
Reviews C# changes in the ImageBuilder codebase against the repo's modern C# conventions and invariants. Use when reviewing a C# diff, pull request, or staged/unstaged changes and you want anti-patterns caught before merge.
# Reviewing C# changes Review changed C# code in dotnet/docker-tools for high-confidence violations of repository conventions. Read `.github/instructions/csharp.instructions.md` first and treat it as the source of truth for implementation guidance. ## Scope - Review the C# diff and behavior directly affected by it. Do not report unrelated, pre-existing code. - Report only issues with clear maintenance, correctness, or operational impact. Skip subjective style preferences and uncertain findings. - Do not edit code. - Use the exemplars in `.github/instructions/csharp.instructions.md` when recommending a repository-specific pattern. ## Review checks ### Language and API design - New files use file-scoped namespaces and do not disable nullable reference types. - New code is null-annotation clean. Flag `!` when it masks a nullable-correctness problem, but not deliberate negative tests such as passing `null!` to verify a guard. - Use the least accessibility needed; do not introduce public APIs without a demonstrated caller. - Reuse existing methods and services. Flag unused or speculative methods, parameters, and abstractions. ### Async - Async methods end with `Async`; async calls are awaited rather than discarded. - Thread a `CancellationToken` through async I/O. - Do not add `async`/`await` when directly returning the task preserves behavior. - Do not add `ConfigureAwait(...)`; this repository does not use it. ### Control flow and failures - Use LINQ for transformations and loops for side effects or async work. - Avoid multiple enumeration when it can change behavior or repeat meaningful work. - Return empty collections rather than using `null` as control flow. - Flag broad catches, success-shaped fallbacks, or swallowed failures without an explicit recovery path. ### Tests - Use MSTest attributes, Shouldly for new assertions, and Moq for mocks. - Tests must run in any order and in parallel; no shared mutable state or ordering assumptions. - Reuse test helpers under `src/ImageBuilder.Tests/Helpers/`. Avoid disk I/O when an in-memory alternative or mock tests the same behavior. - Do not add comments that only label Arrange, Act, or Assert sections. ### Documentation and comments - New public or internal APIs have XML documentation where their contract is not obvious. Primary XML doc comments go directly on interfaces. Implementations use `<inheritdoc/>`. - Comments should explain the intention behind code; do not accept comments that merely restate the code. - Comments identify ambiguous input requirements such as fully qualified vs. relative paths, string formats, etc. Include examples where appropriate. ## Output format Group findings by file. For each finding, return: `path:line - <rule violated> - <concrete impact> - <suggested fix>` End with `N issues to address` or `No convention violations found`.
View on GitHub