CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/junit-xml-analysis

Parses JUnit-format XML reports (the de-facto interchange format every CI ingests - Jenkins, GitHub Actions, GitLab, Buildkite, CircleCI) into structured, machine-readable per-suite and per-case metrics tables (passed / failed / errored / skipped, time, classname, message, stack), groups failures by classname for trend analysis, and distinguishes "new failures vs flakes" by cross-referencing the `flakyFailure` and `rerunFailure` rerun elements. Use when the downstream consumer is a dashboard, script, or aggregator - not when the goal is a human-readable prose summary (use test-run-summary-author for that). Single-run, in-XML aggregation only; for cross-run cross-environment roll-ups, use a cross-run test-suite aggregator.

69

Quality

87%

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

78%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 well-structured, actionable skill body that splits detail appropriately into a companion reference. Tightening the streaming-parser guidance and trimming runner-name background would lift it further.

Suggestions

Reconcile the streaming advice: either show an iterparse-based example in Step 2 or label ET.parse as the small-file path with a streaming alternative linked.

Drop or compress the opening runner-name list ('pytest, Jest, Vitest, Go test, Maven Surefire, Cypress, Playwright') since Claude already knows these emit JUnit XML.

Add an explicit verification checkpoint after parsing (e.g., assert suite/case counts match the testsuites summary attributes) to catch silent parsing gaps.

DimensionReasoningScore

Conciseness

Mostly lean with tight executable code and a dense anti-patterns table, but carries minor over-explanation Claude likely already knows (the runner-name list, 'errors are usually infra / DB connection lost').

4 / 5

Actionability

Provides executable Python (parse_junit, classify, reliability, per_suite) and a real CI workflow; the one gap is advising a streaming parser while the example uses non-streaming ET.parse rather than iterparse.

4 / 5

Workflow Clarity

Steps 1–7 are clearly sequenced and the task is read-only analysis (so the destructive-validation cap does not apply), but there are no explicit validate-then-proceed checkpoints in the parsing flow.

4 / 5

Progressive Disclosure

Well-organized sections with a real, clearly signaled one-level-deep reference (references/junit-xml-parsing.md) that intentionally holds the Node.js parser and CI workflow, leaving the runnable Python core inline.

5 / 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.

A strong, specific description that pairs a scenario-rich 'when' clause with a comprehensive 'what' inventory. Its only soft spot is trigger-term breadth: it leans on scenario phrases rather than file-extension/synonym keywords.

DimensionReasoningScore

Specificity

Lists multiple concrete actions — parses JUnit XML into per-suite/per-case metrics tables, groups failures by classname for trend analysis, and separates new failures from flakes via flakyFailure/rerun elements — with a full metric inventory (passed/failed/errored/skipped, time, classname, message, stack).

5 / 5

Completeness

Explicitly answers both what it does (parse + aggregate + classify flake-vs-new) and when to use it via the concrete 'Use when a report, gate, or metric derived from test results cannot be trusted.' clause.

5 / 5

Trigger Term Quality

Strong natural scenario terms a user would say ('CI test numbers', 'slowest tests', 'release gate', 'dashboard', 'pass rate', 'skipped tests'), but no file-extension synonyms (e.g. '.xml') that the top anchor calls for.

4 / 5

Distinctiveness Conflict Risk

Occupies a clear JUnit-CI-test-analytics niche with distinctive scenario triggers (numbers disagreeing with actual suite behavior, skipped-counted-as-pass), giving minimal overlap with adjacent skills.

5 / 5

Total

19

/

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

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents