🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

GitHub Actions Failure Matrix

by @daniellummis

Summarize GitHub Actions matrix job failures across runs so you can spot unstable OS/runtime axes fast.

Versionv1.7.0
Downloads758
TERMINAL
clawhub install github-actions-failure-matrix

πŸ“– About This Skill


name: github-actions-failure-matrix description: Summarize GitHub Actions matrix job failures across runs so you can spot unstable OS/runtime axes fast. version: 1.7.0 metadata: {"openclaw":{"requires":{"bins":["bash","python3"]}}}

GitHub Actions Failure Matrix

Use this skill to turn noisy GitHub Actions run JSON into a matrix-focused failure report.

What this skill does

  • Reads one or more JSON exports from GitHub Actions runs (via gh run view --json)
  • Detects failure-like matrix jobs (failure, timed_out, cancelled, etc.)
  • Extracts matrix axes from common job-name patterns (name (a, b), name [a, b], name / a / b)
  • Groups repeated failures by workflow + job + matrix axis signature
  • Emits ranked triage output in text or json
  • Inputs

    Optional:
  • RUN_GLOB (default: artifacts/github-actions/*.json)
  • TOP_N (default: 20)
  • OUTPUT_FORMAT (text or json, default: text)
  • FAIL_ON_FAILURES (0 or 1, default: 0) β€” exit non-zero when failure groups exist
  • MIN_OCCURRENCES (default: 1) β€” hide groups below this repeat count
  • WORKFLOW_MATCH (regex, optional) β€” include only workflows whose names match
  • WORKFLOW_EXCLUDE (regex, optional) β€” drop workflows whose names match
  • BRANCH_MATCH (regex, optional) β€” include only runs whose branch names match
  • BRANCH_EXCLUDE (regex, optional) β€” drop runs whose branch names match
  • JOB_MATCH (regex, optional) β€” include only base job names that match
  • JOB_EXCLUDE (regex, optional) β€” drop base job names that match
  • AXIS_MATCH (regex, optional) β€” include only parsed matrix-axis strings that match
  • AXIS_EXCLUDE (regex, optional) β€” drop parsed matrix-axis strings that match
  • CONCLUSION_MATCH (regex, optional) β€” include only specific failure conclusions (failure, timed_out, cancelled, etc.)
  • CONCLUSION_EXCLUDE (regex, optional) β€” drop specific failure conclusions
  • FAILED_STEP_MATCH (regex, optional) β€” include only jobs whose terminal failed step matches
  • FAILED_STEP_EXCLUDE (regex, optional) β€” drop jobs whose terminal failed step matches
  • RUN_ID_MATCH (regex, optional) β€” include only runs whose run id matches
  • RUN_ID_EXCLUDE (regex, optional) β€” drop runs whose run id matches
  • RUN_URL_MATCH (regex, optional) β€” include only runs whose URL matches
  • RUN_URL_EXCLUDE (regex, optional) β€” drop runs whose URL matches
  • HEAD_SHA_MATCH (regex, optional) β€” include only runs whose headSha matches
  • HEAD_SHA_EXCLUDE (regex, optional) β€” drop runs whose headSha matches
  • REPO_MATCH (regex, optional) β€” include only runs whose repository matches (repository.nameWithOwner/full_name/name)
  • REPO_EXCLUDE (regex, optional) β€” drop runs whose repository matches
  • Collect run JSON

    gh run view  --json databaseId,workflowName,headBranch,headSha,url,repository,jobs \
      > artifacts/github-actions/run-.json
    

    Run

    Text report:

    RUN_GLOB='artifacts/github-actions/*.json' \
    TOP_N=15 \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    JSON output for CI annotation/upload:

    RUN_GLOB='artifacts/github-actions/*.json' \
    OUTPUT_FORMAT=json \
    FAIL_ON_FAILURES=1 \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Filter to a specific workflow + branch + matrix axis (for targeted triage):

    RUN_GLOB='artifacts/github-actions/*.json' \
    WORKFLOW_MATCH='(CI|Test)' \
    BRANCH_MATCH='^(main|release/)' \
    AXIS_MATCH='ubuntu-latest \| python-3\.12' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Isolate timeout-only matrix failures:

    RUN_GLOB='artifacts/github-actions/*.json' \
    CONCLUSION_MATCH='^timed_out$' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Exclude noisy flaky suites while keeping the rest of the matrix view:

    RUN_GLOB='artifacts/github-actions/*.json' \
    WORKFLOW_EXCLUDE='nightly|experimental' \
    JOB_EXCLUDE='lint|docs' \
    AXIS_EXCLUDE='windows-latest' \
    CONCLUSION_EXCLUDE='^cancelled$' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Focus only on setup/toolchain breakages by failed step name:

    RUN_GLOB='artifacts/github-actions/*.json' \
    FAILED_STEP_MATCH='setup|install|dependency' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Limit triage to a specific run range or workflow URL pattern:

    RUN_GLOB='artifacts/github-actions/*.json' \
    RUN_ID_MATCH='^(28419|28420)' \
    RUN_URL_MATCH='example/repo/actions/runs' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Scope triage to a commit range by headSha:

    RUN_GLOB='artifacts/github-actions/*.json' \
    HEAD_SHA_MATCH='^(abc123|def456)' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Scope triage to specific repositories when aggregating exports from multiple repos:

    RUN_GLOB='artifacts/github-actions/*.json' \
    REPO_MATCH='^flowcreatebot/(yf-api-saas|conspiracy-canvas)$' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Run with bundled fixtures:

    RUN_GLOB='skills/github-actions-failure-matrix/fixtures/*.json' \
    bash skills/github-actions-failure-matrix/scripts/failure-matrix.sh
    

    Output contract

  • Exit 0 by default (reporting mode)
  • Exit 1 if FAIL_ON_FAILURES=1 and at least one failure group is found
  • In text mode, prints summary + top failure matrix groups
  • In json mode, prints machine-readable summary and grouped failures