github-actions-queue-latency-audit
v1.0.0Audit GitHub Actions queue wait hotspots from run/job JSON so CI bottlenecks are visible before they stall merges.
Installation
GitHub Actions Queue Latency Audit
Use this skill to quantify where workflows are waiting in queue before jobs start.
What this skill does
- Reads one or more GitHub Actions run JSON exports (from
gh run view --json ...) - Computes per-job queue wait (
startedAt - createdAt) and runtime duration (completedAt - startedAt) - Groups repeated jobs by repository + workflow + job name
- Ranks hotspots by worst queue wait and average queue wait
- Flags warning/critical queue waits with configurable thresholds
- Emits output as human-readable text or machine-readable JSON
Inputs
Optional:
- RUN_GLOB (default: artifacts/github-actions/*.json)
- TOP_N (default: 20)
- OUTPUT_FORMAT (text or json, default: text)
- QUEUE_WARN_SECONDS (default: 120)
- QUEUE_CRITICAL_SECONDS (default: 300)
- FAIL_ON_CRITICAL (0 or 1, default: 0) — exit non-zero when any job instance hits/exceeds critical queue wait
- WORKFLOW_MATCH (regex, optional)
- WORKFLOW_EXCLUDE (regex, optional)
- JOB_MATCH (regex, optional)
- JOB_EXCLUDE (regex, optional)
- REPO_MATCH (regex, optional)
- REPO_EXCLUDE (regex, optional)
Collect run JSON
gh run view <run-id> --json databaseId,workflowName,headBranch,headSha,url,repository,jobs
> artifacts/github-actions/run-<run-id>.json
Run
Text report:
RUN_GLOB='artifacts/github-actions/*.json'
TOP_N=15
QUEUE_WARN_SECONDS=180
QUEUE_CRITICAL_SECONDS=420
bash skills/github-actions-queue-latency-audit/scripts/queue-latency-audit.sh
JSON output for dashboards:
RUN_GLOB='artifacts/github-actions/*.json'
OUTPUT_FORMAT=json
FAIL_ON_CRITICAL=1
bash skills/github-actions-queue-latency-audit/scripts/queue-latency-audit.sh
Filter to one repo/workflow family:
RUN_GLOB='artifacts/github-actions/*.json'
REPO_MATCH='^flowcreatebot/'
WORKFLOW_MATCH='(CI|Build|Test)'
bash skills/github-actions-queue-latency-audit/scripts/queue-latency-audit.sh
Run with bundled fixtures:
RUN_GLOB='skills/github-actions-queue-latency-audit/fixtures/*.json'
bash skills/github-actions-queue-latency-audit/scripts/queue-latency-audit.sh
Output contract
- Exit
0in reporting mode (default) - Exit
1ifFAIL_ON_CRITICAL=1and at least one job instance has queue wait>= QUEUE_CRITICAL_SECONDS - In
textmode: prints summary + top queue hotspots - In
jsonmode: prints summary + grouped hotspot records + raw offending instances