Use when monitoring PR checks. Trigger with CI status, check verification, or PR readiness requests.
npx claudepluginhub emasoft/emasoft-plugins --plugin emasoft-integrator-agentThis skill uses the workspace's default tool permissions.
This skill enables agents to monitor, interpret, and wait for GitHub Pull Request check statuses. Use this skill when you need to:
README.mdreferences/ci-status-interpretation.mdreferences/op-get-check-details.mdreferences/op-get-pr-check-status.mdreferences/op-interpret-check-conclusions.mdreferences/op-wait-for-checks.mdreferences/polling-strategies.mdscripts/__pycache__/atlas_get_check_details.cpython-314.pycscripts/__pycache__/atlas_get_pr_checks.cpython-314.pycscripts/__pycache__/atlas_wait_for_checks.cpython-314.pycscripts/eia_get_check_details.pyscripts/eia_get_pr_checks.pyscripts/eia_wait_for_checks.pyPolls GitHub PR CI checks at intervals until completion or timeout. Useful for checking CI status, waiting for passes, monitoring builds, or verifying PR green status.
Polls GitHub CI check status for current branch's PR, reports pass/fail/pending with logs and blocking reviews, surfaces PR comments even if green.
Monitors PR health on recurring schedules: merge conflicts, CI/CD failures in GitHub Actions/Buildkite/Vercel/Fly.io, review comment triage/resolution, merge readiness. One-shot triage mode.
Share bugs, ideas, or general feedback.
This skill enables agents to monitor, interpret, and wait for GitHub Pull Request check statuses. Use this skill when you need to:
| Output Type | Format | Contents |
|---|---|---|
| Check Status Report | JSON | Complete status of all PR checks including pass/fail counts, individual check conclusions, and required check status |
| Wait Completion Report | JSON | Final status after polling, including timeout status, total wait time, and checks summary |
| Check Details | JSON | Detailed information about a specific check including duration, logs URL, and failure output |
| Exit Code | Integer | Standardized exit code (0-6) indicating success, error type, or specific failure reason |
Follow these steps to monitor and manage GitHub PR checks:
Determine Your Objective
Select and Execute the Appropriate Script
eia_get_pr_checks.py for current status snapshotseia_wait_for_checks.py for polling until completioneia_get_check_details.py for investigating specific failuresParse the JSON Output
all_passing or final_status field for overall statusInterpret Check Conclusions
Take Appropriate Action
eia_get_check_details.pyeia_wait_for_checks.py with appropriate timeoutHandle Errors Gracefully
Copy this checklist and track your progress:
gh auth statuspython eia_get_pr_checks.py --pr <number>all_passing field in JSON outputpython eia_wait_for_checks.py --pr <number> --timeout <seconds>python eia_get_check_details.py --pr <number> --check "<name>"| Scenario | Script to Use |
|---|---|
| Get current status of all PR checks | eia_get_pr_checks.py |
| Wait for all checks to finish | eia_wait_for_checks.py |
| Investigate a specific failing check | eia_get_check_details.py |
| Quick check if PR is mergeable | eia_get_pr_checks.py --summary-only |
START: What do you need to know about PR checks?
│
├─► "What is the current status of all checks?"
│ └─► Use: eia_get_pr_checks.py --pr <number>
│ Returns: List of all checks with their conclusions
│
├─► "Are all required checks passing?"
│ └─► Use: eia_get_pr_checks.py --pr <number> --required-only
│ Returns: Status of only required checks
│
├─► "I need to wait until checks complete"
│ └─► Use: eia_wait_for_checks.py --pr <number> --timeout <seconds>
│ Returns: Final status after all checks complete or timeout
│
├─► "Why did a specific check fail?"
│ └─► Use: eia_get_check_details.py --pr <number> --check <name>
│ Returns: Detailed check info including logs URL
│
└─► "Is this PR ready to merge?"
└─► Use: eia_get_pr_checks.py --pr <number> --summary-only
Returns: Simple pass/fail summary
| Conclusion | Meaning | Action Required |
|---|---|---|
success | Check passed | None |
failure | Check failed | Investigate and fix |
pending | Check still running | Wait or investigate if stuck |
skipped | Check was skipped | Usually OK, verify skip condition |
cancelled | Check was cancelled | Re-run if needed |
timed_out | Check exceeded time limit | Optimize or increase timeout |
action_required | Manual action needed | Review check details |
neutral | Neither pass nor fail | Check is informational only |
stale | Check is outdated | Push new commit to trigger |
Purpose: Retrieve all check statuses for a Pull Request.
Usage:
# Get all checks for PR #123
python eia_get_pr_checks.py --pr 123
# Get only required checks
python eia_get_pr_checks.py --pr 123 --required-only
# Get summary only (pass/fail count)
python eia_get_pr_checks.py --pr 123 --summary-only
# Specify repository (if not in git directory)
python eia_get_pr_checks.py --pr 123 --repo owner/repo
Output Format:
{
"pr_number": 123,
"total_checks": 5,
"passing": 3,
"failing": 1,
"pending": 1,
"skipped": 0,
"all_passing": false,
"required_passing": false,
"checks": [
{
"name": "build",
"status": "completed",
"conclusion": "success",
"required": true
}
]
}
Purpose: Poll and wait for all PR checks to complete.
Usage:
# Wait up to 10 minutes for checks
python eia_wait_for_checks.py --pr 123 --timeout 600
# Wait only for required checks
python eia_wait_for_checks.py --pr 123 --required-only --timeout 300
# Custom polling interval (default 30s)
python eia_wait_for_checks.py --pr 123 --interval 60
Output Format:
{
"pr_number": 123,
"completed": true,
"timed_out": false,
"final_status": "all_passing",
"wait_time_seconds": 180,
"checks_summary": {
"passing": 5,
"failing": 0,
"pending": 0
}
}
Purpose: Get detailed information about a specific check.
Usage:
# Get details for a specific check
python eia_get_check_details.py --pr 123 --check "build"
# Include logs URL
python eia_get_check_details.py --pr 123 --check "test" --include-logs-url
Output Format:
{
"name": "build",
"status": "completed",
"conclusion": "failure",
"started_at": "2024-01-15T10:00:00Z",
"completed_at": "2024-01-15T10:05:30Z",
"duration_seconds": 330,
"details_url": "https://github.com/...",
"logs_url": "https://github.com/.../logs",
"output": {
"title": "Build failed",
"summary": "Compilation error in src/main.py"
}
}
For detailed guidance on interpreting check statuses, see ci-status-interpretation.md:
For guidance on waiting for checks, see polling-strategies.md:
# Get all check statuses for PR #123
python eia_get_pr_checks.py --pr 123
# If all_passing is true, proceed with merge
# If not, investigate failing checks
# Wait up to 10 minutes for all checks to complete
python eia_wait_for_checks.py --pr 456 --timeout 600
# If timed_out is true, check CI runner status
# If completed is true and final_status is all_passing, merge is safe
| Problem | Cause | Solution |
|---|---|---|
| "No checks found" | PR has no CI configured | Verify repository has CI workflows |
| Checks stuck in "pending" | CI runner unavailable | Check GitHub Actions status page |
| Required check missing | Branch protection misconfigured | Review repository settings |
| Timeout while waiting | CI taking too long | Increase timeout or check CI performance |
| Authentication error | gh CLI not logged in | Run gh auth login |
# Verify gh CLI authentication
gh auth status
# Check repository access
gh repo view owner/repo
# Manual check inspection
gh pr checks <number> --json name,status,conclusion
# View raw API response
gh api repos/owner/repo/commits/SHA/check-runs
gh auth login)All scripts use standardized exit codes for consistent error handling:
| Code | Meaning | Description |
|---|---|---|
| 0 | Success | Output is valid JSON with check data |
| 1 | Invalid parameters | Bad PR number, missing required args |
| 2 | Resource not found | PR or check does not exist |
| 3 | API error | Network, rate limit, timeout waiting for checks |
| 4 | Not authenticated | gh CLI not logged in |
| 5 | Idempotency skip | N/A for these scripts |
| 6 | Not mergeable | N/A for these scripts |
Note: eia_wait_for_checks.py returns exit code 3 on timeout. Check the JSON output's timed_out field for details.