Review an incoming PR end-to-end — strict local review, drafted GitHub review, post after confirmation
Scanned 9/9/2026
Install to Claude Code
npx -y skills add gittower/git-flow-next --skill handle-pr --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Handle Pr?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gittower-handle-pr)More formats (shields.io, HTML) on the badges page.
---
name: handle-pr
description: Review an incoming PR end-to-end — strict local review, drafted GitHub review, post after confirmation
argument-hint: <pr-number>
allowed-tools: Task, Bash, Read, Glob, Grep, Write, mcp__github__get_pull_request, mcp__github__get_pull_request_files, mcp__github__create_pull_request_review
---
# Handle PR
Review an incoming pull request end-to-end: a strict local review against
REVIEW_CRITERIA.md (including scope and spec satisfaction), distilled into a
GitHub review draft, posted only after user confirmation. Internal and
external PRs are treated the same.
For later rounds — after the author responds to a posted review — use
`/follow-up-review <number>` instead (it is round-aware: it verifies the prior
requested changes against the delta and reads the author's replies).
`/address-review` is the author-side counterpart, for feedback on a PR *you*
authored — not for re-reviewing an incoming PR.
## Arguments
`/handle-pr <pr-number>`
## Workflow
### Step 1: Pre-Checks
Fetch the PR (`mcp__github__get_pull_request`). Check before any deep
review:
- **Scope**: does the PR address exactly one concern (CONTRIBUTING.md: one
PR, one concern)? If it clearly bundles unrelated changes, the review can
short-circuit: the primary finding is "split this PR", detailed findings
are secondary
- **Linked spec/issue**: identify the linked issue from the PR body or
branch name. If it links a `spec` issue, that spec is the verification
target
- **CI status**: note failing checks (`gh pr checks <number>`)
### Step 2: Local Review
Spawn a subagent (Task tool, `subagent_type: "general-purpose"`):
- **description**: `Review PR locally`
- **prompt**: `Read the skill definition at .claude/skills/code-review/SKILL.md and execute it fully in PR mode for PR #<number>. Apply all eight review areas in REVIEW_CRITERIA.md strictly — including Scope (one PR, one concern) and Spec Satisfaction against issue #<linked-issue>. This is an incoming PR; hold it to the project's full standard: tests, guidelines, commit messages, documentation.`
**Verify**: the review file `review-pr<number>-*.md` exists in `.ai/`.
### Step 3: Draft the GitHub Review
Spawn a subagent:
- **description**: `Draft GitHub review`
- **prompt**: `Read the skill definition at .claude/skills/pr-review/SKILL.md and execute it fully for PR #<number>. Use the existing code review file in .ai/ as the basis. Write the review file for preview — do not post.`
**Verify**: the `pr-review-*.md` draft exists.
### Step 4: Confirmation Gate
Present to the user:
- Verdict (APPROVE / COMMENT / REQUEST_CHANGES) and why
- The full review body and inline comments from the draft
- Anything noteworthy from pre-checks (scope, CI, missing spec link)
Wait for confirmation. The user may edit findings, downgrade/upgrade the
event, or decide not to post.
### Step 5: Post
On confirmation, post via the `/post-review` skill pattern (read
`.claude/skills/post-review/SKILL.md`): parse the draft, map inline comments
to diff lines, post with `mcp__github__create_pull_request_review`.
### Step 6: Report
- Posted review URL and event type
- If REQUEST_CHANGES: note that the 7-day response window from
CONTRIBUTING.md starts now — `/check-prs` tracks it, `/takeover-pr`
applies after it lapses
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!