flaky-ci-forensics-c5ad3c — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited flaky-ci-forensics-c5ad3c (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill to convert noisy CI failures into a defensible flaky-test triage report. The goal is not to make tests pass by repeatedly rerunning them; the goal is to identify the failure pattern, decide whether the team is looking at a real product regression or a flake, and preserve enough evidence for a targeted fix.
Use for:
Do not use for:
Ask only for missing inputs that materially affect the decision:
If the user only has a single failure log, produce a sample-limited report and label flake confidence as provisional.
Capture:
Read references/flaky-test-rules.md when the failure involves timing, async UI, network, parallelism, fixture leakage, external services, or suspicious rerun behavior.
Use the bundled script for JUnit XML, CI logs, and optional history CSV:
python3 flaky-ci-forensics/scripts/flaky_ci_forensics.py \
--junit /absolute/path/junit.xml \
--log /absolute/path/ci.log \
--history /absolute/path/history.csv \
--avg-job-minutes 12 \
--runs-per-day 80History CSV columns are optional but should use these names when available:
test,runs,failures,rerun_passes,first_seen,last_seen,ownerFor pasted logs, apply the same taxonomy manually and state that XML/history metrics are unavailable.
Classify each failing test into one primary bucket:
timeout_or_wait: timeouts, missing waits, event-loop starvation, animation or async readiness.network_or_external_service: connection resets, DNS, third-party sandbox, rate limits, HTTP 5xx.order_or_state_leak: test pollution, shared database state, global mocks, random ordering.parallelism_or_race: thread/process race, port collision, shared temp paths, non-atomic setup.clock_locale_or_randomness: timezone, daylight saving, locale, seeded randomness, date boundaries.resource_or_runner: CPU/memory pressure, disk space, browser crash, CI image drift.selector_or_ui_sync: brittle selectors, detached elements, React hydration, stale DOM handles.assertion_or_product_regression: deterministic assertion mismatch or likely product behavior change.unknown_needs_instrumentation: not enough evidence to classify.Never call a deterministic assertion mismatch a flake just because the team wants the build green.
Use this action ladder:
Fix now: high confidence product regression, high-frequency flake blocking release, or unsafe false-pass risk.Instrument then rerun: unknown cause, low evidence, or missing logs that can be captured cheaply.Quarantine with owner and expiry: high-confidence flake, repeated retry-pass evidence, and an allowed quarantine policy.Rerun once only: CI infrastructure blip with weak recurrence evidence and low release risk.Do not quarantine: security, billing, data-loss, migration, auth, or compliance coverage where disabling the test creates unacceptable risk.Return:
## CI Decision
[Fix now / Instrument then rerun / Quarantine with owner and expiry / Rerun once only / Do not quarantine]
## Failure Cluster
| Test | Bucket | Flake confidence | Evidence | Owner | Action |
|---|---|---|---|---|---|
## Cost And Frequency
[CI minutes, developer interruption estimate, failure rate, retry-pass signal]
## Likely Root Cause
[Concrete hypothesis tied to evidence]
## Minimal Fix Plan
[Smallest code/test/infrastructure change to test first]
## Instrumentation To Add
[Logs, screenshots, traces, seeds, timestamps, runner metadata]
## Guardrails
[What not to disable, what requires owner approval, when to expire quarantine]Positive example: "Use $flaky-ci-forensics on this GitHub Actions JUnit report. The Playwright checkout test fails with a selector timeout but passes on rerun." The skill should classify selector_or_ui_sync or timeout_or_wait, estimate rerun cost if history exists, and recommend instrumentation or a targeted wait/selector fix before quarantine.
Positive backend example: "Our pytest suite fails randomly with duplicate key errors under -n auto." The skill should classify order/state leak or parallelism, ask for seed/worker/db isolation evidence, and avoid generic "rerun CI" advice.
Negative example: "A unit test always fails after I changed the parser." Do not label it flaky without retry-pass or environment evidence; treat it as a regression-debugging task.
Boundary example: "I only have a screenshot that says CI failed." Produce a missing-evidence checklist and do not assign high flake confidence.
Smoke-test the bundled fixture:
python3 flaky-ci-forensics/scripts/flaky_ci_forensics.py \
--junit flaky-ci-forensics/scripts/fixtures/junit.xml \
--log flaky-ci-forensics/scripts/fixtures/ci.log \
--history flaky-ci-forensics/scripts/fixtures/history.csv \
--avg-job-minutes 14 \
--runs-per-day 60Expected result: a Markdown report with CI Decision, buckets including timeout_or_wait and network_or_external_service, a retry-pass signal, and a cost estimate.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.