💻 Développement

dotnet-csharp-advisor

Développement .NET/C# avec ASP.NET Core, EF Core et patterns modernes.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dotnet-csharp-advisor --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dotnet-csharp-advisor -Launch"

🚀 Déjà installé ?

claude "/dotnet-csharp-advisor"

Ou tapez /dotnet-csharp-advisor dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

.NETC#ASP.NETEF CoreEntity FrameworkMinimal APIBlazorLINQNuGetdotnet

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/dev-skills/dotnet-csharp-advisor ~/.claude/skills/

Source : dev-skills/dotnet-csharp-advisor

📖 Manuel

.NET/C# Advisor

Workflow

  1. Setup projet : Créer avec dotnet new (webapi, console, classlib, solution), organiser en multi-projets (API, Domain, Infrastructure, Tests), configurer les global usings dans GlobalUsings.cs, centraliser les propriétés dans Directory.Build.props (versions NuGet, nullable, warnings), utiliser Directory.Packages.props pour la gestion centralisée des versions de packages.
  1. C# moderne : Utiliser les record pour les DTOs et Value Objects immutables (record UserDto(string Name, string Email)), le pattern matching exhaustif (switch expressions, is patterns, list patterns), activer les nullable reference types (<Nullable>enable</Nullable>) pour éliminer les NullReferenceExceptions, les primary constructors (C# 12) pour la concision, les raw string literals ("""...""") pour JSON/SQL embarqués.
  1. ASP.NET Core : Choisir entre Minimal APIs (projets simples, microservices) et Controllers (projets complexes, CQRS), comprendre le middleware pipeline (ordre critique : exception handler → HTTPS → auth → routing → endpoints), configurer l'injection de dépendances (Singleton, Scoped, Transient), utiliser l'options pattern (IOptions<T>, IOptionsSnapshot<T>) pour la configuration typée.
  1. Entity Framework Core : Définir le DbContext avec des DbSet<T>, configurer les entités via Fluent API (modelBuilder.Entity<T>().HasKey(...)), générer et appliquer les migrations (dotnet ef migrations add, dotnet ef database update), optimiser les queries (éviter N+1 avec .Include(), utiliser .AsNoTracking() en lecture seule), les bulk operations avec ExecuteUpdateAsync/ExecuteDeleteAsync (EF Core 7+), les interceptors pour le soft delete.
  1. Authentication et security : Implémenter ASP.NET Core Identity pour l'authentification locale, configurer JWT Bearer authentication (AddAuthentication().AddJwtBearer(...)), intégrer OAuth2/OIDC avec des providers externes (Microsoft, Google), définir des authorization policies (RequireRole, RequireClaim, policy-based), protéger les données sensibles avec l'API Data Protection, appliquer HTTPS, CORS et les security headers.
  1. Background processing : Implémenter des tâches récurrentes avec IHostedService et BackgroundService, planifier des jobs avec Hangfire (dashboard intégré, retry automatique, jobs récurrents Cron), utiliser les Worker Services (template dédié) pour les processus longue durée, les System.Threading.Channels pour les pipelines producteur/consommateur in-process haute performance.
  1. Testing .NET : Structurer les tests avec xUnit ([Fact], [Theory], [InlineData]), mocker les dépendances avec Moq (Mock<T>) ou NSubstitute (API plus fluide), tester les endpoints ASP.NET Core avec WebApplicationFactory<T> (sans démarrer de vrai serveur), utiliser Testcontainers pour les tests d'intégration avec vraies bases de données, générer des données de test réalistes avec Bogus (Faker<T>).
  1. Performance .NET : Utiliser Span<T> et Memory<T> pour éviter les allocations sur le tas dans les hot paths, StringBuilder pour la concaténation de strings en boucle, les source generators ([GeneratedRegex], JsonSerializerContext) pour déplacer le travail à la compilation, la compilation AOT (Native AOT) pour les temps de démarrage rapides, benchmarker avec BenchmarkDotNet ([Benchmark], [MemoryDiagnoser]) avant/après optimisation.

Règles