/pr-status

Triage your open pull requests — who has reviewed, what is failing, what has gone stale.

Invoked by
you with /pr-status, or Claude automatically
Arguments
/pr-status [org] [--drafts] [--review-requested]
Requires
gh · python3
Pre-approved
Bash · AskUserQuestion · Read
Tags
githubreportingworkflow
License
WTFPL-2.0
gh skill install calebstewart/ai-slop pr-status --agent claude-code --scope user

Other agents, other scopes, and the copy-and-symlink routes are on the install page.

Triage of your own open pull requests. It answers the three questions worth asking on a Monday morning: what is blocked on me, what is waiting on somebody else, and what has quietly rotted since I last looked.

Built for the start of a day or week, or the morning after PTO, when the honest answer to “what was I doing?” is spread across dozens of PRs in several orgs.

What it does

One paginated GraphQL search collects every matching open PR. PRs whose checks are red get a second lookup for the names of the failing checks, so the report says ci/circleci: coverage rather than “something failed”. Each PR then lands in exactly one bucket, most urgent first:

BucketMeaning
Needs your actionMerge conflicts, failing checks, or changes requested.
Ready to mergeApproved, green, and cleanly mergeable — the cheapest work to close out.
No reviewer assignedNobody has been asked. These stall silently and are what PTO tends to bury.
Waiting on othersReview requested, nothing blocking on your end.
DraftsCollapsed to a count, plus any that have gone stale.

Staleness is tiered at 7 / 14 / 30 days without activity.

Scoping

Employer and personal work in one list is noise, so scope is settled before anything runs: --org NAME, --user NAME, or --repo OWNER/NAME. Invoked from inside a repository, the skill offers to narrow to that repo, its owning org, or everything.

Drafts and the review queue

Drafts are counted but not detailed by default — the focus is ready-for-review work, while still surfacing in-progress branches that have stopped moving so they don’t get lost. --include-drafts expands them; --drafts-only shows nothing else.

--review-requested flips to the inbound queue: PRs waiting on your review. The buckets change with it, because conflicts and failing checks are the author’s problem there, not yours — those sort under “blocked on the author” instead of climbing to the top of your list.

Things it gets right that are easy to get wrong

Using it

/pr-status, optionally with an org or --drafts. It’s also model-invoked, so asking what’s outstanding on your PRs is usually enough.

Needs gh (authenticated) and python3. Standard library only — no dependencies to install. An unscoped run over a large account takes roughly half a minute, since search pages are cursor-dependent and can’t be fetched in parallel.