csharp-developer — Claude Code skill: what it does, how to install
Enforces .NET 8 and C# 12 development practices for ASP.NET Core APIs and Blazor apps. Useful when writing asynchronous services with EF Core and MediatR.
npx skills add Jeffallan/claude-skills --skill csharp-developer -a claude-codeWhat csharp-developer does
This skill guides coding agents through .NET 8 conventions. It mandates file-scoped namespaces, C# 12 primary constructors, and CancellationToken propagation across asynchronous methods. Blocking calls like .Result are forbidden. Thread pool deadlocks are eliminated.
Domain models stay separated from public APIs because EF Core entities must map to DTOs. For database changes, the workflow enforces an inspection checkpoint right after dotnet ef migrations add <Name> to catch accidental column drops early. Application failures return via a dedicated Result<T> struct instead of unchecked exceptions.
What it helps with
- scaffold ASP.NET Core Minimal APIs with proper cancellation handling
- configure EF Core data access and review migrations before applying
- build Blazor components with state management
- structure backend logic using CQRS via MediatR and Result structs
Example prompts for the agent
- Create a Minimal API endpoint for products using MediatR and CancellationToken
- Set up an EF Core DbContext with migrations and DTO mappings
- Implement a Blazor Server component with state management
How to install csharp-developer
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill csharp-developer -a claude-code2Manually: put the files in place
~/.claude/skills/csharp-developer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/csharp-developer/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill csharp-developer -a codex2Manually: put the files in place
.agents/skills/csharp-developer/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill csharp-developer -a cursor2Manually: put the files in place
.cursor/skills/csharp-developer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Jeffallan/claude-skills csharp-developer2Manually: put the files in place
.github/skills/csharp-developer/SKILL.md1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill csharp-developer -a gemini-cli2Platform CLI
gemini skills install https://github.com/Jeffallan/claude-skills --path skills/csharp-developerManually: put the files in place
.devin/skills/csharp-developer/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill csharp-developer -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set61
The whole set →Similar
Questions about csharp-developer
How to install csharp-developer in Claude Code?
Run npx skills add Jeffallan/claude-skills --skill csharp-developer -a claude-code in your terminal.
What does csharp-developer do?
It instructs the agent to write .NET 8 and C# 12 code adhering to modern standards, such as Minimal APIs, Blazor components, and EF Core mappings. It also prevents blocking calls like .Result.
How does the skill handle Entity Framework migrations?
It requires reviewing the migration file generated by dotnet ef migrations add <Name> before applying it to the database. If unintended column drops appear, you roll back using dotnet ef migrations remove.
Source text
SKILL.md · MIT
---
name: csharp-developer
description: "Use when building C# applications with .NET 8+, ASP.NET Core APIs, or Blazor web apps. Builds REST APIs using minimal or controller-based routing, configures database access with Entity Framework Core, implements async patterns and cancellation, structures applications with CQRS via MediatR, and scaffolds Blazor components with state management. Invoke for C#, .NET, ASP.NET Core, Blazor, Entity Framework, EF Core, Minimal API, MAUI, SignalR."
license: MIT
metadata:
author: https://github.com/Jeffallan
company: https://synergetic.solutions
version: "1.1.0"
domain: language
triggers: C#, .NET, ASP.NET Core, Blazor, Entity Framework, EF Core, Minimal API, MAUI, SignalR
role: specialist
scope: implementation
output-format: code
related-skills: api-designer, database-optimizer, devops-engineer
---
# C# Developer
Senior C# developer with mastery of .NET 8+ and Microsoft ecosystem. Specializes in high-performance web APIs, cloud-native solutions, and modern C# language features.
## When to Use This Skill
- Building ASP.NET Core APIs (Minimal or Controller-based)
- Implementing Entity Framework Core data access
- Creating Blazor web applications (Server/WASM)
- Optimizing .NET performance with Span<T>, Memory<T>
- Implementing CQRS with MediatR
- Setting up authentication/authorization
## Core Workflow
1. **Analyze solution** — Review .csproj files, NuGet packages, architecture
2. **Design models** — Create domain models, DTOs, validation
3. **Implement** — Write endpoints, repositories, services with DI
4. **Optimize** — Apply async patterns, caching, performance tuning
5. **Test** — Write xUnit tests with TestServer; verify 80%+ coverage
> **EF Core checkpoint (after step 3):** Run `dotnet ef migrations add <Name>` and review the generated migration file before applying. Confirm no unintended table/column drops. Roll back with `dotnet ef migrations remove` if needed.
## Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|-------|-----------|-----------|
| Modern C# | `references/modern-csharp.md` | Records, pattern matching, nullable types |
| ASP.NET Core | `references/aspnet-core.md` | Minimal APIs, middleware, DI, routing |
| Entity Framework | `references/entity-framework.md` | EF Core, migrations, query optimization |
| Blazor | `references/blazor.md` | Components, state management, interop |
| Performance | `references/performance.md` | Span<T>, async, memory optimization, AOT |
## Constraints
### MUST DO
- Enable nullable reference types in all projects
- Use file-scoped namespaces and primary constructors (C# 12)
- Apply async/await for all I/O operations — always accept and forward `CancellationToken`:
```csharp
// Correct
app.MapGet("/items/{id}", async (int id, IItemService svc, CancellationToken ct) =>
await svc.GetByIdAsync(id, ct) is { } item ? Results.Ok(item) : Results.NotFound());
```
- Use dependency injection for all services
- Include XML documentation for public APIs
- Implement proper error handling with Result pattern:
```csharp
public readonly record struct Result<T>(T? Value, string? Error, bool IsSuccess)
{
public static Result<T> Ok(T value) => new(value, null, true);
public static Result<T> Fail(string error) => new(default, error, false);
}
```
- Use strongly-typed configuration with `IOptions<T>`
### MUST NOT DO
- Use blocking calls (`.Result`, `.Wait()`) in async code:
```csharp
// Wrong — blocks thread and risks deadlock
var data = service.GetDataAsync().Result;
// Correct
var data = await service.GetDataAsync(ct);
```
- Disable nullable warnings without proper justification
- Skip cancellation token support in async methods
- Expose EF Core entities directly in API responses — always map to DTOs
- Use string-based configuration keys
- Skip input validation
- Ignore code analysis warnings
## Output Templates
When implementing .NET features, provide:
1. Domain models and DTOs
2. API endpoints (Minimal API or controllers)
3. Repository/service implementations
4. Configuration setup (Program.cs, appsettings.json)
5. Brief explanation of architectural decisions
## Example: Minimal API Endpoint
```csharp
// Program.cs (file-scoped, .NET 8 minimal API)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped<IProductService, ProductService>();
var app = builder.Build();
app.MapGet("/products/{id:int}", async (
int id,
IProductService service,
CancellationToken ct) =>
{
var result = await service.GetByIdAsync(id, ct);
return result.IsSuccess ? Results.Ok(result.Value) : Results.NotFound(result.Error);
})
.WithName("GetProduct")
.Produces<ProductDto>()
.ProducesProblem(404);
app.Run();
```
## Knowledge Reference
C# 12, .NET 8, ASP.NET Core, Minimal APIs, Blazor (Server/WASM), Entity Framework Core, MediatR, xUnit, Moq, Benchmark.NET, SignalR, gRPC, Azure SDK, Polly, FluentValidation, Serilog
Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)
[Documentation](https://jeffallan.github.io/claude-skills/skills/language/csharp-developer/)
© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills