Voltar ao índice
Ferramentas e automação Fonte oficial

Boas práticas de .NET e C# alinhadas ao projeto

Revise código .NET e C# considerando documentação XML, arquitetura, injeção de dependência, async/await, localização e testes.

Ver código no GitHub Instala diretamente do repositório-fonte.

O que esta skill faz

Esta skill verifica se código .NET e C# segue as práticas estabelecidas pela solution ou pelo projeto. Ela abrange estrutura, documentação pública, padrões de criação, serviços, recursos localizados, operações assíncronas e testes.

Quando usar

  • Revisar classes e APIs públicas em C#
  • Padronizar injeção e registro de dependências
  • Aplicar padrões Command Handler e Factory
  • Melhorar documentação XML e localização
  • Avaliar operações assíncronas e testes

Como usar

  1. Revise a solution, os projetos e as convenções existentes
  2. Inspecione o trecho selecionado ou todo o repositório
  3. Compare estrutura, documentação e dependências com os padrões locais
  4. Aplique mudanças compatíveis com a arquitetura encontrada
  5. Execute build e testes configurados no projeto

O que revisar antes de instalar

  • Algumas recomendações são convenções específicas da solution
  • ConfigureAwait(false) deve ser usado apenas quando apropriado
  • Frameworks de teste e padrões arquiteturais devem ser confirmados no projeto

SKILL.md

---
name: dotnet-best-practices
description: 'Ensure .NET/C# code meets best practices for the solution/project.'
---

# .NET/C# Best Practices

Your task is to ensure .NET/C# code in ${selection} meets the best practices specific to this solution/project. This includes:

## Documentation & Structure

- Create comprehensive XML documentation comments for all public classes, interfaces, methods, and properties
- Include parameter descriptions and return value descriptions in XML comments
- Follow the established namespace structure: {Core|Console|App|Service}.{Feature}

## Design Patterns & Architecture

- Use primary constructor syntax for dependency injection (e.g., `public class MyClass(IDependency dependency)`)
- Implement the Command Handler pattern with generic base classes (e.g., `CommandHandler<TOptions>`)
- Use interface segregation with clear naming conventions (prefix interfaces with 'I')
- Follow the Factory pattern for complex object creation.

## Dependency Injection & Services

- Use constructor dependency injection with null checks via ArgumentNullException
- Register services with appropriate lifetimes (Singleton, Scoped, Transient)
- Use Microsoft.Extensions.DependencyInjection patterns
- Implement service interfaces for testability

## Resource Management & Localization

- Use ResourceManager for localized messages and error strings
- Separate LogMessages and ErrorMessages resource files
- Access resources via `_resourceManager.GetString("MessageKey")`

## Async/Await Patterns

- Use async/await for all I/O operations and long-running tasks
- Return Task or Task<T> from async methods
- Use ConfigureAwait(false) where appropriate
- Handle async exceptions properly

## Testing Standards

- Use MSTest framework with FluentAssertions for assertions
- Follow AAA pattern (Arrange, Act, Assert)
- Use Moq for mocking dependencies
- Test both success and failure scenarios
- Include null parameter validation tests

## Configuration & Settings

- Use strongly-typed configuration classes with data annotations
- Implement validation attributes (Required, NotEmptyOrWhitespace)
- Use IConfiguration binding for settings
- Support appsettings.json configuration files

## Semantic Kernel & AI Integration

- Use Microsoft.SemanticKernel for AI operations
- Implement proper kernel configuration and service registration
- Handle AI model settings (ChatCompletion, Embedding, etc.)
- Use structured output patterns for reliable AI responses

## Error Handling & Logging

- Use structured logging with Microsoft.Extensions.Logging
- Include scoped logging with meaningful context
- Throw specific exceptions with descriptive messages
- Use try-catch blocks for expected failure scenarios

## Performance & Security

- Use C# 12+ features and .NET 8 optimizations where applicable
- Implement proper input validation and sanitization
- Use parameterized queries for database operations
- Follow secure coding practices for AI/ML operations

## Code Quality

- Ensure SOLID principles compliance
- Avoid code duplication through base classes and utilities
- Use meaningful names that reflect domain concepts
- Keep methods focused and cohesive
- Implement proper disposal patterns for resources