ワンクリックで
test-failure-rate
Analyze test failures from a Prow build against historical 7-to-28 day flakefinder reports.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Analyze test failures from a Prow build against historical 7-to-28 day flakefinder reports.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Analyze the root cause inside a failed prowjob. Use when user mentions to analyze a prowjob failure or adds a prowjob url
Analyze root causes for all the recent ci-failures. Use when user mentions to analyze recent ci failures
Analyze all failed builds for a GitHub pull request. Use when user provides a GitHub PR URL and wants to understand why builds are failing.
Analyze the root cause inside a failed prowjob when a user mentions a failure or adds a prowjob URL.
Analyze root causes for all the recent CI failures (failing prowjobs that have not reached the testing stage).
Analyze all failed builds for a GitHub pull request and identify root causes.
SOC 職業分類に基づく
| name | test-failure-rate |
| description | Analyze test failures from a Prow build against historical 7-to-28 day flakefinder reports. |
| argument-hint | <prow-job-url> |
| allowed-tools | Read, Glob, Bash(go run *) |
This skill looks up the historical success rate for each test that failed in a Prow build, using kubevirt flakefinder 7-day (168h) reports. Use --days to extend the analysis window up to 28 days by fetching and merging multiple weekly reports.
Run the test-rate subcommand from the kubevirt.io/ci-health repository with the Prow job URL.
If not already inside the ci-health repository, cd into it first (e.g. cd kubevirt.io/ci-health from the github.com directory).
$ go run ./cmd/ci-failures test-rate $ARGUMENTS
To cover a longer period (up to 28 days):
$ go run ./cmd/ci-failures test-rate --days 14 <prow-job-url>
Example:
$ go run ./cmd/ci-failures test-rate $ARGUMENTS
This produces output/tmp/sessions/<session-id>/test-rate-{job-name}.yaml.
The tool logs the written file path. Extract the session directory from the "wrote test rate analysis to ..." log line.
After data generation:
test-rate-*.yaml file in that directoryprow_job_url: the analyzed build URLjob_name: the Prow job namereport_days: number of days coveredreport_period_start: start date of the merged flakefinder windowreport_period_end: end date of the merged flakefinder windowfailed_tests: list of failed tests, each with:
test_name: original test name from the build logmatched_name: the matching test name in the flakefinder report (empty if no match)total_succeeded: total successes across all jobs in the covered periodtotal_failed: total failures across all jobstotal_skipped: total skipssuccess_rate: percentage (0-100)severity: classification of the failurek8s_versions: per-Kubernetes-version breakdown, sorted by success rate ascending (worst first), each with:
version: Kubernetes version (e.g., "1.35", "1.36", or "unknown")succeeded, failed, skipped: counts aggregated across all lanes for this versionsuccess_rate: percentage (0-100)severity: classification for this versionlanes: per-lane breakdown within this version, sorted by success rate ascending, each with:
lane: job namesucceeded, failed, skipped: counts for this lanesuccess_rate: percentage (0-100)severity: classification for this laneThe severity classification above is a starting point. Success rate alone can be misleading — a test at 85% could be flaky (failing sporadically everywhere) or broken in one specific lane (failing deterministically there, passing everywhere else). Use these techniques to distinguish the two.
Count how many lanes show failures for a given test:
When failures are concentrated, upgrade the severity toward "likely-pr-related" or "lane-specific issue" even if the aggregate success rate is low. When dispersed, treat it as a stronger flake signal even if the aggregate rate looks moderate.
Periodic lanes (prefixed periodic-) run against main and reflect the true baseline flakiness of a test. Presubmit lanes (prefixed pull-) run against PR code and may fail due to faulty changes.
When multiple unrelated tests all fail in the same lane(s) during the analysis period, suspect an infrastructure problem rather than individual test flakiness:
Use --days to compare different time windows and detect trends:
For each failed test, report:
After the per-test details, provide a summary table:
| Test | Success Rate | Runs | Pattern | Assessment |
|---|
Where Pattern is one of:
And Assessment refines the raw severity by incorporating the pattern analysis.
After the failure rate summary, suggest follow-up analyses when appropriate: