Summarizes open pull requests into a blockers-first standup digest. Activates when the user asks to summarize open PRs, find blocked pull requests, generate a PR standup, or triage review backlog from a PR export.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill pr-blocker-summarizer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pr Blocker Summarizer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-pr-blocker-summarizer-agent-skills-mirror)More formats (shields.io, HTML) on the badges page.
---
name: pr-blocker-summarizer
description: Summarizes open pull requests into a blockers-first standup digest. Activates when the user asks to summarize open PRs, find blocked pull requests, generate a PR standup, or triage review backlog from a PR export.
license: MIT
metadata:
author: agent-skills-platform
version: 1.0.0
created: 2026-06-27
last_reviewed: 2026-07-20
review_interval_days: 180
---
# PR Blocker Summarizer
Turn a JSON export of open pull requests into a blockers-first digest: which PRs
are blocked (failing checks, requested changes, or stale), which are ready to
merge, and a one-line count an agent can post to standup.
A bundled **example** skill — small but real, used to demonstrate the creator's
validation, pipeline, and eval-rollout machinery.
## Activation
Activates on "summarize open PRs", "what's blocking my PRs", "PR standup",
"review backlog". Do **not** activate on general git/GitHub questions unrelated to
triaging a set of PRs.
## Input
A JSON array of PRs, each with `title`, `state` (`open`), `checks`
(`passing`/`failing`), `review` (`approved`/`changes_requested`/`pending`), and
`age_days`. Missing fields are treated conservatively (counted as not-blocked only
when clearly ready).
## Run
```bash
python3 scripts/run_pipeline.py --input prs.json --output digest.json
```
Output JSON shape:
```json
{
"total": 7,
"blocked": [{"title": "...", "reasons": ["failing checks"]}],
"ready": ["..."],
"summary": "7 open · 3 blocked · 2 ready to merge"
}
```
## Gotchas
- **`blocked` + `ready` does not equal `total`.** A PR is `ready` only when
`checks` is explicitly `passing` *and* `review` is explicitly `approved`. A PR
with no blockers but a missing `checks` field lands in neither list and vanishes
from both counts. Never narrate the summary line as if the two numbers account
for every PR — say "N blocked, M ready" and leave the remainder unclaimed.
- **`state` is read from the input but never filtered on.** A closed or merged PR
left in the export is counted in `total` and classified like any open one. Filter
the export before running if it may contain non-open PRs.
- **`review: pending` counts as blocked** ("awaiting review"). A PR opened five
minutes ago is reported as a blocker. This is intentional for standup triage, but
it inflates the blocked count on teams that open PRs early.
- **A non-numeric `age_days` silently skips the stale check** rather than erroring.
An export with `"age_days": "unknown"` will never flag anything stale, and the
digest gives no sign that the check did not run.
## Anti-goals
- Does not call the GitHub API; it works on an exported PR list.
- Does not merge or comment on PRs; it only summarizes.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!