JUnit Failure Fingerprint
v1.0.0Cluster JUnit failures into stable fingerprints so CI triage focuses on root causes, not noisy one-off logs.
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name and description (cluster JUnit failures) match the included script and SKILL.md. Required binaries (bash, python3) are appropriate and sufficient for the stated task; there are no unrelated credentials or config paths.
Instruction Scope
Runtime instructions and the script limit actions to scanning JUnit XML files (via a glob), normalizing text, hashing seeds, and printing/grouping results. Caution: JUNIT_GLOB is user-controllable — if set to a broad or sensitive filesystem path, the script will read whatever files match the glob. By default the glob targets test-results/**/*.xml and the bundled fixtures example is safe.
Install Mechanism
No install spec; this is instruction-only plus a bundled script. Nothing is downloaded or written to disk by an installer during skill installation.
Credentials
The skill requests no environment variables or credentials by default. It does accept optional environment inputs (JUNIT_GLOB, TOP_N, OUTPUT_FORMAT, STACK_LINES, FAIL_ON_FAILURES) that are reasonable for its purpose.
Persistence & Privilege
Skill is not always-enabled and does not request elevated persistence or modify other skills or system settings. It only runs when invoked and doesn't persist state or credentials.
Assessment
This skill appears safe and does exactly what it claims: parse JUnit XMLs and produce fingerprints. Before using in CI, verify your JUNIT_GLOB value so it only matches test result files (not / or other sensitive locations). You can test locally with the provided fixtures. If you enable FAIL_ON_FAILURES, be aware it will return a non-zero exit code when failures are found, which can fail CI jobs as intended.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
Binsbash, python3
latest
JUnit Failure Fingerprint
Use this skill to compress noisy JUnit failures/errors into repeatable fingerprints.
What this skill does
- Scans one or more JUnit XML files
- Extracts only failing/error test cases
- Normalizes volatile tokens (IDs, numbers, line numbers, addresses, UUIDs)
- Generates stable fingerprint hashes for similar root-cause failures
- Emits grouped triage output (
textorjson)
Inputs
Optional:
JUNIT_GLOB(default:test-results/**/*.xml)TOP_N(default:20)OUTPUT_FORMAT(textorjson, default:text)STACK_LINES(default:3) — number of normalized stack lines to include in fingerprint seedFAIL_ON_FAILURES(0or1, default:0) — exit non-zero when any failures/errors are found
Run
Text report:
JUNIT_GLOB='artifacts/junit/**/*.xml' \
TOP_N=15 \
bash skills/junit-failure-fingerprint/scripts/fingerprint-junit.sh
JSON output for CI annotation/upload:
JUNIT_GLOB='artifacts/junit/**/*.xml' \
OUTPUT_FORMAT=json \
FAIL_ON_FAILURES=1 \
bash skills/junit-failure-fingerprint/scripts/fingerprint-junit.sh
Run with bundled fixtures:
JUNIT_GLOB='skills/junit-failure-fingerprint/fixtures/*.xml' \
bash skills/junit-failure-fingerprint/scripts/fingerprint-junit.sh
Output contract
- Exit
0by default (reporting mode) - Exit
1ifFAIL_ON_FAILURES=1and at least one failure/error is found - In
textmode, prints summary + top fingerprints - In
jsonmode, prints machine-readable groups and per-case detail
Comments
Loading comments...
