github-actions-cancel-waste-audit
v1.0.0Audit cancelled and timed-out GitHub Actions runs from JSON exports to surface wasted CI minutes and noisy workflows.
Installation
GitHub Actions Cancel Waste Audit
Use this skill to quantify wasted GitHub Actions runtime from cancelled or timed-out runs so flaky workflow churn gets fixed before it burns CI budget.
What this skill does
- Reads one or more GitHub Actions run JSON exports (
gh apioutput) - Estimates wasted runtime minutes per run (
run_started_at/created_at->updated_at) - Groups waste by repository + workflow + conclusion for fast triage
- Flags warn/critical waste levels using configurable minute thresholds
- Supports text and JSON output for terminal checks or dashboards
Inputs
Optional:
- RUN_GLOB (default: artifacts/github-actions-runs/*.json)
- TOP_N (default: 20)
- OUTPUT_FORMAT (text or json, default: text)
- WARN_WASTED_MINUTES (default: 15)
- CRITICAL_WASTED_MINUTES (default: 45)
- FAIL_ON_CRITICAL (0 or 1, default: 0)
- REPO_MATCH (regex, optional)
- REPO_EXCLUDE (regex, optional)
- WORKFLOW_MATCH (regex, optional)
- WORKFLOW_EXCLUDE (regex, optional)
- BRANCH_MATCH (regex, optional)
- BRANCH_EXCLUDE (regex, optional)
- ACTOR_MATCH (regex, optional)
- ACTOR_EXCLUDE (regex, optional)
- CONCLUSION_MATCH (regex, optional, default behavior already includes only cancelled/timed_out)
- CONCLUSION_EXCLUDE (regex, optional)
Collect run JSON
Single repository:
gh api repos/<owner>/<repo>/actions/runs --paginate
> artifacts/github-actions-runs/<owner>-<repo>.json
Run
Text report:
RUN_GLOB='artifacts/github-actions-runs/*.json'
WARN_WASTED_MINUTES=20
CRITICAL_WASTED_MINUTES=60
bash skills/github-actions-cancel-waste-audit/scripts/cancel-waste-audit.sh
JSON output for automation:
RUN_GLOB='artifacts/github-actions-runs/*.json'
OUTPUT_FORMAT=json
FAIL_ON_CRITICAL=1
bash skills/github-actions-cancel-waste-audit/scripts/cancel-waste-audit.sh
Filter to one repo/workflow family:
RUN_GLOB='artifacts/github-actions-runs/*.json'
REPO_MATCH='^flowcreatebot/'
WORKFLOW_MATCH='(test|build)'
BRANCH_MATCH='^(main|release)'
bash skills/github-actions-cancel-waste-audit/scripts/cancel-waste-audit.sh
Run with bundled fixtures:
RUN_GLOB='skills/github-actions-cancel-waste-audit/fixtures/*.json'
bash skills/github-actions-cancel-waste-audit/scripts/cancel-waste-audit.sh
Output contract
- Exit
0in reporting mode (default) - Exit
1ifFAIL_ON_CRITICAL=1and at least one run has waste at/aboveCRITICAL_WASTED_MINUTES - In
textmode: prints summary and top waste hotspots - In
jsonmode: prints summary, grouped stats, and critical run instances