بنقرة واحدة
flake-overview
Provide a unified flake analysis combining GCS-based flakefinder reports with testgrid success rates.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Provide a unified flake analysis combining GCS-based flakefinder reports with testgrid success rates.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
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.
| name | flake-overview |
| description | Provide a unified flake analysis combining GCS-based flakefinder reports with testgrid success rates. |
| allowed-tools | Read, Write, Bash(go run *), Bash(find *), Bash(ls *), Bash(test *), Grep |
This skill runs a single command that combines two complementary views of test flakiness:
Together they answer: "which tests are flaky, is it a PR-interaction problem or a baseline issue, and is it getting better or worse?"
The cmd/ci-failures tool lives in the kubevirt.io/ci-health repository. If not already inside the ci-health repository, cd into it first (e.g. cd kubevirt.io/ci-health from the github.com directory).
Run the command twice — once for a 28-day window and once for a 7-day window — to enable trend detection:
go run ./cmd/ci-failures flake-overview --days 28
Read the output YAML, then run:
go run ./cmd/ci-failures flake-overview --days 7
Read that output YAML too. Both runs produce a file at output/tmp/flake-overview.yaml (or output/tmp/sessions/{session-id}/flake-overview.yaml when a session ID is set). The second run overwrites the first, so read the first output before running the second.
The command:
.*-root$ lanes by default)Use the 28-day data as the baseline and the 7-day data for trend detection. For each test, compare:
report_date: "2026-05-13"
analysis_days: 14
total_failures: 1207
lanes:
- name: periodic-kubevirt-e2e-k8s-1.36-sig-compute
url: https://testgrid.k8s.io/kubevirt-periodics#periodic-kubevirt-e2e-k8s-1.36-sig-compute
failures: 348
share_percent: 28.83
total_builds: 56
failed_tests:
- test_name: "full test description"
succeeded: 0
failed: 55
skipped: 1
total_runs: 55
success_rate: 0.0
severity: likely-flaky
recent_failures:
- build_id: "2054504557802688512"
timestamp: "2026-05-13T10:11:03Z"
message: "error message excerpt..."
Key fields:
total_failures — total failures across all lanes in the windowlanes[*].failures — flakefinder failure count for this lanelanes[*].share_percent — percentage of total failureslanes[*].total_builds — number of testgrid builds analyzedlanes[*].failed_tests — per-test failure data from testgridfailed_tests[*].success_rate — percentage (0-100)failed_tests[*].severity — likely-pr-related (>=95%), inconclusive (>=80%), likely-flaky (<80%)The severity classification and success rates are a starting point. Apply these techniques to the data for more accurate diagnosis.
Examine the recent_failures list for each test to detect state transition patterns:
Collect all failing test names across all lanes and categorize by how many lanes they appear in:
Within each lane, compare build_ids across different failing tests:
build_ids in their recent_failures, they failed together in the same builds — this is an infrastructure flake at the lane level, not individual test problemsWhen identifying quarantine candidates, rank by these criteria (not just success rate):
For each unique failing test, find its source file and line number so the report can link directly to the code. This helps readers who are not familiar with the test codebase.
kubevirt.io/kubevirt (or kubevirt/kubevirt) relative to the ci-health repo's parent directory.It("...") description from each test name. The test name is a concatenation of Ginkgo Describe/Context/It blocks separated by spaces. The It text is the last meaningful segment — typically everything after the last known context boundary. For example:
KubeVirt Tests Suite.[sig-compute]VSOCK Live migration should retain the CID for migration targetshould retain the CID for migration targettests/ directory: grep -rn "<description>" tests/ --include="*.go"https://github.com/kubevirt/kubevirt/blob/main/<path>#L<line> (e.g., https://github.com/kubevirt/kubevirt/blob/main/tests/vmi_vsock_test.go#L121)If the kubevirt repo is not available locally, skip this step — the report will still be useful without links, just less navigable.
Skip .Pod and BeforeSuite/AfterSuite entries — these are infrastructure-level, not test code.
Always write the report to output/kubevirt/kubevirt/flake-overview/flake-overview-YYYY-MM-DD.md. The reports are long and structured — a file is easier to read, share, and diff against future runs than inline output.
The report must be grouped by SIG (derived from lane names: sig-compute, sig-storage, sig-network, sig-operator, sig-monitoring, sig-performance). Lanes that don't match a SIG (e.g., S390X, arm64) go under a "Platform-specific" group.
Lead with a concise summary covering:
Add a navigation links section immediately after the summary with markdown anchor links to each SIG section, e.g.:
## Navigation
- [sig-compute](#sig-compute)
- [sig-storage](#sig-storage)
- [sig-network](#sig-network)
- [sig-operator](#sig-operator)
- [sig-monitoring](#sig-monitoring)
- [sig-performance](#sig-performance)
- [Platform-specific](#platform-specific)
- [Infrastructure](#infrastructure)
- [Quarantine Candidate Summary](#quarantine-candidate-summary)
Before the SIG sections, flag infra-correlated lanes:
.Pod failures)For each SIG, create a section with:
[QUARANTINE] flag if present in the test nameAfter all SIG sections, provide a cross-SIG quarantine candidate table:
| Test | SIG | Lanes | Worst Rate (28d) | 7d Trend | Pattern | Dispersion | Priority |
|---|
Where:
[QUARANTINE])Then list already-quarantined tests that remain severely broken (success rate <50%) as a "quarantine debt" reminder — these have been quarantined but never fixed. These should also link to source code.
After the flake overview report, suggest follow-up analyses when appropriate: