원클릭으로
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: