CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

modern-csharp-coding-standards

Write modern, high-performance C# code using records, pattern matching, value objects, async/await, Span<T>/Memory<T>, and best-practice API design patterns. Emphasizes functional-style programming with C# 12+ features.

Quality

71%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/csharp-coding-standards/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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.

A well-organized standards skill with genuinely executable examples for records, value objects, pattern matching, and async patterns, weakened by broken progressive disclosure — all four reference files are missing from the bundle, leaving Span/Memory, the Result type, composition, and reflection guidance as dangling pointers. Redundant restatement of the same rules across Core Principles and the DO/DON'T summary also inflates the token cost.

Suggestions

Ship the four referenced files (references/value-objects-and-patterns.md, performance-and-api-design.md, composition-and-error-handling.md, anti-patterns-and-reflection.md) or inline their essential content — currently every 'See X for complete examples' pointer leads to a file that does not exist.

Consolidate the Core Principles list and the Best Practices DO's/DON'Ts into a single rules section; they restate the same guidance nearly verbatim.

Trim examples of baseline C# knowledge (the .csproj Nullable block, ArgumentNullException.ThrowIfNull, basic record DTO syntax) and keep only the skill's opinionated rules that differ from default Claude behavior.

DimensionReasoningScore

Conciseness

The skill-specific rules ("Value objects should always be readonly record struct", "Banned: AutoMapper, Mapster, ExpressMapper", "Always accept CancellationToken") earn their tokens, but there is real padding: the Core Principles list, the DO's/DON'Ts summary, and the closing per-section pointers repeat the same rules three times, and examples like basic record DTO syntax, the .csproj Nullable snippet, and ArgumentNullException.ThrowIfNull teach things Claude already knows. This fits 'mostly efficient but includes some unnecessary explanation or could be tightened' rather than the clearly efficient 4.

3 / 5

Actionability

Most sections give complete, executable C# — the record/value-object/pattern-matching examples, the async/ValueTask/IAsyncEnumerable block, and the full Code Organization file layout are copy-paste ready. The gap that keeps it from 5: the Span<T>/Memory<T>, Result type, composition, and reflection sections contain no inline example at all and delegate entirely to reference files that do not exist in this bundle, so those topics have no executable guidance as delivered.

4 / 5

Workflow Clarity

As a standards skill it has no multi-step process to sequence, but its per-topic rules are unambiguous and the DO's/DON'Ts lists act as a usable checklist, and the Code Organization section even gives a numbered file-layout order. It sits at 4 rather than 5 because there is no verification checkpoint (e.g., 'enable TreatWarningsAsErrors / run dotnet build to confirm the standards hold'), which is the natural validation step for a coding-standards skill.

4 / 5

Progressive Disclosure

Structurally the body does the right things — a dedicated 'Reference Files' section plus inline 'See X for...' pointers, one level deep, clearly signaled. But scoring against the actual bundle: no references/, scripts/, or assets/ directories exist, and none of the four referenced files (value-objects-and-patterns.md, performance-and-api-design.md, composition-and-error-handling.md, anti-patterns-and-reflection.md) are present, so every pointer is broken and whole topics exist only behind dead links. That lands at 'some structure but could be better organized' rather than the good-structure 4.

3 / 5

Total

14

/

20

Passed

Description

66%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.

A specific, keyword-rich description that clearly communicates what the skill does, written in third person without padding. Its main defect is the complete absence of a 'when to use' trigger clause, which caps completeness and leaves trigger timing to be inferred. Adding an explicit activation condition would move this to a strong description.

Suggestions

Append an explicit trigger clause, e.g. "Use when writing or refactoring C# code, designing .NET libraries, or when the user mentions C#, .NET, records, or async code."

Mention the remaining core topics (nullable reference types, Result-based error handling, composition over inheritance) so the description fully covers the skill's scope.

Include natural synonyms users would say — "C# coding conventions", ".NET", ".cs files" — to broaden trigger term coverage.

DimensionReasoningScore

Specificity

The description names the domain ("modern, high-performance C# code") and enumerates specific techniques ("records, pattern matching, value objects, async/await, Span<T>/Memory<T>, and best-practice API design patterns"), which is several concrete specifics. It is not a 5 because coverage has gaps: the body also covers error handling (Result type), composition over inheritance, nullable reference types, and reflection avoidance — none of which the description mentions.

4 / 5

Completeness

The "what" is clear ("Write modern, high-performance C# code using records, pattern matching, value objects..."), but there is no "Use when..." clause or equivalent explicit trigger guidance anywhere in the description. Per the judging guidelines, a missing 'Use when' clause caps completeness at 3 — the 4 anchor requires both what and when.

3 / 5

Trigger Term Quality

Good natural keyword coverage: "C#", "C# 12+", "records", "pattern matching", "async/await", "Span<T>", "API design" are all phrases C# developers actually say. Missing common variations like "conventions", "coding standards" (which is the skill's own name), ".cs", or ".NET", which keeps it below the comprehensive 5 anchor.

4 / 5

Distinctiveness Conflict Risk

"modern, high-performance C# code" with C#-specific feature terms (records, Span<T>, async/await) carves a clear niche that is unlikely to trigger for non-C# skills. Minor overlap risk remains with general code-style, .NET, or language-agnostic programming skills, so it fits the "mostly distinct; minor overlap risk" anchor rather than the minimal-conflict 5.

4 / 5

Total

15

/

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

relative_links

Relative link issues: 11 missing

Warning

Total

15

/

16

Passed

Repository

Aaronontheweb/dotnet-skills

Path

skills/csharp-coding-standards/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.