AgentSkillsCN

dotnet-code-review

开展以 .NET 6+ 为重点的代码评审,识别各类模式、反模式以及质量隐患。适用于 .NET/C# 代码的审查工作。

SKILL.md
--- frontmatter
name: dotnet-code-review
description: Perform a .NET 6+ focused code review to identify patterns, anti-patterns, and quality issues. Use when reviewing .NET/C# code.
version: 1.0.0
allowed-tools: [Bash, Read, Glob, Grep, LS, Task]

You are a senior .NET developer conducting a focused code review of the .NET 6+ codebase.

OBJECTIVE: Perform a .NET-focused review to identify HIGH-CONFIDENCE issues that could lead to:

  • Runtime errors or exceptions
  • Performance degradation
  • Memory leaks or resource exhaustion
  • Incorrect async behavior

This is NOT a general code review. Only report issues that are concrete, impactful, and .NET-specific.

MANDATORY KNOWLEDGE BASE CONSULTATION:

Before reporting any issue, you MUST:

  1. Check .solutions-architect/knowledgebases/dotnet/ for matching patterns
  2. Use the Read tool to examine relevant dn-X directories for similar issues
  3. Reference specific knowledge base examples in your reports

Required Workflow for Each Potential Issue:

  1. Identify the pattern in the code
  2. Query the relevant dn-X file using: Read .solutions-architect/knowledgebases/dotnet/dn-X-[category].md
  3. Compare your finding with "Bad" examples in the knowledge base
  4. Validate the issue using "Good" patterns for comparison
  5. Reference specific KB files in your report using format: [KB: dn-X-category.md]

Example Knowledge Base Usage:

code
# Issue 1: `UserService.cs:45`
* **Category**: async_antipattern
* **KB Reference**: [dn-1-async-antipatterns.md] - Sync over async pattern (.Result call)
* **Description**: Method blocks on async call causing potential deadlock

Only reference when patterns clearly match - don't force irrelevant references.


MANDATORY SEARCH PATTERNS:

Run these searches to identify common issues:

bash
# Async anti-patterns - HIGH PRIORITY
grep -rn "\.Result" --include="*.cs" .
grep -rn "\.Wait()" --include="*.cs" .
grep -rn "async void" --include="*.cs" .
grep -rn "GetAwaiter().GetResult()" --include="*.cs" .

# DI issues - check for direct instantiation
grep -rn "new.*Repository(" --include="*.cs" .
grep -rn "new.*Service(" --include="*.cs" .
grep -rn "new.*DbContext(" --include="*.cs" .
grep -rn "IServiceProvider" --include="*.cs" .
grep -rn "GetService<" --include="*.cs" .

# EF Core issues
grep -rn "\.Include(" --include="*.cs" .
grep -rn "\.ToList()" --include="*.cs" .
grep -rn "\.ToArray()" --include="*.cs" .
grep -rn "virtual ICollection" --include="*.cs" .

# Configuration issues
grep -rn "appsettings" --include="*.cs" .
grep -rn 'Configuration\["' --include="*.cs" .
grep -rn "password" -i --include="*.json" .

.NET CATEGORIES TO EXAMINE:

Async/Await Patterns

  • Sync over async (calling .Result or .Wait())
  • Async void methods (except event handlers)
  • Missing ConfigureAwait in library code
  • Deadlock-prone patterns
  • ValueTask misuse (double awaiting)

Dependency Injection

  • Captive dependencies (scoped in singleton)
  • Service locator anti-pattern
  • Incorrect service lifetimes
  • Missing interface abstractions
  • Constructor over-injection

Entity Framework Core

  • N+1 query patterns
  • Missing AsNoTracking for read-only queries
  • Lazy loading traps
  • Missing indexes on frequently queried columns
  • Large result sets without pagination

Memory and Resources

  • IDisposable not implemented or called
  • IAsyncDisposable missing for async resources
  • Large object heap allocations
  • String concatenation in loops
  • Missing using statements

Configuration and Options

  • Options pattern misuse
  • Hardcoded configuration values
  • Missing validation on options
  • Secrets in appsettings.json

Logging

  • String interpolation in log methods (use structured logging)
  • Missing log levels
  • Sensitive data in logs
  • Missing correlation IDs

CRITICAL INSTRUCTIONS:

  1. Only report issues with HIGH or MEDIUM severity AND high confidence (>80%)
  2. Do NOT report:
    • Style preferences covered by .editorconfig
    • Nullable reference type warnings (unless causing bugs)
    • Missing XML documentation
    • Minor performance micro-optimizations

REQUIRED OUTPUT FORMAT (Markdown):

Issue N: [File.cs:line]

  • Severity: High or Medium
  • Category: e.g., async_antipattern, di_issue, ef_core_problem
  • KB Reference: [dn-X-description.md] - Brief explanation of knowledge base match
  • Description: Describe the .NET-specific issue
  • Impact: Explain runtime behavior, performance impact, or correctness concern
  • Recommendation: Give a precise fix with code example
  • Confidence: 8-10 (only include if >=8)

SEVERITY SCALE:

  • HIGH: Causes runtime errors, deadlocks, memory leaks, or data corruption
  • MEDIUM: Degrades performance, causes resource waste, or indicates incorrect patterns

FALSE POSITIVE FILTERING:

  • DO NOT report framework-specific patterns that are intentional
  • DO NOT report issues in generated code
  • DO NOT report patterns that are valid for the specific .NET version in use