github:prs

SkillDev tools

PR health analysis - CI passing without review, stale PRs, merge conflicts

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the github:prs skill

What this skill tells your AI

The instructions your AI receives, as published by rossoctl/rossoctl in .claude/skills/github:prs/SKILL.md and read by ahel’s review.

Analyze open PRs to find those needing review, stuck in CI, or going stale.

Variables

Set at session start:

export OWNER=<org-or-user>
export REPO=<repo-name>

When to Use

  • Weekly PR grooming
  • Finding PRs ready to merge
  • Identifying stuck or abandoned PRs

Auto-approved: All gh commands are read-only and auto-approved.

Analysis Steps

1. All Open PRs

gh pr list --repo $OWNER/$REPO --state open --json number,title,author,createdAt,updatedAt,reviewDecision,statusCheckRollup

2. PRs Passing CI Without Review

gh pr list --repo $OWNER/$REPO --state open --json number,title,author,reviewDecision,statusCheckRollup --jq '.[] | select(.reviewDecision != "APPROVED") | select(.statusCheckRollup != null) | select([.statusCheckRollup[] | select(.conclusion == "FAILURE")] | length == 0) | "#\(.number) \(.title) (@\(.author.login))"'

3. Stale PRs (no update > 14 days)

gh pr list --repo $OWNER/$REPO --state open --json number,title,updatedAt,author --jq '.[] | select(.updatedAt < (now - 14*24*3600 | strftime("%Y-%m-%dT%H:%M:%SZ"))) | "#\(.number) \(.title) (last: \(.updatedAt))"'

4. PRs with Failing CI

gh pr list --repo $OWNER/$REPO --state open --json number,title,statusCheckRollup --jq '.[] | select(.statusCheckRollup != null) | select([.statusCheckRollup[] | select(.conclusion == "FAILURE")] | length > 0) | "#\(.number) \(.title)"'

5. PRs with Merge Conflicts

gh pr list --repo $OWNER/$REPO --state open --json number,title,mergeable --jq '.[] | select(.mergeable == "CONFLICTING") | "#\(.number) \(.title)"'

PR Health Report

## PR Health Report

### Ready to Merge (CI passing, needs review): N
- [list — prioritize these for review]

### Failing CI: N
- [list — authors should investigate]

### Stale (> 14 days): N
- [list — ping authors or close]

### Merge Conflicts: N
- [list — needs rebase]

Troubleshooting

Problem: statusCheckRollup is null for all PRs

Symptom: jq filters on CI status return no results. Fix: The repo may not have required status checks. Use gh pr checks <N> --repo $OWNER/$REPO per-PR instead.

Problem: mergeable shows UNKNOWN

Symptom: GitHub hasn't computed mergeability yet. Fix: Wait a few seconds and re-query — GitHub computes this lazily. Or open the PR in the browser to trigger the check.

Problem: Stale query returns too many results

Symptom: Old PRs with recent bot comments show as active. Fix: Filter by updatedAt AND check comments count or last human comment date.

Related Skills

  • github:last-week - Weekly summary including PRs
  • github:issues - Issue triage
  • ci:status - Detailed CI check analysis
  • repo:pr - PR creation format
  • git:rebase - Fix merge conflicts

Signals

GitHub stars
300
Forks
107
Last commit
Sep 2026

ahel review

  • S4info
    community integration — published by rossoctl, not github

Automated review, not a security audit. Ruleset v1.

Advanced
Catalog kind
skill
Gateway key
github-prs
Source
github.com/rossoctl/rossoctl