Fix PR review comments by implementing the requested changes.
Usage
/pr-review <PR_URL> # Review PR by URL (expects full GitHub URL)
/pr-review <PR_NUMBER> # Review PR by number (expects number, e.g., 123)
/pr-review # Auto-detect PR from current branch
📋 Argument Handling
The command accepts the PR identifier from $ARGUMENTS:
- PR URL: Full GitHub PR URL (e.g.,
https://github.com/owner/repo/pull/123) - PR Number: Just the PR number (e.g.,
123) - No Arguments: Auto-detect the PR associated with the current Git branch
If $ARGUMENTS is provided, use it as the PR identifier. Otherwise, auto-detect the current branch's PR using:
gh pr view --json number,url -q '.number'
This extracts the PR number from the current branch's open PR for use in subsequent commands.
If no open PR is found for the current branch, show this error:
Error: No open pull request found for the current branch.
To review a specific PR:
/pr-review <PR_URL>
/pr-review <PR_NUMBER>
Or create a PR first:
gh pr create
Process
- Parse
$ARGUMENTSto determine PR identifier (URL, number, or auto-detect) - Fetch PR details, review threads, issue comments, and authoritative thread-resolution state using
gh - Classify each comment as actionable, informational, disputed/ambiguous, or resolved; ask before changing disputed or ambiguous requests
- For each actionable comment, record the comment ID, planned change, and verification command
- Implement the approved fixes
- Run focused tests, then the relevant broader checks
- Recheck the comment-to-change list and confirm every actionable thread is resolved or explicitly deferred
- Commit the changes
Available Scripts
Extract PR Comments
The extract-pr-comments.js script processes GitHub PR review comments and issue comments to create actionable TODO lists.
# Usage
node $SKILL_PATH/scripts/extract-pr-comments.js <review-comments-file> <issue-comments-file> <threads-file> [output-file]
# Example
gh api graphql \
-f owner=OWNER -f name=REPO -F number=4972 \
-f query='query($owner:String!, $name:String!, $number:Int!) { repository(owner:$owner, name:$name) { pullRequest(number:$number) { reviewThreads(first:100) { nodes { isResolved comments(first:100) { nodes { databaseId } } } } } } }' \
> pr-4972-threads.json
node $SKILL_PATH/scripts/extract-pr-comments.js \
pr-4972-review-comments-raw.json \
pr-4972-issue-comments-raw.json \
pr-4972-threads.json \
pr-4972-comments.ndjson
What it does:
- Requires a threads file of GitHub review threads and skips a review comment only when its thread has
isResolved: true - Does not treat a reply as resolution; an unanswered thread stays actionable
- Classifies comments by severity (critical, high, medium, low)
- Categorizes comments (security, performance, maintainability, etc.)
- Creates 3 output files:
.ndjson- Structured comment data-todo.md- Prioritized TODO list-summary.md- Analysis summary with emojis
Severity classification:
- 🔴 Critical: security, vulnerability, exploit
- 🟠 High: bug, error, breaking, crash, fail
- 🟡 Medium: performance, improvement, refactor, optimize
- 🟢 Low: everything else
Categories:
- 🔒 Security
- ⚡ Performance
- 🔧 Maintainability
- ♿ Accessibility
- 🧪 Testing
- 📚 Documentation
- 🏷️ Typing
- 🎨 Style
- ✨ Code Quality
Examples
# Fix review comments for a PR using URL
/pr-review https://github.com/owner/repo/pull/123
# Fix review comments using PR number
/pr-review 123
# Auto-detect PR from current branch
/pr-review
# After extracting comments with the script, work through the TODO list
# The TODO list is ordered by priority: Critical → High → Medium → Low