CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

aspire-service-defaults

Create a shared ServiceDefaults project for Aspire applications. Centralizes OpenTelemetry, health checks, resilience, and service discovery configuration across all services.

Quality

75%

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/aspire-service-defaults/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

68%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 strong, code-first skill: the canonical ServiceDefaults template, usage patterns, and AppHost integration are complete and copy-paste executable. Its weaknesses are prose redundancy at the top, full-method reprints instead of deltas in the customization sections, and an implicit workflow with no verification checkpoints.

Suggestions

Remove or merge the 'When to Use This Skill' and 'What is ServiceDefaults?' sections into one two-line intro; the frontmatter description already covers their content.

In the customization sections ('Adding Custom Health Checks', 'Adding Custom Trace Sources', 'Production Health Checks'), show only the lines to add or change (e.g., '.AddSource("Akka.NET")') rather than reprinting entire method bodies already shown verbatim.

Add a short verification step to the workflow, e.g., 'Run the AppHost, open the dashboard, and confirm traces/metrics appear; probe /health and /alive to confirm endpoints map only in development.'

DimensionReasoningScore

Conciseness

The bulk is executable canonical Aspire code, but the 'When to Use This Skill' and 'What is ServiceDefaults?' prose sections duplicate the frontmatter description and each other, and the three customization sections ('Adding Custom Health Checks', 'Adding Custom Trace Sources', 'Production Health Checks') reprint entire methods to show small deltas (e.g., re-writing the full ConfigureOpenTelemetry body just to add two .AddSource lines). Mostly efficient but includes unnecessary explanation and could be tightened — not 4, since the trimming needed goes beyond minor instances; not 2, since no section explains basic concepts and the padding is confined to a few short prose blocks.

3 / 5

Actionability

Fully copy-paste ready guidance: a complete .csproj with all PackageReferences, a complete Extensions.cs, executable Program.cs usage for both web ('builder.AddServiceDefaults(); ... app.MapDefaultEndpoints();') and non-web hosts, and AppHost wiring. The common cases (API, worker, dashboard telemetry via OTEL_EXPORTER_OTLP_ENDPOINT) are all covered concretely.

5 / 5

Workflow Clarity

The build sequence (create project -> add Extensions.cs -> reference from each service -> call AddServiceDefaults()/MapDefaultEndpoints() -> AppHost wiring) is present but only implicit in section ordering; there are no explicitly listed steps and no verification checkpoints such as hitting /health or confirming traces in the Aspire Dashboard. Not 4 because no checkpoints are present at all; not 2 because the section order forms a coherent build sequence with no gaps in what to do.

3 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/), and the single-file body is well organized with clear headers (Project Structure, Project File, Extensions.cs, Usage, customization sections, Best Practices table, Resources links). Minor gap: the ~100 lines of customization and production-variant content are inlined in SKILL.md where a bundle would split them into reference files. Good structure with minor organization gaps — not 5, since the file carries advanced material that would better live one level deep; not 3, since navigation is easy and nothing is buried.

4 / 5

Total

15

/

20

Passed

Description

70%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, well-scoped description in third person with strong domain keywords and minimal conflict risk. Its one real gap is the missing 'when to use' trigger clause, which caps completeness and leaves invocation conditions entirely to inference.

Suggestions

Append a trigger clause, e.g., 'Use when building or setting up a .NET Aspire solution, adding the ServiceDefaults project, or when the user mentions Aspire, service defaults, or AppHost.'

Add a few natural synonyms users would say — 'telemetry', 'observability', '.NET Aspire' — to broaden trigger term coverage.

DimensionReasoningScore

Specificity

It names several specific capabilities — 'Create a shared ServiceDefaults project', 'Centralizes OpenTelemetry, health checks, resilience, and service discovery configuration across all services' — with concrete technology names rather than generic language. Not 5 because it covers only two actions (create, centralize) and omits other capabilities the body delivers (mapping health endpoints, customization); not 3 because it enumerates four specific configuration domains rather than just 1-2 generic actions.

4 / 5

Completeness

The 'what' is clear (create a shared ServiceDefaults project centralizing OTel, health checks, resilience, and service discovery), but there is no 'Use when...' clause or equivalent trigger guidance — the description never states when to invoke the skill. Per the judging guideline, a missing 'Use when' clause caps completeness at 3; it is not 4 because the 'when' is entirely absent rather than merely under-specified.

3 / 5

Trigger Term Quality

Good natural keyword coverage: 'Aspire', 'ServiceDefaults', 'OpenTelemetry', 'health checks', 'resilience', 'service discovery' are exactly what a .NET developer working with Aspire would say. Not 5 because common synonyms a user might naturally say — 'telemetry', 'observability', '.NET Aspire', 'AppHost' — are missing; not 3 because the included terms cover the domain without generic filler.

4 / 5

Distinctiveness Conflict Risk

'Aspire applications' and 'ServiceDefaults' carve out a clear niche with distinct triggers — a user mentioning ServiceDefaults or Aspire service defaults unambiguously wants this skill, and the technology-specific vocabulary creates minimal overlap risk with other skills. Not 4 because no closely related skill surface (e.g., generic .NET health checks or OTel setup) is likely to collide with these triggers.

5 / 5

Total

16

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

Aaronontheweb/dotnet-skills

Path

skills/aspire-service-defaults/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.