CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/opentelemetry-trace-assertions

Author trace-shape assertions in tests using OpenTelemetry SDK in-memory exporter - capture spans during test execution, assert on span name + attributes + status + parent-child structure + duration. Cross-language patterns (Python `InMemorySpanExporter` + `SimpleSpanProcessor`, JS `getRecordedSpans()`, Java `OpenTelemetryExtension`); CI integration. Use when a service is instrumented with the OpenTelemetry SDK and downstream alerts, SLOs, or dashboards depend on specific span names or attributes that a refactor could silently drop.

67

Quality

84%

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

Overview
Quality
Evals
Security
Files

Quality

Content

67%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 highly actionable, well-sequenced body whose code examples and anti-patterns table carry most of the value. Its main weaknesses are conceptual padding Claude doesn't need (trace/span definitions, span-kind enumeration), a few undefined fixtures that keep examples from being fully copy-paste ready, and missed opportunities to split per-language material into reference files.

Suggestions

Delete the opening paragraph defining trace/span concepts and the span-kind value enumeration in Step 3 — Claude already knows OpenTelemetry semantics; start at "When to use" and keep only the kind value actually asserted (INTERNAL).

Split Steps 6-7 (JS/Java patterns) and the Step 5 semantic-conventions attribute list into per-language reference files, keeping SKILL.md as the Python-pattern overview with clearly signaled links.

Replace the repeated "Per the [X docs]" phrasing with a single References section, and define (or drop) the `use_tracer()` fixture and show how `http_span` is obtained so the assertion examples are self-contained.

DimensionReasoningScore

Conciseness

Mostly efficient (tight install table, lean code blocks, an excellent anti-patterns table) but includes unnecessary explanation Claude already knows: the opening defines trace/span concepts ("a trace is 'the path of a request through your application'"), Step 3 enumerates all span kind values (INTERNAL/CLIENT/SERVER/PRODUCER/CONSUMER), and "Per the [docs]" citation phrasing is repeated ~8 times. Not 4: the concept intro and spec enumeration are more than minor trimmable instances; not 2: the bulk is executable guidance, not padded prose.

3 / 5

Actionability

Concrete, mostly executable guidance: complete Python exporter setup, runnable assertion snippets, JS/Java patterns, and a pinned CI command (`pip install opentelemetry-sdk==1.29.0`). Not 5: minor gaps — `use_tracer()` and the `create_order`/`item` fixtures are never defined, and `http_span` in Step 5 is asserted on without any code showing how it was obtained.

4 / 5

Workflow Clarity

Steps 1-8 are clearly sequenced (install → exporter setup → assertions → structure → semconv → per-language → CI) with cross-references, and the anti-patterns table ("Why it fails / Fix") plus the deprecation note's diagnostic guidance ("failures during SDK upgrade are the signal that instrumentation needs migrating, not that the test is wrong") act as checkpoints. Not 5: no explicit validate→fix→retry feedback loop; the flow is linear guidance without error-recovery steps.

4 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ absent), so all content is inline at ~200 lines, but structure is good: well-labeled section headers, step cross-references ("(Step 4)", "(Step 2)"), a clearly signaled References section, and one-level-deep external links. Not 5: the JS/Java patterns and semantic-convention attribute lists are candidates for separate per-language reference files, and the inline link definitions add clutter that a references file would absorb; not 3: navigation is easy and nothing is buried.

4 / 5

Total

15

/

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.

A strong description: concrete multi-language capability list, an explicit and genuinely specific "Use when" clause, and a well-scoped niche. The only gap is missing natural synonyms like "otel" and "distributed tracing" that a user might say instead of the full "OpenTelemetry".

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — "Author trace-shape assertions in tests", "capture spans during test execution, assert on span name + attributes + status + parent-child structure + duration" — and names specific APIs per language ("Python `InMemorySpanExporter` + `SimpleSpanProcessor`, JS `getRecordedSpans()`, Java `OpenTelemetryExtension`") plus CI integration, giving comprehensive coverage. Not 4: coverage spans capture, multi-facet assertion, three languages, and CI rather than having minor gaps.

5 / 5

Completeness

Explicitly answers what ("Author trace-shape assertions in tests using OpenTelemetry SDK in-memory exporter - capture spans... assert on span name + attributes + status + parent-child structure + duration") and when ("Use when a service is instrumented with the OpenTelemetry SDK and downstream alerts, SLOs, or dashboards depend on specific span names or attributes that a refactor could silently drop") with concrete trigger phrases. Not 4: the when-clause is fully explicit and specific, not merely present-but-generic.

5 / 5

Trigger Term Quality

Good keyword coverage includes natural terms users would say: "OpenTelemetry", "span", "trace", "assertions", "in-memory exporter", "instrumented", "SLOs", "dashboards", "alerts". Not 5: common synonyms/abbreviations a user would naturally say are missing — "otel", "distributed tracing" (present only in frontmatter keywords, not the description), "telemetry".

4 / 5

Distinctiveness Conflict Risk

Clear niche (in-memory-exporter span assertions in tests) with distinct triggers tied to SDK instrumentation and downstream alerting dependence; minimal conflict risk with adjacent skills (e.g., end-to-end tracing verification). Not 4: triggers are specific enough that overlap with related observability/testing skills is negligible.

5 / 5

Total

19

/

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.

Reviewed

Table of Contents