Resolve PR Feedback
Meta-skill that checks a PR for unresolved automated review feedback and invokes the appropriate resolver skills.
WHEN TO USE THIS SKILL
USE THIS SKILL when ANY of the following occur:
- User says "resolve PR feedback" / "check PR comments" / "address review comments"
- User wants to handle all automated review feedback on a PR
- After PR creation to ensure all automated reviewers are addressed
- As part of the SDLC workflow before finalizing a PR
Supported Reviewers
| Reviewer | Author Pattern | Resolver Skill |
|---|---|---|
| GitHub Copilot | Copilot |
fx-dev:copilot-feedback-resolver |
| CodeRabbit | coderabbitai[bot] |
fx-dev:rabbit-feedback-resolver |
Prerequisites
CRITICAL: Load the fx-dev:github skill FIRST before running any GitHub API operations.
Core Workflow
1. Determine PR Number
If not provided, get from current branch:
gh pr view --json number -q '.number'
2. Query All Unresolved Review Threads
IMPORTANT: Use inline values, NOT $variable syntax. The $ character causes shell escaping issues.
# Replace OWNER, REPO, PR_NUMBER with actual values
gh api graphql -f query='
query {
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: PR_NUMBER) {
reviewThreads(first: 100) {
nodes {
id
isResolved
comments(first: 1) {
nodes {
author { login }
}
}
}
}
}
}
}'
3. Identify Unresolved Feedback by Source
Parse the response and categorize unresolved threads by author:
- Copilot threads: author login is
Copilot - CodeRabbit threads: author login contains
coderabbitai
4. Invoke Appropriate Resolver Skills
If Copilot threads exist:
Skill tool: skill="fx-dev:copilot-feedback-resolver"
If CodeRabbit threads exist:
Skill tool: skill="fx-dev:rabbit-feedback-resolver"
If both exist: Invoke both skills sequentially (Copilot first, then CodeRabbit).
5. Verify All Resolved
After invoking resolver skills, re-query to confirm all threads are resolved:
# Replace OWNER, REPO, PR_NUMBER with actual values
gh api graphql -f query='
query {
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: PR_NUMBER) {
reviewThreads(first: 100) {
nodes {
isResolved
comments(first: 1) {
nodes {
author { login }
}
}
}
}
}
}
}' | jq '[.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false)] | length'
If unresolved threads remain, report which reviewers still have open feedback.
Output Format
## PR #123 Feedback Summary
### Detection
- Copilot: 2 unresolved threads found
- CodeRabbit: 3 unresolved threads found
### Resolution
- Invoked fx-dev:copilot-feedback-resolver
- Invoked fx-dev:rabbit-feedback-resolver
### Final Status
- All automated review threads resolved
Success Criteria
- All unresolved automated review threads identified
- Appropriate resolver skill(s) invoked
- Final verification confirms all threads resolved
- Summary output provided
Error Handling
- If no PR found: Ask user for PR number
- If resolver skill fails: Report which reviewer's feedback remains unresolved
- If API errors: Retry with proper auth context