plugins/ci/skills/fetch-job-run-summary/SKILL.md
Fetch a Prow job run summary from Sippy showing all failed tests grouped by SIG with error messages
npx skillsauth add openshift-eng/ai-helpers fetch-job-run-summaryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill fetches a summary of a Prow job run from the Sippy API, listing all tests that failed (excluding flakes) along with their error messages.
Use this skill when you need to:
https://sippy.dptools.openshift.orgscript_path="plugins/ci/skills/fetch-job-run-summary/fetch_job_run_summary.py"
# Text output (AI-readable)
python3 "$script_path" <prow_job_run_id>
# JSON output (structured)
python3 "$script_path" <prow_job_run_id> --format json
| Parameter | Required | Description |
|-----------|----------|-------------|
| prow_job_run_id | Yes | The Prow job run ID (numeric, e.g., 2030845545290928128) |
| --format | No | Output format: text (default) or json |
The job run ID can be extracted from a Prow job URL:
https://prow.ci.openshift.org/view/gs/test-platform-results/logs/<job-name>/<job_run_id>
The last path segment is the job run ID.
Endpoint: https://sippy.dptools.openshift.org/api/job/run/summary
Query Parameter: prow_job_run_id (required)
Response Fields:
| Field | Type | Description |
|-------|------|-------------|
| id | int | Prow job run ID |
| name | string | Full job name |
| release | string | OpenShift release (e.g., 4.22) |
| cluster | string | Build cluster (e.g., build01) |
| url | string | Prow job URL |
| startTime | string | ISO 8601 start time |
| durationSeconds | int | Job duration in seconds |
| overallResult | string | S (success) or F (failure) |
| reason | string | Human-readable result reason |
| infrastructureFailure | bool | Whether this was an infrastructure failure |
| testCount | int | Total number of tests run |
| testFailureCount | int | Number of failed tests |
| testFailures | dict | Map of test name to error message (excludes flakes) |
| variants | list | Job variant tags |
The Sippy API automatically handles flake detection. When a test has both a failure and a pass in the same job run's junit results (the standard flake pattern), it is not included in testFailures. Only true failures — tests that failed without a corresponding pass — appear in the results.
The text output is structured for AI consumption with:
Structured JSON with the same data:
{
"success": true,
"job_name": "periodic-ci-openshift-hypershift-...",
"job_run_id": "2030845545290928128",
"release": "4.22",
"test_count": 3827,
"failure_count": 400,
"pass_rate": 89.5,
"failed_tests": [
{"test_name": "[sig-cli] example test name", "error": "error message..."}
],
"dominant_error_patterns": [
{"pattern": "stale GroupVersion discovery: ...", "count": 50, "percentage": 12.5}
]
}
# Get the summary of a job run that triggered mass test failures
python3 plugins/ci/skills/fetch-job-run-summary/fetch_job_run_summary.py 2030845545290928128
# Fetch summaries for a failing and passing run to diff
python3 plugins/ci/skills/fetch-job-run-summary/fetch_job_run_summary.py 2030845545290928128 --format json > failing.json
python3 plugins/ci/skills/fetch-job-run-summary/fetch_job_run_summary.py 2030845542774345728 --format json > passing.json
testFailureCount may be slightly higher than the number of entries in testFailures due to internal deduplicationfetch-test-runs skill insteadfetch-test-runs - Fetch raw outputs for a specific test across multiple job runsfetch-regression-details - Fetch Component Readiness regression details/ci:analyze-prow-job-test-failure - Deep analysis of test failures in a Prow jobtesting
Snapshot OpenShift payload data (release controller, PR diffs, comments, CI jobs, JUnit results, regression tracking) to a local directory for offline analysis
research
Shared engine for analyzing Jira issue activity and generating status summaries
tools
This skill should be used before any Snowflake command to verify MCP connectivity, guide users through access provisioning, and set the session context. Invoke this skill proactively whenever a command needs Snowflake data access.
development
Analyze a payload snapshot to identify root causes of blocking job failures, score candidate PRs, and produce an HTML report with revert recommendations