CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

opentelemetry-net-instrumentation

Provides guidance for implementing OpenTelemetry instrumentation in .NET codebases, covering tracing (Activities/Spans), metrics, logs, naming conventions, error handling, performance, SDK setup, resources, context propagation, and API design best practices.

Quality

74%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/opentelementry-dotnet-instrumentation/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%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 high-quality, dense reference skill: concrete executable code, correct/incorrect contrasts, precise OTel-spec citations, and clear decision guidance for the library-vs-application distinction. Its two real weaknesses are the missing bundle reference files — all three deferred deep-dive documents are absent, breaking the progressive-disclosure structure and leaving SDK setup and propagation patterns without detail — and some redundant or over-justified passages that could be tightened.

Suggestions

Ship the three referenced files (traces-and-propagation-reference.md, metrics-and-instruments-reference.md, sdk-resources-and-logs-reference.md) in the bundle, or inline the essential content (especially SDK/exporter setup and the SpanKind/propagation examples) so no 'See X' link is dead.

Tighten the 'Recording Exceptions' section: keep the emission code and the MUST-associate-with-current-span rule, but compress the spec-history justification and the six-month transition rationale into one or two lines.

State the attribute value-type rules once (in Span Attributes) and drop the repetitions in Core Principles and code comments; fill in the '{ /* Record */ }' placeholder bodies in the metric recording methods so they are copy-paste executable.

DimensionReasoningScore

Conciseness

The body is dense and prescriptive — terse rules tables, exact API names, and targeted ✅/❌ code — and does not explain concepts Claude already knows, matching anchor 4's 'efficient; minor instances of over-explanation'. Not a 5 because there is trimmable redundancy: attribute value-type rules are stated three times (Core Principles, Span Attributes, and inline comments) and the 'Recording Exceptions' section carries long spec-quoting justification prose.

4 / 5

Actionability

Mostly executable, copy-paste-ready C# with correct/incorrect contrasts, exact package and API names, and decision tables, matching anchor 4. Not a 5 because some examples are illustrative fragments (metric methods with '{ /* Record */ }' placeholder bodies) and key details (SDK setup, propagation code, per-instrument examples) are deferred to reference files that are not present in the bundle, leaving those tasks without concrete guidance.

4 / 5

Workflow Clarity

Not a sequential-process skill, but the content gives clear decision flows — the 'Package Decision Guide' library-vs-application branch, the HasListeners → StartActivity → null-check → IsAllDataRequested guard sequence, and the OTEL_SEMCONV_EXCEPTION_SIGNAL_OPT_IN emission logic — with explicit checkpoints, matching anchor 4's 'clear sequence with most checkpoints present'. Not a 5 because some flows terminate in missing reference files (e.g. 'For SDK setup... see sdk-resources-and-logs-reference.md') rather than complete in-body guidance; not a 3 because the guidance that is present is coherent and unambiguous.

4 / 5

Progressive Disclosure

The body's structure follows the ideal pattern — overview-level sections with well-signaled, one-level-deep references plus a 'Reference Files' index — but the three referenced files (traces-and-propagation-reference.md, metrics-and-instruments-reference.md, sdk-resources-and-logs-reference.md) do not exist anywhere in the bundle, so every 'See X for full setup patterns' link is dead and the deferred detail is unreachable. Scored against the actual bundle structure (no references/, scripts/, or assets/ directories), the split is incomplete rather than navigable, which places this at anchor 3 rather than 5.

3 / 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 well-scoped, specific description of what the skill covers, distinguished by its clear .NET + OpenTelemetry niche. Its main weaknesses are the absence of any 'Use when...' trigger clause (capping completeness at 3) and missing natural synonyms such as 'C#' and 'telemetry' that users would likely say.

Suggestions

Append an explicit trigger clause, e.g. 'Use when adding or reviewing OpenTelemetry tracing, metrics, or logging in C#/.NET code, or when setting up the OTel SDK, exporters, or sampling in a .NET application.'

Include natural synonyms users would actually say — 'C#', 'dotnet', 'telemetry', 'observability' — alongside 'OpenTelemetry' and '.NET'.

Lead with concrete action verbs ('Implement tracing with ActivitySource, emit metrics with Meter, wire up OTel exporters') instead of the generic 'Provides guidance for'.

DimensionReasoningScore

Specificity

The description names the domain and enumerates many concrete coverage areas ('tracing (Activities/Spans), metrics, logs, naming conventions, error handling, performance, SDK setup, resources, context propagation, and API design'), matching anchor 4's 'several specific actions; minor gaps'. It is not a 5 because the only action verb is the generic 'Provides guidance', which describes intent rather than a list of concrete executable actions.

4 / 5

Completeness

The 'what' is clear and specific, but there is no 'Use when...' clause or any equivalent explicit trigger guidance, which the judging guidelines cap at 3. It is above a 2 because the 'what' is detailed and well-scoped, but below a 4 because 'when' is entirely absent rather than merely weak.

3 / 5

Trigger Term Quality

Good keyword coverage ('OpenTelemetry', '.NET', 'instrumentation', 'tracing', 'metrics', 'logs', 'spans', 'Activities', 'SDK'), fitting anchor 4's 'good coverage; a few natural terms missing'. Not a 5 because common user-facing synonyms like 'C#', 'dotnet', 'telemetry', and 'observability' are absent.

4 / 5

Distinctiveness Conflict Risk

'OpenTelemetry instrumentation in .NET codebases' is a clear niche with distinct, unambiguous triggers and virtually no overlap risk with other skills, matching anchor 5 exactly.

5 / 5

Total

16

/

20

Passed

Validation

81%

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

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

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

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

relative_links

Relative link issues: 11 missing

Warning

Total

13

/

16

Passed

Repository

Aaronontheweb/dotnet-skills

Path

skills/opentelementry-dotnet-instrumentation/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.