From base-tools
Summarize a GitHub pull request — purpose, key changes, review state, CI status, and outstanding blockers. Use when the user pastes a PR URL (github.com/<org>/<repo>/pull/<n>), references a PR by number (e.g. "PR
How this skill is triggered — by the user, by Claude, or both
Slash command
/base-tools:summarize-prThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a concise, structured summary of a GitHub pull request. The goal is to let the user decide *what to do about the PR* without opening the browser — purpose, scope, review state, blockers, recommendation.
Produce a concise, structured summary of a GitHub pull request. The goal is to let the user decide what to do about the PR without opening the browser — purpose, scope, review state, blockers, recommendation.
https://github.com/<org>/<repo>/pull/123.gh CLI installed and authenticated. If gh auth status fails, tell the user to run gh auth login and stop.gh token must have repo access.Resolve the PR identifier.
<org>/<repo> and number from /<org>/<repo>/pull/<n>.#<n> or PR <n> → run gh repo view --json nameWithOwner -q .nameWithOwner to get current repo. If the user is not in a git repo, ask which repo they mean.Fetch metadata in one call.
gh pr view <n> --repo <org>/<repo> --json \
number,title,author,state,isDraft,mergeable,reviewDecision,additions,deletions,changedFiles,body,reviews,statusCheckRollup,comments,headRefName,baseRefName
Fetch the diff, bounded.
gh pr diff <n> --repo <org>/<repo> | head -500
If changedFiles > 30 or additions + deletions > 1500, skip the full diff — list filenames instead and call out the size.
Identify blockers.
reviewDecision == "CHANGES_REQUESTED" → list each "REQUEST_CHANGES" review with its body.statusCheckRollup entry with conclusion != "SUCCESS" and not in ["SKIPPED", "NEUTRAL"] → name the check.mergeable == "CONFLICTING" → flag the merge conflict.Produce the summary in the exact format below.
## PR #<num> — <title>
- **Author:** @<author> · **State:** <state><draft-tag> · **Branch:** `<head>` → `<base>`
- **Size:** +<additions>/-<deletions> across <N> files
- **Review:** <reviewDecision> · <N approvals> · <N changes requested> · <N unresolved threads>
- **CI:** <N passing> · <N failing> · <N pending>
## Purpose
<One paragraph from PR body, or "(empty)" if no description>
## Key changes
- <Bullet per meaningful change. Group small file edits. Reference exact file paths.>
## Outstanding concerns
<Numbered list of blockers. If none, write "None — this PR has no blocking issues.">
## Recommendation
<One of: "Ready to merge", "Needs <comma-separated blockers>", "Discussion needed", "Draft — not yet ready for review">
gh pr view JSON output to the user — extract the fields and present the summary above.….Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub blazemeter/claude-base --plugin base-tools