Agent skill

Fetch Test Runs

by openshift-eng in openshift-eng/ai-helpers

Fetch test runs from Sippy API including outputs for AI-based similarity analysis

Apache-2.0Auto-check passed

Install Fetch Test Runs

skills CLI
$ npx skills add openshift-eng/ai-helpers --skill fetch-test-runs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install openshift-eng/ai-helpers fetch-test-runs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/openshift-eng/ai-helpers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ci/skills/fetch-test-runs .claude/skills/fetch-test-runs && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fetch-test-runs
GitHub stars
120
Token cost
~3.9k tokens
SKILL.md length
905 words
Files
3
Skills in repo
118
Repo updated
First seen
Licence
Apache-2.0

At a glance

Fetch test runs from Sippy API including outputs for AI-based similarity analysis

  • Works in 3 steps: Run the Python Script → Prepare Input Data (for… → Parse the Output
  • SKILL.md covers When to Use This Skill, Prerequisites, Implementation Steps and API Response Schema, plus 5 more sections
  • Runs Python scripts from its folder; calls python3, jq and curl; reaches prow.ci.openshift.org and sippy.dptools.openshift.org

What it does

Fetch Test Runs is an agent skill from openshift-eng/ai-helpers. Fetch test runs from Sippy API including outputs for AI-based similarity analysis

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `README.md` and `fetch_test_runs.py`).

It works with Python and Google Cloud. The repository describes itself as: Developer productivity tools for Claude Code & other AI assistants. The licence is Apache-2.0.

Example prompts

  • “/fetch-test-runs”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Run the Python Script
  2. Prepare Input Data (for analyze-regression)
  3. Parse the Output

What it can do on your machine

Read from SKILL.md and the folder at commit a627176. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • jq
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • prow.ci.openshift.org
    • sippy.dptools.openshift.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fetch Test Runs loads about 3.9k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 905 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from openshift-eng/ai-helpers at commit a627176, republished under its Apache-2.0 licence (© openshift-eng). 905 words, ~3,907 tokens.

Download SKILL.mdSave it as .claude/skills/fetch-test-runs/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
fetch-test-runs
description
Fetch test runs from Sippy API including outputs for AI-based similarity analysis

Fetch Test Runs

This skill fetches test runs from the Sippy API. It can return both failed and successful test runs, including JUnit output for AI-based analysis.

When to Use This Skill

Use this skill when you need to:

  • Fetch test run data for a specific test across all jobs
  • Get raw test failure outputs for AI-based similarity analysis
  • Compare error messages across runs to determine if they share the same root cause
  • Include successful runs in addition to failures (optional)
  • Filter runs by job name substrings (e.g., only GCP techpreview jobs)
  • Access JUnit test output for debugging and investigation

Prerequisites

  1. Network Access: Must be able to reach the Sippy test runs API

    • No authentication required
    • Check: curl -s https://sippy.dptools.openshift.org/api/tests/v2/runs?test_id=test
  2. Python 3: Python 3.6 or later

    • Check: python3 --version
    • Uses only standard library (no external dependencies)
  3. Input Data: Requires test_id (job_run_ids are optional)

    • Get from fetch-regression-details skill output
    • test_id: Found in regression data (e.g., "openshift-tests:71c053c318c11cfc47717b9cf711c326")
    • job_run_ids: Optional - extracted from sample_failed_jobs[].failed_runs[].job_run_id

Implementation Steps

Step 1: Run the Python Script
bash
# Path to the Python script
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"

# Fetch all test runs (failures only, by default)
python3 "$script_path" "$test_id" --format json

# Include successful runs as well
python3 "$script_path" "$test_id" --include-success --format json

# Filter to a specific Prow job (exact name works as substring of itself)
python3 "$script_path" "$test_id" --job-contains "periodic-ci-openshift-release-..." --format json

# Filter by multiple substrings (AND logic, case-insensitive, server-side)
python3 "$script_path" "$test_id" --job-contains gcp --job-contains techpreview --format json

# Filter to specific job run IDs (backward compatible with analyze-regression)
python3 "$script_path" "$test_id" "$job_run_ids" --format json

# Get human-readable summary
python3 "$script_path" "$test_id" --format summary

Arguments:

  • test_id: Required test identifier (e.g., "openshift-tests:abc123")
  • job_run_ids: Optional comma-separated list of Prow job run IDs to filter by

Options:

  • --include-success: Include successful test runs (default: failures only)
  • --job-contains <name>: Filter by job name substring (server-side, case-insensitive). Repeatable for AND logic — all substrings must appear in the job name. Full job names also work since they are substrings of themselves. E.g., --job-contains gcp --job-contains techpreview matches jobs containing both "gcp" and "techpreview".
  • --start-days-ago <days>: Number of days to look back (default API is 7 days)
  • --exclude-output: Strip the output field from each run to reduce response size. Use when you only need pass/fail status (e.g., regression start analysis). Significantly reduces JSON output size for large result sets.
  • --output <path>: Write output to a file instead of stdout. Use when fetching large result sets (e.g., --include-success --start-days-ago 28) that may exceed stdout buffer limits. The script prints a summary line to stderr confirming the write.
  • --format json|summary: Output format (default: json)
Step 2: Prepare Input Data (for analyze-regression)

When used with regression analysis, extract required data from regression details:

bash
# Assuming you have regression_data from fetch-regression-details skill
test_id=$(echo "$regression_data" | jq -r '.test_id')

# Collect all job_run_ids from sample_failed_jobs
# This creates a comma-separated list of all failed job run IDs
job_run_ids=$(echo "$regression_data" | jq -r '
  .sample_failed_jobs
  | to_entries[]
  | .value.failed_runs[]
  | .job_run_id
' | tr '\n' ',' | sed 's/,$//')

echo "Test ID: $test_id"
echo "Job Run IDs: $job_run_ids"
Step 3: Parse the Output

The script outputs structured JSON data:

bash
# Store JSON output for processing
output_data=$(python3 "$script_path" "$test_id" --format json)

# Check if fetch was successful
success=$(echo "$output_data" | jq -r '.success')

if [ "$success" = "true" ]; then
  # Extract runs array
  runs=$(echo "$output_data" | jq -r '.runs')

  # The runs array contains objects with: url, output, test_name, success
  # The AI command will analyze these runs for similarity
  echo "Fetched $(echo "$runs" | jq 'length') runs"
else
  # Handle error case
  error=$(echo "$output_data" | jq -r '.error')
  echo "Error: $error"
  echo "Test runs API may not be available"
fi

API Response Schema

The Sippy API returns a JSON array of test run objects:

json
[
  {
    "url": "https://prow.ci.openshift.org/view/gs/test-platform-results-public/logs/periodic-ci-openshift-release-master-ci-4.22-e2e-aws-ovn-techpreview/2016123858595090432",
    "output": "fail [k8s.io/kubernetes/test/e2e/apimachinery/discovery.go:145]: Fail to access: /apis/stable.e2e-validating-admission-policy-1181/: the server could not find the requested resource",
    "test_name": "[sig-api-machinery] Discovery should validate PreferredVersion for each APIGroup [Conformance]",
    "success": false,
    "failed_tests": 3
  },
  {
    "url": "https://prow.ci.openshift.org/view/gs/test-platform-results-public/logs/...",
    "output": "",
    "test_name": "[sig-api-machinery] Discovery should validate PreferredVersion for each APIGroup [Conformance]",
    "success": true,
    "failed_tests": 0
  }
]

Script Output Format

The script supports two output formats:

JSON Format (--format json)

Returns structured JSON with raw runs:

json
{
  "success": true,
  "test_id": "openshift-tests:71c053c318c11cfc47717b9cf711c326",
  "requested_job_runs": 0,
  "include_success": false,
  "job_name_filters": ["gcp", "techpreview"],
  "runs": [
    {
      "url": "https://prow.ci.openshift.org/...",
      "output": "fail [...]: error message",
      "test_name": "[sig-api-machinery] test name",
      "success": false,
      "failed_tests": 3
    }
  ],
  "api_url": "https://sippy.dptools.openshift.org/api/tests/v2/runs?test_id=...&prowjob_name=gcp&prowjob_name=techpreview"
}

Field Descriptions:

  • success: Boolean indicating if the API call succeeded
  • test_id: The test identifier that was queried
  • requested_job_runs: Number of job run IDs requested (0 if none specified)
  • include_success: Whether successful runs were requested
  • job_name_filters: List of job name substrings used for server-side filtering (null if not specified)
  • runs: Raw array of test run objects from Sippy API
    • url: Prow job URL for this specific run
    • output: The actual JUnit test failure output text (empty for successes)
    • test_name: Full test name
    • success: Boolean indicating if this run passed
    • failed_tests: Count of all tests that failed in this job run. If failed_tests > 10, this is a mass failure job — the test may be caught up in a larger issue (e.g., infrastructure failure, installer failure) that needs further investigation to root cause. When many runs show mass failures, the regression may not be caused by a change specific to this test.
  • api_url: The API URL that was called

Error Response (when success is false):

json
{
  "success": false,
  "error": "Failed to connect to test runs API: Connection refused",
  "test_id": "openshift-tests:abc123",
  "requested_job_runs": 0,
  "include_success": false,
  "job_name_filters": null
}
Show full SKILL.md (350 more words)Show less
Summary Format (--format summary)

Returns human-readable formatted output with sample runs:

Test Runs
============================================================

Test ID: openshift-tests:71c053c318c11cfc47717b9cf711c326
Job Contains: ['gcp', 'techpreview']
Include Successes: False
Runs Fetched: 18

Successes: 0, Failures: 18

Mass Failure Runs (>10 test failures in job): 4 of 18
  ⚠ These runs had many other test failures — this test may be caught up in a larger issue.

Sample Runs:

1. [FAIL] Job URL: https://prow.ci.openshift.org/view/gs/test-platform-results-public/logs/...
   Failed Tests in Job: 3
   Output: fail [k8s.io/kubernetes/test/e2e/apimachinery/discovery.go:145]: Fail to access...

2. [FAIL] [MASS FAILURE] Job URL: https://prow.ci.openshift.org/view/gs/test-platform-results-public/logs/...
   Failed Tests in Job: 47
   Output: fail [k8s.io/kubernetes/test/e2e/apimachinery/discovery.go:145]: Fail to access...

3. [PASS] Job URL: https://prow.ci.openshift.org/view/gs/test-platform-results-public/logs/...

... and 15 more runs

Error Handling

Case 1: API Not Available
bash
python3 fetch_test_runs.py "openshift-tests:abc"

Output (JSON format):

json
{
  "success": false,
  "error": "Failed to connect to test runs API: Connection refused.",
  "test_id": "openshift-tests:abc",
  "requested_job_runs": 0,
  "include_success": false,
  "job_name_filters": null
}

Output (summary format):

Test Runs - FETCH FAILED
============================================================

Error: Failed to connect to test runs API: Connection refused.

The test runs API may not be available.
Case 2: No Runs Returned

If the API returns an empty array:

json
{
  "success": true,
  "test_id": "openshift-tests:abc",
  "requested_job_runs": 0,
  "include_success": false,
  "job_name_filters": null,
  "runs": []
}
Case 3: Invalid Arguments
bash
python3 fetch_test_runs.py

Output:

Usage: fetch_test_runs.py <test_id> [job_run_ids] [options]

Arguments:
  test_id       Test identifier (e.g., 'openshift-tests:abc123')
  job_run_ids   Optional comma-separated list of Prow job run IDs

Options:
  --include-success    Include successful test runs (default: failures only)
  --job-contains       Filter by job name substring (repeatable for AND logic)
  --exclude-output     Strip output text from runs to reduce response size
  --output <path>      Write output to file instead of stdout
  --format json|summary   Output format (default: json)

Exit Codes:

  • 0: Success
  • 1: Error (invalid input, API error, network error, etc.)

Examples

Example 1: Fetch All Failures for a Test
bash
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"
python3 "$script_path" "openshift-tests:bb3a7d828630760296ef203c5cacf708" --format json
Example 2: Fetch All Runs Including Successes
bash
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"
python3 "$script_path" "openshift-tests:bb3a7d828630760296ef203c5cacf708" --include-success --format json
Example 3: Fetch Specific Job Runs (Backward Compatible)

Used by analyze-regression command:

bash
# Assume regression_data is already fetched
test_id=$(echo "$regression_data" | jq -r '.test_id')
job_run_ids=$(echo "$regression_data" | jq -r '.sample_failed_jobs | to_entries[] | .value.failed_runs[] | .job_run_id' | tr '\n' ',' | sed 's/,$//')

# Fetch outputs for specific job runs
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"
output_data=$(python3 "$script_path" "$test_id" "$job_run_ids" --format json)

# Check success
if [ "$(echo "$output_data" | jq -r '.success')" = "true" ]; then
  echo "Successfully fetched runs"
fi
Example 4: Get Summary Report
bash
python3 plugins/ci/skills/fetch-test-runs/fetch_test_runs.py \
  "openshift-tests:71c053c318c11cfc47717b9cf711c326" \
  --format summary
Example 5: Extract Output Messages for AI Analysis
bash
# Fetch runs
output_data=$(python3 "$script_path" "$test_id" --format json)

# Extract all failure output messages
if [ "$(echo "$output_data" | jq -r '.success')" = "true" ]; then
  # Get all output texts from failed runs
  echo "$output_data" | jq -r '.runs[] | select(.success == false) | .output'

  # AI command will analyze these for:
  # - Similarity/consistency
  # - Common error patterns
  # - File references and API paths
  # - Root cause determination
fi
Example 6: Filter Runs by Job Name Substrings

Filter to runs from jobs matching multiple criteria (e.g., GCP + techpreview):

bash
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"

# Get only GCP techpreview runs (both substrings must match, server-side)
python3 "$script_path" "openshift-tests:abc123" --include-success \
  --job-contains gcp --job-contains techpreview \
  --start-days-ago 28 --format json

# Get only metal upgrade runs
python3 "$script_path" "openshift-tests:abc123" \
  --job-contains metal --job-contains upgrade \
  --format summary

# Full job name also works (it's a substring of itself)
python3 "$script_path" "openshift-tests:abc123" \
  --job-contains "periodic-ci-openshift-release-master-nightly-4.22-e2e-gcp-ovn-techpreview" \
  --format json
Example 7: Determine Regression Start Date

Used by analyze-regression command to find when failures began:

bash
script_path="plugins/ci/skills/fetch-test-runs/fetch_test_runs.py"

# Get the job with the most failures
most_failed_job="periodic-ci-openshift-release-master-nightly-4.22-e2e-metal-ipi-ovn"

# Fetch all runs (including successes) for this specific job, going back 28 days
job_history=$(python3 "$script_path" "$test_id" \
  --include-success \
  --job-contains "$most_failed_job" \
  --start-days-ago 28 \
  --format json)

# Analyze the run history
if [ "$(echo "$job_history" | jq -r '.success')" = "true" ]; then
  # Runs are returned newest to oldest
  # Iterate to find where failures started
  echo "$job_history" | jq -r '.runs[] | "\(.success) \(.url)"'

  # Look for transition from passing to failing
  # Find the first failure that's part of the current regression
fi

Notes

  • The script uses only Python standard library - no external dependencies required
  • Uses the production Sippy URL
  • Handles API unavailability by returning a JSON error response with success: false and a descriptive error message
  • Returns raw outputs for AI-based interpretation and similarity analysis
  • Job run IDs are optional - can fetch all runs for a test
  • --include-success allows analyzing both passing and failing runs
  • --job-contains filters results server-side using case-insensitive substring matching. Repeat for AND logic (all substrings must appear in the job name). Full job names work too since they are substrings of themselves.
  • --start-days-ago allows looking back further than the default 7 days (e.g., --start-days-ago 28)
  • Combine --include-success, --job-contains, and --start-days-ago to get full test history for regression analysis
  • Backward compatible with analyze-regression command (accepts job_run_ids)
  • Summary format shows first 5 runs only, to keep output manageable
  • Runs are returned in order from most recent to least recent
  • Each run includes a failed_tests count — the total number of tests that failed in that job. If failed_tests > 10, it indicates a mass failure job where many tests failed together, suggesting the test may be caught up in a larger issue (infrastructure failure, installer failure, etc.) rather than a regression specific to this test

See Also

  • Related Skill: fetch-regression-details (provides test_id and job_run_ids)
  • Related Command: /ci:analyze-regression (uses this skill for failure analysis)

© openshift-eng, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in plugins/ci/skills/fetch-test-runs of openshift-eng/ai-helpers.

  • SKILL.md
  • README.md
  • fetch_test_runs.py

Open the folder on GitHubat commit a627176

Compare with similar skills

Fetch Test Runs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fetch Test Runs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fetch Test Runs this skillopenshift-eng/ai-helpers120—~3.9kAutomated safety check: PassApache-2.0
Kiln Check DeprecationKiln-AI/Kiln5.2k—~2.5kAutomated safety check: NotesCustom licence
Kiln Check Finetune DeprecationKiln-AI/Kiln5.2k—~1.9kAutomated safety check: NotesCustom licence
Retail Product Search Agentgoogle/adk-recipes10k—~3kAutomated safety check: PassApache-2.0
Agent Platform Skill Registrygoogle/skills21k—~584Automated safety check: PassApache-2.0
ContributingGoogleCloudPlatform/race-condition234—~930Automated safety check: PassCustom licence

Similar skills

  • Check Kiln's model list for deprecated or sunset models across all providers.

    5.2k GitHub stars~2.5k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check: notes
  • Check Kiln's fine-tunable model list for deprecated or unsupported base models.

    5.2k GitHub stars~1.9k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check: notes
  • Retail Product Search Agent

    google/adk-recipes

    Official

    Builds a retail product search agent on Google Cloud, from catalog ingestion into BigQuery and Vector Search to ADK scaffolding, evaluation and Cloud Run deployment.

    10k GitHub stars~3k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Official

    Searches, manages and scaffolds skills in the Gemini Enterprise Agent Platform Skill Registry using bundled Python scripts and Google Cloud credentials.

    21k GitHub stars~584 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Contributing

    GoogleCloudPlatform/race-condition

    Guides the developer workflow for contributing to Race Condition.

    234 GitHub stars~930 tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Official

    Analyzes BigQuery slot use, query costs and execution bottlenecks from INFORMATION_SCHEMA to diagnose slow queries, slot contention and unpartitioned scans.

    21k GitHub stars~2.3k tokensUpdated today
    DatabasesAuto-check passed

More from openshift-eng/ai-helpers

All 118 skills in this repo
  • Investigate CI Reliability

    openshift-eng/ai-helpers

    Find and independently validate actionable reliability defects across OpenShift release jobs and presubmits, then export portable issue handoffs.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Address Review PR

    openshift-eng/ai-helpers

    Fetch and address all PR review comments — categorize by priority, make code changes, post replies, and push.

    120 GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Categorize Activity Types

    openshift-eng/ai-helpers

    Categorize Jira issues into Red Hat Sankey Activity Type categories using MCP Jira tools.

    120 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed
  • Has Review Work

    openshift-eng/ai-helpers

    Decide whether a GitHub PR has unanswered authorized review comments or new required CI failures worth a follow-up agent.

    120 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Must Gather Analyzer

    openshift-eng/ai-helpers

    Analyze OpenShift must-gather diagnostic data including cluster operators, pods, nodes, and network components.

    120 GitHub stars~2.3k tokensUpdated 2 days ago
    Auto-check passed
  • Payload Autodl JSON

    openshift-eng/ai-helpers

    Schema for the autodl JSON data file produced by payload-analysis for database ingestion — you must use this skill whenever generating the autodl JSON file

    120 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed

Questions about Fetch Test Runs

What does Fetch Test Runs do?

Fetch test runs from Sippy API including outputs for AI-based similarity analysis. Fetch Test Runs is an agent skill from openshift-eng/ai-helpers.

How do I install Fetch Test Runs in Claude Code?

Run `npx skills add openshift-eng/ai-helpers --skill fetch-test-runs -a claude-code`. Or copy the skill folder (plugins/ci/skills/fetch-test-runs in openshift-eng/ai-helpers) into .claude/skills/fetch-test-runs in your project. Claude Code loads it when a task matches its description.

How do I install Fetch Test Runs in Codex?

Run `npx skills add openshift-eng/ai-helpers --skill fetch-test-runs -a codex`. Or copy the skill folder (plugins/ci/skills/fetch-test-runs in openshift-eng/ai-helpers) into .agents/skills/fetch-test-runs in your project. Codex loads it when a task matches its description.

Can I use Fetch Test Runs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add openshift-eng/ai-helpers --skill fetch-test-runs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fetch-test-runs, .gemini/skills/fetch-test-runs, .github/skills/fetch-test-runs and .opencode/skills/fetch-test-runs in your project.

What does Fetch Test Runs need to run?

Going by SKILL.md and its folder, Fetch Test Runs needs Python for the scripts in its folder and the command-line tools its instructions call (python3, jq and curl). Our summary lists: Python 3.

Does Fetch Test Runs access the network?

SKILL.md names 2 domains. In commands or code: prow.ci.openshift.org and sippy.dptools.openshift.org; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Fetch Test Runs safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Fetch Test Runs use?

Fetch Test Runs is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fetch Test Runs use?

About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fetch Test Runs?

Skills that share tags, products or a category with Fetch Test Runs: Kiln Check Deprecation (Kiln-AI/Kiln, 5.2k stars), Kiln Check Finetune Deprecation (Kiln-AI/Kiln, 5.2k stars), Retail Product Search Agent (google/adk-recipes, 10k stars) and Agent Platform Skill Registry (google/skills, 21k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fetch Test Runs?

openshift-eng (a GitHub organization) maintains it in openshift-eng/ai-helpers, which has 120 GitHub stars. The repository holds 118 skills in this directory. The repository was last updated on October 6, 2026.

Source: openshift-eng/ai-helpers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.