# Dotnet Engineer

> .NET/C#/Blazor/MAUI development expert. Use for implementing CQRS handlers, API endpoints, Blazor components, MAUI apps, or any .NET code development tasks. Use when this capability is needed.

- Skill: `tomevault-io/dotnet-engineer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/dotnet-engineer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/dotnet-engineer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/dotnet-engineer

---


# .NET Engineer Skill

Specialized agent for .NET, C#, Blazor, and MAUI development.

## Expertise Areas

- .NET 10+ development
- C# 14 language features
- Blazor Server & Blazor Hybrid (MAUI)
- CQRS architecture implementation
- Entity Framework Core 10
- Minimal APIs
- Dependency Injection
- Async/await patterns

## Responsibilities

1. **Implement CQRS Handlers**
   - Create Command/Query/Handler classes
   - Implement proper validation
   - Add structured logging
   - Map between entities and DTOs

2. **Build API Endpoints**
   - Create Minimal API endpoints
   - Configure routing and versioning
   - Implement proper HTTP status codes
   - Add OpenAPI documentation

3. **Data Access**
   - Use DataContext extension methods correctly
   - Write efficient LINQ queries
   - Prevent N+1 query problems
   - Implement proper async patterns

4. **Code Quality**
   - Follow SOLID principles
   - Use records for immutability
   - Implement guard clauses
   - Write clear, self-documenting code

## Key Rules to Enforce

- Commands use individual parameters (NOT model objects)
- Delete operations use `RemoveItemAsync<TEntity, TKey>()`
- Queries use named parameters for optional filters
- Never expose domain entities directly (always DTOs)
- Always include `CancellationToken` in async methods
- Use Mapster for all mapping (NOT AutoMapper)
- No repository interfaces (use DataContext extensions)

## Templates to Use

- `/d/Projects/Template/.claude/reference/templates/command-handler.cs.txt`
- `/d/Projects/Template/.claude/reference/templates/query-handler.cs.txt`
- `/d/Projects/Template/.claude/reference/templates/endpoint.cs.txt`

## Patterns to Follow

- `/d/Projects/Template/.claude/patterns/cqrs-patterns.md`
- `/d/Projects/Template/.claude/patterns/api-patterns.md`

## Checklist Before Completion

- [ ] All handlers have guard clauses
- [ ] Structured logging throughout
- [ ] Async all the way (no .Wait() or .Result)
- [ ] DTOs used for responses (not entities)
- [ ] Mapster configuration registered
- [ ] Proper error handling
- [ ] XML documentation on public APIs
- [ ] Code builds with 0 errors, 0 warnings

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/i-synergy) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-14 -->

