dotnet-patterns

dotnet-patterns is a skill for Claude Code, Codex from jdanigo/hydraia. It costs 66 tokens per session (608 once invoked), scanned A, original, MIT.

A set of patterns for building back-end services in C# and .NET, Microsoft's development platform. It covers ASP.NET Core APIs, background workers, and database access with Entity Framework Core.

In plain words
What is it for?
Use it when structuring .NET features, configuring dependency injection, writing asynchronous APIs, accessing databases, handling errors, or preparing code for testing.
Why use it?
It helps avoid common service problems such as incorrect dependency lifetimes, blocked asynchronous code, unsafe database reads, and unreliable request cancellation.

Skill for Claude CodeCodex

Part of the hydraia plugin — 16 skills, 15 commands, 26 agents, 4 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/jdanigo/hydraia/dotnet-patterns
Any agent
npx skills add jdanigo/hydraia --skill dotnet-patterns
Clone the repo
git clone --depth 1 https://github.com/jdanigo/hydraia

Made for: Claude Code, Codex.

Or install hydraia, the plugin that ships this one along with the rest of its 16 skills, 15 commands, 26 agents, 4 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for dotnet-patterns

README.md
[![agentmods](https://agentmods.dev/badge/skills/jdanigo/hydraia/dotnet-patterns.svg)](https://agentmods.dev/skills/jdanigo/hydraia/dotnet-patterns)
Your own site
<a href="https://agentmods.dev/skills/jdanigo/hydraia/dotnet-patterns"><img src="https://agentmods.dev/badge/skills/jdanigo/hydraia/dotnet-patterns.svg" alt="Measured on agentmods" height="20"></a>
Per session 66 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 608 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00066 $0.00608
Opus 5 $0.00033 $0.00304
Sonnet 5 $0.00013 $0.00122
Haiku 4.5 $0.00007 $0.00061

Measured 3d ago against content hash 713bf467d072, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

dotnet-patterns scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/dotnet-patterns/SKILL.md · 47 lines

How it starts

The opening of the file, as written. The whole thing — 47 lines — stays where its author put it; the contents beside it link to each section on GitHub.

C#/.NET Backend Patterns

Layout

  • Vertical slices (feature folders: endpoint + handler + models per feature) for API-shaped services; full Clean Architecture layering only when the domain genuinely warrants it — record the choice as an ADR either way.
  • Minimal APIs for small/medium surfaces; MVC controllers when filters/model-binding complexity earns it.

DI lifetimes (the classic traps)

  • Scoped services must NEVER be captured by singletons (captive dependency — resolve via IServiceScopeFactory inside the singleton instead).
  • HttpClient via IHttpClientFactory, never new HttpClient() per call (socket exhaustion).
  • Register by interface at the boundary you intend to fake in tests; concrete elsewhere is fine.

Async all the way

  • No .Result/.Wait()/GetAwaiter().GetResult() on async paths — deadlock and threadpool starvation fuel.
  • CancellationToken flows from the endpoint through every service and EF call: await db.Orders.ToListAsync(ct). Endpoints accept it; libraries propagate it.
  • ValueTask only where profiling justifies it; default is Task.

EF Core discipline

  • Reads: AsNoTracking() by default; project to DTOs with Select — never return entities from queries that don't update.
  • No lazy-loading proxies: load explicitly (Include) so every query's shape is visible — N+1 becomes impossible to miss.
  • Migrations: one migration per change, reviewed like code; destructive column changes follow expand-contract (see db-optimization skill).
  • Transactions explicit where multi-write consistency matters (ExecutionStrategy + TransactionScope-free patterns with BeginTransactionAsync).

Config — options pattern

  • IOptions<T> with ValidateDataAnnotations().ValidateOnStart() — invalid config fails the boot, not the first request.
  • Secrets from user-secrets/KeyVault/env — never appsettings committed values.

Error contract

  • ProblemDetails (RFC 9457) via AddProblemDetails(); exceptions mapped centrally (exception handler middleware), typed domain exceptions → status codes. No try/catch per controller.
  • Nullable reference types ON project-wide; warnings as errors for new code.

Read the full file on GitHub · 47 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 47 lines · 0 tokens per session scan A 713bf467d072

Subscribe to this mod's changes

dotnet-patterns is a skill published in the GitHub repository jdanigo/hydraia (8 stars, last pushed 13d ago), licensed MIT. It adds 66 tokens to every session and 608 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

dotnet-inspect

Query .NET APIs across NuGet packages, platform libraries, and local files. Search for types, list API surfaces, compare and diff versions, find extension methods and implementors. Use whenever you need to answer questions about .NET library contents.

AgentEvalHQ/AgentEval · 54 tokens

csharp

C# and .NET 8+ coding conventions, naming standards, idiomatic patterns, CLI commands, dependency management, testing with xUnit, and XML documentation. Use when writing, reviewing, or refactoring C# code.

jnotsknab/mux-swarm · 49 tokens

agui-dotnet-streaming-chat

Get started with the AG-UI .NET SDK: bootstrap and run your first streaming-chat app (client + server) with the AG-UI .NET NuGet packages (AGUI.Client, AGUI.Server, AGUI.Formatting, AGUI.Abstractions). USE FOR: which packages to install and how to wire them; constructing an AGUIChatClient against an endpoint and…

ag-ui-protocol/ag-ui · 223 tokens

agui-dotnet-shared-state

Share structured, evolving state between an AG-UI agent and its client with the AG-UI .NET SDK — the client seeds state on the request, the server reads it, mutates it, and streams the updated state back as snapshots or deltas alongside the chat. USE FOR: sending initial/working state from the client via…

ag-ui-protocol/ag-ui · 215 tokens

agui-dotnet-sdk-docs

Author, update, and validate the AG-UI .NET SDK documentation pages on the docs.ag-ui.com Mintlify site (under docs/). USE FOR: adding or editing a ".NET SDK" docs page (sdk/dotnet//.mdx), wiring it into the docs.json ".NET" nav group and global anchor, running the docs site locally with mintlify dev…

ag-ui-protocol/ag-ui · 155 tokens

agui-dotnet-multimodal

Send images and other binary/file content to an AG-UI agent with the AG-UI .NET SDK — attach pictures (or audio, PDFs, etc.) to a user message so a multimodal model can see them. USE FOR: building a user ChatMessage with mixed content parts (TextContent plus DataContent for inline bytes, or UriContent for a hosted…

ag-ui-protocol/ag-ui · 186 tokens