/pr
Comprehensive PR/issue review - analyzes architecture, tests, identifies unrelated changes mixed in, drafts review comment or issue comment. Use when user asks to review a PR, check a PR, look at PR changes, or comment on an issue.
Claude Code
$ npx -y skills add umputun/cc-thingz --skill pr --agent claude-code
Codex
$ npx skills add umputun/cc-thingz --skill pr -a codex -y
Cursor
$ npx skills add umputun/cc-thingz --skill pr -a cursor -y
Gemini CLI
$ npx skills add umputun/cc-thingz --skill pr -a gemini-cli -y
GitHub Copilot
$ npx skills add umputun/cc-thingz --skill pr -a github-copilot -y
OpenCode
$ npx skills add umputun/cc-thingz --skill pr -a opencode -y
Windsurf
$ npx skills add umputun/cc-thingz --skill pr -a windsurf -y
SKILL.md
pr.SKILL.mdname: pr
description: Comprehensive PR/issue review - analyzes architecture, tests, identifies unrelated changes mixed in, drafts review comment or issue comment. Use when user asks to review a PR, check a PR, look at PR changes, or comment on an issue.
argument-hint: '<pr-or-issue-number>'
allowed-tools: Bash, Read, Grep, Glob, Write, Skill, AskUserQuestion, Task
PR Review Skill
Comprehensive pull request review that analyzes code quality, architecture, test coverage, and identifies scope creep (unrelated changes mixed into the PR).
Activation Triggers
- "review pr 123", "check pr 123", "look at pr 123"
- "review the pr", "what do you think about this pr"
- "review draft pr", "check the open pr"
- "comment on issue 42", "look at issue 42", "review issue 42"
Workflow
1. Fetch PR metadata + discussion history + merge status
1.5. Ask review mode: Full (default) or Quick
--- Full path ---
2. Setup worktree, launch subagent for deep analysis (read files, validate, architecture, scope creep, cleanup)
3. Present condensed findings from subagent, ask to proceed
4. Resolve open questions (if any)
5. Draft review comment
--- Quick path ---
Q1. Read diff inline, summarize what/why/size
Q2. Flag obvious issues from diff
Q3. Draft review comment
Phase 0: Detect PR vs Issue
Determine if the target is a PR or an issue. If a URL is provided, check if it contains `/pull/` or `/issues/`. If just a number, detect type:
gh pr view <number> --json number 2>/dev/null && echo "PR" || echo "ISSUE"
- **PR** → proceed with full PR review workflow (Phase 1 onwards)
- **Issue** → use the **Issue Comment Flow** below, skip all PR-specific phases
Issue Comment Flow
For issues, skip worktree/diff/architecture analysis. Focus on understanding the issue and drafting a helpful comment.
1. **Fetch issue details and discussion**:
gh issue view <number> --json title,body,author,state,labels,comments,createdAt
2. **Read the full discussion** - understand what was reported, what others said, whether there are linked PRs
3. **Investigate the codebase** if the issue references specific code, files, or behavior:
- search for relevant files, read them
- understand the reported problem in context
4. **Draft a comment** addressing the issue - could be: analysis of root cause, a proposed approach, questions for clarification, or acknowledgment with next steps
5. **Post as a regular comment** (not a review):
cat > /tmp/issue-comment.md << 'COMMENT_END'
<comment content>
COMMENT_END
gh issue comment <number> --body-file /tmp/issue-comment.md
Use AskUserQuestion before posting:
question: "Post this comment to issue #<number>?"
header: "Comment"
options:
- Post (post as shown above)
- Edit (tell me what to change)
- Cancel (discard draft)
After posting → done. No worktree cleanup needed for issues.
---
Phase 1: Fetch PR Metadata and Discussion History
Get PR number from $ARGUMENTS. If not provided, list recent PRs and ask user to select:
# if no PR number provided, list recent PRs
gh pr list --limit 5 --state all
# get PR details
gh pr view <number> --json title,body,additions,deletions,changedFiles,files,author,state,headRefName
# get all comments (PR comments and review comments)
gh pr view <number> --json comments,reviews
Capture:
- **title**: what the PR claims to do
- **body**: detailed description, linked issues
- **files**: list of changed files with additions/deletions per file
- **scope**: total additions/deletions, number of files
- **discussion history**: all comments and reviews with authors and timestamps
1.1 Analyze Discussion History
Before reviewing, understand what has already been discussed:
# get PR comments (general discussion)
gh api repos/{owner}/{repo}/issues/<number>/comments --jq '.[] | "[\(.user.login)] \(.body)"'
# get review comments (inline code comments)
gh api repos/{owner}/{repo}/pulls/<number>/comments --jq '.[] | "[\(.user.login) on \(.path):\(.line)] \(.body)"'
# get reviews with their state (approved, changes_requested, commented)
gh api repos/{owner}/{repo}/pulls/<number>/reviews --jq '.[] | "[\(.user.login) - \(.state)] \(.body)"'Summarize discussion:
- What issues were raised by reviewers?
- What was the PR author's response?
- Are there unresolved threads or pending questions?
- What has already been addressed vs still open?
**Check automated reviews (Copilot, etc.)**: Read any automated review comments - they can have valuable findings. If Copilot or other bots flagged real issues, verify them and include in your review if valid. Don't dismiss automated feedback just because it's automated.
**CRITICAL - Check for inline suggestions:**
# get inline review comments (where actual suggestions live)
gh api repos/{owner}/{repo}/pulls/<number>/comments --jq '.[] | "[\(.user.login) on \(.path):\(.line // .original_line)]\n\(.body)\n---"'Look specifically for:
- **Suggested changes** - code blocks with `suggestion` tags containing proposed fixes
- **Inline comments** - specific line-by-line feedback
- **Security/bug warnings** - automated tools often catch real issues
The review body is often just a summary. The **inline comments** are where the real feedback is.
**Important**: Do not re-raise issues that were already discussed and resolved. Focus on new findings or unaddressed concerns.
1.2 Check Merge Status
Check if PR is mergeable and CI status:
gh pr view <number> --json mergeable,mergeStateStatus,statusCheckRollup
Report:
- **mergeable**: MERGEABLE (no conflicts) or CONFLICTING (needs rebase)
- **mergeStateStatus**: CLEAN (ready), BLOCKED (checks failing), BEHIND (needs update)
- **statusCheckRollup**: CI check results (build, tests, lint)
If PR has conflicts or is behind, note this early - it may explain "deletions" in the diff that are actually just missing commits from the base branch.
Print summary:
PR #
Read more
name: pr description: Comprehensive PR/issue review - analyzes architecture, tests, identifies unrelated changes mixed in, drafts review comment or issue comment. Use when user asks to review a PR, check a PR, look at PR changes, or comment on an issue. argument-hint: '<pr-or-issue-number>' allowed-tools: Bash, Read, Grep, Glob, Write, Skill, AskUserQuestion, Task
PR Review Skill
Comprehensive pull request review that analyzes code quality, architecture, test coverage, and identifies scope creep (unrelated changes mixed into the PR).
Activation Triggers
- "review pr 123", "check pr 123", "look at pr 123"
- "review the pr", "what do you think about this pr"
- "review draft pr", "check the open pr"
- "comment on issue 42", "look at issue 42", "review issue 42"
Workflow
1. Fetch PR metadata + discussion history + merge status 1.5. Ask review mode: Full (default) or Quick --- Full path --- 2. Setup worktree, launch subagent for deep analysis (read files, validate, architecture, scope creep, cleanup) 3. Present condensed findings from subagent, ask to proceed 4. Resolve open questions (if any) 5. Draft review comment --- Quick path --- Q1. Read diff inline, summarize what/why/size Q2. Flag obvious issues from diff Q3. Draft review comment
Phase 0: Detect PR vs Issue
Determine if the target is a PR or an issue. If a URL is provided, check if it contains `/pull/` or `/issues/`. If just a number, detect type:
gh pr view <number> --json number 2>/dev/null && echo "PR" || echo "ISSUE"
- **PR** → proceed with full PR review workflow (Phase 1 onwards)
- **Issue** → use the **Issue Comment Flow** below, skip all PR-specific phases
Issue Comment Flow
For issues, skip worktree/diff/architecture analysis. Focus on understanding the issue and drafting a helpful comment.
1. **Fetch issue details and discussion**:
gh issue view <number> --json title,body,author,state,labels,comments,createdAt
2. **Read the full discussion** - understand what was reported, what others said, whether there are linked PRs
3. **Investigate the codebase** if the issue references specific code, files, or behavior:
- search for relevant files, read them
- understand the reported problem in context
4. **Draft a comment** addressing the issue - could be: analysis of root cause, a proposed approach, questions for clarification, or acknowledgment with next steps
5. **Post as a regular comment** (not a review):
cat > /tmp/issue-comment.md << 'COMMENT_END' <comment content> COMMENT_END gh issue comment <number> --body-file /tmp/issue-comment.md
Use AskUserQuestion before posting:
question: "Post this comment to issue #<number>?" header: "Comment" options: - Post (post as shown above) - Edit (tell me what to change) - Cancel (discard draft)
After posting → done. No worktree cleanup needed for issues.
---
Phase 1: Fetch PR Metadata and Discussion History
Get PR number from $ARGUMENTS. If not provided, list recent PRs and ask user to select:
# if no PR number provided, list recent PRs gh pr list --limit 5 --state all # get PR details gh pr view <number> --json title,body,additions,deletions,changedFiles,files,author,state,headRefName # get all comments (PR comments and review comments) gh pr view <number> --json comments,reviews
Capture:
- **title**: what the PR claims to do
- **body**: detailed description, linked issues
- **files**: list of changed files with additions/deletions per file
- **scope**: total additions/deletions, number of files
- **discussion history**: all comments and reviews with authors and timestamps
1.1 Analyze Discussion History
Before reviewing, understand what has already been discussed:
# get PR comments (general discussion)
gh api repos/{owner}/{repo}/issues/<number>/comments --jq '.[] | "[\(.user.login)] \(.body)"'
# get review comments (inline code comments)
gh api repos/{owner}/{repo}/pulls/<number>/comments --jq '.[] | "[\(.user.login) on \(.path):\(.line)] \(.body)"'
# get reviews with their state (approved, changes_requested, commented)
gh api repos/{owner}/{repo}/pulls/<number>/reviews --jq '.[] | "[\(.user.login) - \(.state)] \(.body)"'Summarize discussion:
- What issues were raised by reviewers?
- What was the PR author's response?
- Are there unresolved threads or pending questions?
- What has already been addressed vs still open?
**Check automated reviews (Copilot, etc.)**: Read any automated review comments - they can have valuable findings. If Copilot or other bots flagged real issues, verify them and include in your review if valid. Don't dismiss automated feedback just because it's automated.
**CRITICAL - Check for inline suggestions:**
# get inline review comments (where actual suggestions live)
gh api repos/{owner}/{repo}/pulls/<number>/comments --jq '.[] | "[\(.user.login) on \(.path):\(.line // .original_line)]\n\(.body)\n---"'Look specifically for:
- **Suggested changes** - code blocks with `suggestion` tags containing proposed fixes
- **Inline comments** - specific line-by-line feedback
- **Security/bug warnings** - automated tools often catch real issues
The review body is often just a summary. The **inline comments** are where the real feedback is.
**Important**: Do not re-raise issues that were already discussed and resolved. Focus on new findings or unaddressed concerns.
1.2 Check Merge Status
Check if PR is mergeable and CI status:
gh pr view <number> --json mergeable,mergeStateStatus,statusCheckRollup
Report:
- **mergeable**: MERGEABLE (no conflicts) or CONFLICTING (needs rebase)
- **mergeStateStatus**: CLEAN (ready), BLOCKED (checks failing), BEHIND (needs update)
- **statusCheckRollup**: CI check results (build, tests, lint)
If PR has conflicts or is behind, note this early - it may explain "deletions" in the diff that are actually just missing commits from the base branch.
Print summary:
PR #
Things to make Claude Code even better — hooks, skills, and commands, organized as a marketplace of independent plugins. This is an unapologetically opinionated set.
Other skills on cc-thingz.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about pr.
- Which coding agents can use pr?
- pr installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

