CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

testland/opentelemetry-trace-assertions

Use when a service is instrumented with OpenTelemetry and alerts, SLOs or dashboards depend on span names or attributes a refactor could drop. Captures spans with the in-memory exporter in tests (Python, JS, Java) and asserts on names, attributes, status, kind and structure.

Quality

90%

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

82%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 is a tightly engineered, multi-language guide: executable fixtures and tests, precise SDK pitfalls (batch vs. simple processor, JS 2.x constructor change, stable vs. experimental semconv keys), and an anti-patterns table that doubles as a failure-mode checklist. Workflow sequencing is clear with a built-in vacuous-pass guard, though explicit feedback loops (e.g., mutation-checking the tests) are absent. Content is appropriately disclosed in one file with clearly signaled external links.

Suggestions

Trim the Overview, which restates the frontmatter description, and either add a .NET example section or drop the .NET row from the install table so every listed language has coverage.

Add an explicit validation step (e.g., temporarily rename a span or drop an attribute and confirm the new test fails) so the trace-contract tests are themselves verified to catch regressions.

Move the Step 5 semconv key inventory and migration guidance (stable vs. experimental keys, OTEL_SEMCONV_STABILITY_OPT_IN) into a reference file linked from a short inline summary, keeping SKILL.md leaner.

DimensionReasoningScore

Conciseness

The body assumes OpenTelemetry competence and spends its tokens only on SDK-specific facts ("the batching processor exports on a timer", "JS SDK 2.x removed addSpanProcessor()"), but the Overview partially restates the description and the install table lists .NET with no corresponding section — minor trimmable instances that fit the 4 anchor rather than the every-token-earns-its-place 5 anchor.

4 / 5

Actionability

Every step ships copy-paste-ready, executable code — the conftest fixture with SimpleSpanProcessor and InMemorySpanExporter, Python/JS/Java test examples, and CI YAML — plus exact knobs like OTEL_SEMCONV_STABILITY_OPT_IN=http, matching the fully-executable anchor covering the common cases.

5 / 5

Workflow Clarity

Steps 1-8 form a clear install-then-wire-then-assert sequence with an embedded validation guard ("assert found, f\"no finished span named {name!r}\"") and an anti-patterns table of failure modes, but there is no explicit feedback loop such as verifying the test fails when the contract is broken, so it sits at the most-checkpoints-present anchor rather than the explicit-validation 5 anchor.

4 / 5

Progressive Disclosure

As a single-file skill with no bundle files, it is well-sectioned and its external references are clearly signaled inline and consolidated one level deep in a References section; the per-language sections (JS, Java) and the Step 5 semconv migration detail could arguably live in separate reference files, which keeps it at the good-structure 4 anchor rather than the ideally-split 5 anchor.

4 / 5

Total

17

/

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 concrete, third-person, and leads with an explicit trigger clause that names the exact conditions (alerts, SLOs, dashboards depending on span names/attributes) under which the skill applies. Both what and when are answered with specific, non-generic language. The only gap is a few natural synonyms (e.g., "tracing", "spans") that would broaden trigger matching.

DimensionReasoningScore

Specificity

The description names concrete, enumerated actions — "Captures spans with the in-memory exporter in tests (Python, JS, Java)" and "asserts on names, attributes, status, kind and structure" — with the tooling and languages specified, matching the comprehensive-coverage anchor rather than the minor-gaps anchor at 4.

5 / 5

Completeness

It opens with an explicit "Use when a service is instrumented with OpenTelemetry and alerts, SLOs or dashboards depend on span names or attributes" clause and pairs it with a concrete statement of what the skill does, matching the anchor for clearly answering both what and when; it exceeds the 4 anchor because the when-clause is fully explicit rather than merely present.

5 / 5

Trigger Term Quality

Strong natural terms ("OpenTelemetry", "alerts, SLOs or dashboards", "span names or attributes", "in-memory exporter", "refactor"), but common user phrasings like "tracing", "instrumentation" or standalone "spans" are absent, so it fits the good-coverage-with-a-few-missing anchor at 4 rather than comprehensive synonym coverage at 5.

4 / 5

Distinctiveness Conflict Risk

"Instrumented with OpenTelemetry" plus the alert/SLO/dashboard dependency framing carves out a clear niche with distinct triggers, and the actions are specific enough that conflict with generic testing or observability skills is minimal — the 5 anchor, not the minor-overlap 4 anchor.

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

On this page