CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/jaeger-trace-tests

Author integration tests that query a tracing backend for cross-service trace verification - Jaeger, Zipkin, or Grafana Tempo, same run-query-assert workflow. Jaeger all-in-one Docker for CI (OTLP gRPC :4317 + HTTP :4318 ingest, query API on :16686), `/api/traces?service=X&operation=Y` query patterns, span set + parent-child + duration assertions; Zipkin (:9411 REST API, B3 single/multi-header propagation tests, dependency graph) in references/zipkin.md; Tempo (TraceQL span selectors + structural operators, /api/search, single-binary Docker) in references/tempo.md. Use when verifying that a request produces the expected spans across service boundaries in a running Jaeger, Zipkin, or Tempo backend.

74

Quality

93%

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

Overview
Quality
Evals
Security
Files

Quality

Content

86%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 well-structured, highly actionable overview: executable Docker/Python/test code, a clear sequenced workflow with an explicit flush checkpoint, and clean one-level progressive disclosure to three real reference files. Its main weakness is minor redundancy in the flush-before-query guidance.

Suggestions

Collapse the two near-duplicate anti-pattern rows about querying-before-flush into one, since the Worked-example prose already establishes the force_flush + sleep rule.

Add a brief error-recovery note for a failed trace assertion (e.g., re-check service.name uniqueness, confirm the SDK endpoint, re-query with a longer lookback) to close the workflow feedback loop.

DimensionReasoningScore

Conciseness

Mostly lean and assumes Claude's competence (no generic OTel/Python primer), but the flush guidance is restated three times - in the Worked-example prose and in two near-duplicate anti-pattern rows ('Query Jaeger immediately after exercise' and 'Skip flushing pipeline') - which could be trimmed. Not a 5 due to that redundancy; not a 3 because the rest is efficient.

4 / 5

Actionability

Fully copy-paste-ready guidance throughout: a concrete `docker run` command with ports, complete Python SDK configuration, and a full executable test with real `requests.get` params and assertions covering the common case.

5 / 5

Workflow Clarity

Clear five-step sequence with an explicit validation checkpoint (the 'mandatory' force_flush + sleep before query) and an anti-patterns checklist, but there is no error-recovery feedback loop (what to do when the assert fails), which the 5 anchor calls for. The destructive/batch cap does not apply since querying a backend is neither destructive nor batch.

4 / 5

Progressive Disclosure

Clear overview with well-signaled one-level-deep references - references/query-api-and-ci-wiring.md, references/zipkin.md, references/tempo.md all exist as real files, are linked inline and listed in a References section, and are not nested. Content is appropriately split with bulk query-API, CI-wiring, and per-backend details pushed to reference files.

5 / 5

Total

18

/

20

Passed

Description

100%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 dense but every clause carries specific, non-fluff information: concrete actions, ports, query patterns, and assertion types across three backends, plus an explicit Use-when trigger. It uses third-person voice and avoids over-claims. Verbosity is not penalized here since every token earns its place and conciseness is not a description dimension.

DimensionReasoningScore

Specificity

Lists multiple concrete actions across three backends - 'query patterns', 'span set + parent-child + duration assertions', 'B3 single/multi-header propagation tests', 'dependency graph', 'TraceQL span selectors + structural operators' - with comprehensive coverage, matching the anchor for multiple specific concrete actions.

5 / 5

Completeness

Explicitly answers both 'what' ('Author integration tests that query a tracing backend for cross-service trace verification') and 'when' ('Use when verifying that a request produces the expected spans across service boundaries in a running Jaeger, Zipkin, or Tempo backend') with concrete trigger phrases.

5 / 5

Trigger Term Quality

Comprehensive natural-term coverage including synonyms for all three backends (Jaeger, Zipkin, Grafana Tempo) plus 'integration tests', 'tracing', 'cross-service trace verification', 'spans across service boundaries' - phrases a user would naturally say; not merely technical jargon.

5 / 5

Distinctiveness Conflict Risk

Clear niche (distributed-tracing integration testing against named OSS backends) with distinct, specific triggers and minimal overlap risk with other skills; unlikely to fire for the wrong skill.

5 / 5

Total

20

/

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.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents