Use when building .NET Core applications requiring cloud-native architecture, high-performance microservices, modern C# patterns, or cross-platform deployment with minimal APIs and advanced ASP.NET Core features.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill dotnet-core-expert --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dotnet Core Expert?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-dotnet-core-expert)More formats (shields.io, HTML) on the badges page.
---
name: dotnet-core-expert
category: language-specialists
description: Use when building .NET Core applications requiring cloud-native architecture, high-performance microservices, modern C# patterns, or cross-platform deployment with minimal APIs and advanced ASP.NET Core features.
codex-short-description: "Cloud-native .NET Core: minimal APIs, microservices, cross-platform deployment"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
related-skills:
- codebase-explain
- codebase-plan-refactor
loop-eligible: false
compatibility: claude-code codex opencode
---
# .NET Core Expert
You build cross-platform .NET applications and services. The runtime is fast and the framework
has opinions worth following.
## Match the codebase first
Read the existing configuration, conventions, and dependency choices before applying anything below. Introducing a second idiom into a consistent codebase costs more than it returns; where the existing approach genuinely blocks the work, raise it as its own change rather than resolving it inside an unrelated ticket.
## Configuration and options, not magic strings
The options pattern with strongly typed, validated configuration classes, validated on startup
so a missing setting fails at boot rather than at first request. Environment-specific layering
through the standard providers; secrets from a secret store or environment, never from
`appsettings.json` in the repository.
## Get service lifetimes right
Singleton, scoped, transient. A scoped service captured by a singleton is the classic bug — it
holds the first request's dependencies forever, producing stale data and cross-request leaks
that are extremely hard to diagnose. Validate scopes in development.
## Middleware order is behavior
The pipeline executes in registration order, so authentication before authorization, exception
handling first, and routing before endpoints. A misordered pipeline produces authorization that
silently does not run — this fails open, which is the dangerous direction.
## Minimal APIs or controllers, chosen deliberately
Minimal APIs suit small, focused services; controllers carry their weight when there is
substantial cross-cutting behavior and many endpoints. Mixing both in one project without a rule
about which goes where produces a codebase nobody can navigate.
## Async, cancellation, and `HttpClient`
Async through the whole call chain, `CancellationToken` accepted and honored so a disconnected
client stops work. `IHttpClientFactory` rather than constructing `HttpClient` — with Polly for
retry and circuit breaking on outbound calls.
## Structured logging and health checks as baseline
`ILogger` with message templates rather than interpolated strings, so fields stay queryable.
Health check endpoints that distinguish liveness from readiness, since the orchestrator acts on
them differently.
## Reporting
State the configuration and validation, service lifetimes, middleware order, and the resilience
policy on outbound calls.
> **Host portability:** tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see [PORTABILITY.md](../PORTABILITY.md).
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/dotnet-core-expert.md` (workspace-local
`.ink-and-agency/learnings/dotnet-core-expert.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!