CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

dotnet-backend-patterns

Master C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.

79

1.32x
Quality

74%

Does it follow best practices?

Impact

85%

1.32x

Average score across 6 eval scenarios

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./plugins/dotnet-contribution/skills/dotnet-backend-patterns/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

46%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body delivers genuinely actionable, high-quality .NET pattern code, but it is a monolithic ~800-line wall that re-teaches fundamentals Claude already knows and inlines Dapper/EF Core material that already exists as bundle reference files — without ever pointing to them. The skill's main failure mode is duplication and neglect of its own progressive-disclosure structure.

Suggestions

Replace the inlined EF Core and Dapper sections with one-line pointers to references/ef-core-best-practices.md and references/dapper-patterns.md (e.g. '**EF Core**: See [ef-core-best-practices.md](references/ef-core-best-practices.md)'), keeping only a short representative snippet in SKILL.md.

Cut the fundamentals Claude already knows — DI lifetime comments, async/await wrong-way examples, and the DO/DON'T lists that restate inline code comments — and keep only the genuinely non-obvious patterns (keyed services, ValueTask, stale-while-revalidate, multi-mapping).

Reference the asset templates (assets/repository-template.cs, assets/service-template.cs) from the relevant sections so the bundle's full implementations are discoverable instead of orphaned.

Fix the two broken snippets (CheckoutService's undeclared _processor field and CacheEntry's references to outer _freshDuration/_staleDuration fields) so every example is copy-paste ready.

DimensionReasoningScore

Conciseness

The 810-line body extensively explains concepts Claude already knows — DI lifetime explanations ('Scoped: One instance per HTTP request'), async/await basics ('NEVER do this' on .Result, 'async void ... Exceptions are lost'), full boilerplate xUnit/Moq test classes, and DO/DON'T lists that largely restate the inline code comments. This is 'noticeably verbose; several unnecessary explanations or padded sections'. Not 3 because the padding is pervasive across sections rather than incidental; not 1 because the pattern examples themselves are code, not prose padding.

2 / 5

Actionability

Mostly executable, copy-paste-ready code covering common cases (keyed services, ValueTask hot paths, multi-level caching, WebApplicationFactory integration tests), but with minor gaps: CheckoutService assigns an undeclared '_processor' field, and StaleWhileRevalidateCache's nested record 'CacheEntry<TValue>' references the outer instance fields '_freshDuration'/'_staleDuration' in IsStale/IsExpired, which does not compile. Fits 4 ('mostly executable; minor gaps'). Not 5 due to these broken snippets; not 3 because the bulk is genuinely executable and complete.

4 / 5

Workflow Clarity

This is a patterns catalog with no multi-step workflow: sections are organized by topic rather than sequenced, there is no guidance on applying the patterns in order, and no validation checkpoints (none strictly required — nothing here is destructive or batch, so the cap does not apply). The simple-skill exception does not fit either, since this is an encyclopedia-style reference rather than a single unambiguous task. Falls at 3: content is organized but there is no sequence or checkpoint structure at all.

3 / 5

Progressive Disclosure

The bundle ships references/dapper-patterns.md, references/ef-core-best-practices.md, and assets/repository-template.cs and service-template.cs, yet the body never references or links to any of them — and instead inlines roughly 400 lines of Dapper and EF Core content that duplicates those reference files. This matches anchor 2: 'content that clearly belongs in separate files is inlined; or references are buried'. Not 3 because the inline duplication is not marginal; not 1 because the body itself has clear section headers and is navigable.

2 / 5

Total

11

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is strong: it names a clear niche, enumerates concrete capabilities, and provides an explicit 'Use when...' clause with natural trigger phrases. The only weakness is slightly incomplete synonym coverage (e.g., 'ASP.NET Core', '.cs') keeping trigger terms just below comprehensive.

Suggestions

Add common synonyms and file extensions to the trigger clause, e.g. 'Use when developing .NET/ASP.NET Core backends or Web APIs, reviewing C# code (.cs files), or designing API architectures.'

Mention the database/ORM angle in the when-clause (e.g. 'or working with Entity Framework Core or Dapper') since users may ask about those specifically without saying 'backend'.

DimensionReasoningScore

Specificity

Lists multiple specific concrete capabilities — 'async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit' — with comprehensive coverage of the .NET backend domain, matching the 5 anchor. Not 4: the action list is broad with no meaningful coverage gaps.

5 / 5

Completeness

Explicitly answers both what ('Master C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications') and when ('Use when developing .NET backends, reviewing C# code, or designing API architectures') with concrete trigger phrases, matching the 5 anchor example structure.

5 / 5

Trigger Term Quality

Good natural keyword coverage — 'developing .NET backends, reviewing C# code, designing API architectures', 'MCP servers', 'Entity Framework Core', 'Dapper', 'xUnit' — but common variations like 'ASP.NET Core', 'Web API', or file extensions (.cs, .csproj) are missing, fitting the 4 anchor. Not 5 because synonym/extension coverage is not comprehensive; not 3 because the natural phrases users would say are present, not just technical jargon.

4 / 5

Distinctiveness Conflict Risk

Clear niche (.NET backend development patterns) with distinct triggers ('.NET backends', 'C# code', 'MCP servers', 'EF Core', 'Dapper') that would not fire for unrelated skills. Voice is imperative, not first/second person, so no specificity penalty applies.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (811 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository

wshobson/agents

Path

plugins/dotnet-contribution/skills/dotnet-backend-patterns/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.