review-pr
Analyze a GitHub pull request including diff, comments, related issues, and local code context
Best use case
review-pr is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Analyze a GitHub pull request including diff, comments, related issues, and local code context
Teams using review-pr should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/review-pr/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How review-pr Compares
| Feature / Agent | review-pr | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Analyze a GitHub pull request including diff, comments, related issues, and local code context
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
Cursor vs Codex for AI Workflows
Compare Cursor and Codex for AI coding workflows, repository assistance, debugging, refactoring, and reusable developer skills.
SKILL.md Source
# Review Pull Request Parse `$ARGUMENTS` to extract the PR identifier and optional reviewer instructions: - Everything before the first `--` (or all of it, if there is no `--`) is the **PR identifier** (URL or number). Referred to as `PR_ID` below. - Everything after the first `--` is **reviewer instructions** — additional focus areas or context from the caller. If absent, there are no special instructions. Analyze the pull request: PR_ID ## Steps Run the following steps. Gather data in parallel where possible. ### 1. Set up worktree Resolve the PR number: ``` gh pr view PR_ID --json number ``` Use the number to form the worktree name `review-pr-<number>`. Invoke the `/create-worktree review-pr-<number> --pr <number>` skill to create an isolated worktree for this PR. Note the worktree path from the skill output — referred to as `WORKTREE` below. Verify that the cwd is now inside the worktree: ``` pwd ``` If `pwd` does not show `WORKTREE`, run `cd WORKTREE` and verify again. Stop with an error if the cwd cannot be set. Once confirmed, subsequent Bash calls will run inside the worktree automatically. ### 2. Fetch PR metadata and diff Use `gh` to collect all PR information in parallel: - `gh pr view PR_ID --json title,body,author,state,baseRefName,headRefName,number,url,comments,reviews,labels,milestone` - `gh pr diff PR_ID` ### 3. Check dependency changes in `pyproject.toml` If the PR diff (from step 2) touches `pyproject.toml`, run the automated dependency checker. First, fetch the latest `devel` from origin so the comparison is against the current state: ``` git fetch origin devel ``` Then run the script — always compare against `origin/devel` regardless of the PR's base branch: ``` python tools/check_dependency_changes.py origin/devel ``` The script finds the merge-base, simulates a three-way merge (like GitHub), and reports: - **Main dependencies** (`[project.dependencies]`) — displayed as WARNING (these affect every user) - **Optional dependencies** (`[project.optional-dependencies]`) — displayed as WARNING (these affect users of specific extras) - **Dev/group dependencies** (`[dependency-groups]`) — listed for awareness (no impact on end users) - **Merge conflicts** — if `pyproject.toml` would conflict, the script warns and falls back to showing the PR's intended changes Include the script output verbatim in the review. If the script exits with code 1 (changes detected), flag dependency changes in the review verdict. If it exits with code 2 (conflicts), flag that `pyproject.toml` needs conflict resolution. If `pyproject.toml` is not in the diff, skip this step. ### 4. Check CI lint and mypy status Use `gh pr checks PR_ID` to retrieve the CI check results. Look for checks matching `lint on all python versions / lint*` — these run mypy, ruff, flake8, bandit, and docstring checks across Python 3.9–3.13 (defined in `.github/workflows/lint.yml`). - Report the status of each lint check (pass/fail/pending). - If any lint check has failed, fetch its logs with `gh run view <run-id> --log-failed` to identify the specific errors (mypy type errors, ruff violations, etc.). - Include lint/mypy status in the final review verdict. A failing lint check should be flagged as a required fix. ### 5. Analyze related issues Extract any issue references from the PR body (e.g. `fixes #1234`, `closes #1234`, `#1234`). For each referenced issue, fetch it with: - `gh issue view <number> --json title,body,author,state,comments,labels` Understand the original problem being solved. ### 6. Analyze the code Using absolute paths under `WORKTREE`: - Read the changed files in full to understand context beyond the diff. - Look at callers/callees of modified functions. - Check if similar patterns exist elsewhere that should also be updated. - Review the coding style and code patterns to conform with @CLAUDE.md - If **reviewer instructions** were provided, pay special attention to the areas or concerns they describe during this analysis. - Mention only crucial finding to the user in the initial overview. Avoid code snippets except if critical bugs were found ### 7. Review test coverage #### 7a. Define the testing scope Based on the PR changes, identify what needs to be tested: - What are the distinct behaviors introduced or modified? - What are the edge cases and error paths? - What are the integration boundaries (e.g., does the change affect how components interact)? Produce a checklist of required test scenarios before evaluating existing tests. #### 7b. Evaluate existing tests against the checklist - Compare the PR's tests against the required scenarios checklist. Flag any gaps. - Flag any tests that verify things outside the PR's scope or test obvious/trivial behavior that adds no value. #### 7c. Verify tests are in the right modules - Search the test directory for where similar functionality is already tested (grep for related function names, class names, or feature keywords). - New tests should live alongside related existing tests, not in new files unless the PR introduces an entirely new module. - Flag tests placed in the wrong location. #### 7d. Check for duplication and over-testing - Look for tests that cover nearly identical cases and could be merged or parametrized with `@pytest.mark.parametrize`. - Look for repeated setup/assertion logic across tests that should be extracted into a helper or fixture. - If multiple tests differ only in a single variable (e.g., `True`/`False`, different type values), they must be parametrized into one test function. - Flag any copy-paste test code. Minimizing test code maintenance burden is a priority. #### 7e. Bug Fixes Should Have Regression Tests If the PR fixes a bug: - Is there a test that would have caught the bug before the fix? - Does the test verify the specific scenario from the bug report? ### 8. Check documentation coverage If the PR modifies public API (new parameters, changed behavior, new configuration options, new functions/classes exposed to users): - Search `WORKTREE/docs/website/docs/` for existing documentation covering the topic of the PR. - If the topic is already documented and the PR changes its behavior or adds new options, verify that the PR also updates the relevant doc pages. - If documentation updates are missing, flag this in the review as a required change. - If the topic is not documented at all, this is not a blocker — don't require docs for previously undocumented internals. ### 9. Produce the review Write a structured analysis covering: - **Summary**: What the PR does and why, referencing the linked issue. - **Changes**: Breakdown of changes should be concise, avoid code samples - **Dependency Changes**: If `pyproject.toml` was modified, include the warnings and listings from step 3. Main and optional dependency changes must appear as yellow WARNING blocks. Omit this section if no dependency changes were found. - **CI Lint & Mypy**: Status of lint checks across Python versions. If any failed, list the specific errors. - **Observations & Potential Issues**: Bugs, edge cases, missing error handling, performance concerns, memory issues, security issues, backward compatibility. - **Breaking Changes and Public API**: Follow the rules on breaking changes and Public API and report issues. - **Test Coverage**: Required scenarios checklist with pass/fail status, misplaced tests, duplication issues, parametrization opportunities. - **Documentation**: Whether doc updates are needed and if they were provided. - **Reviewer Instructions**: If reviewer instructions were provided, include a dedicated section addressing each point raised. If no instructions were provided, omit this section. - **Verdict**: Overall assessment.
Related Skills
find-source
No description provided.
worktree-make-dev
Set up a dev environment in an existing worktree (make dev + copy secrets)
worktree-from-issue
Create a git worktree with a new branch for implementing a fix or feature for a GitHub issue
switch-worktree
Switch the current session to work in an existing git worktree
release-notes
Generate release notes between two git tags with categorized PR summaries and author attribution
optimize-code
Analyze and optimize Python code performance in critical paths
implement-issue
Triage, plan, and implement a fix or feature for a GitHub issue end-to-end
dashboard
Use when reading, editing, or creating files in dlt/_workspace/helpers/dashboard/ or tests/workspace/helpers/dashboard/ or tests/e2e/
create-worktree
Create or reuse a git worktree for a pull request or branch so reviews and work happen in isolation
auto-write-test-rules
Use when adding or proposing a new test ONLY if the test rules are not present
auto-import-rules
Enforces dlt import conventions and ordering. Use when writing or modifying Python imports in dlt/ or tests/.
auto-docstring-rules
Enforces dlt docstring conventions. Use when writing or modifying docstrings, classes, or function signatures in Python files.