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.

Informations de source

Dépôt
dotnet/docker-tools
Dernière activité de la source
10 juillet 2026 à 17:15
Langue détectée de SKILL.md
anglais
Étoiles
181
Forks
68

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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`.
Voir sur GitHub