Check PR
Analyze a pull request for review comments, status checks, and description completeness, then help address any issues found.
Inputs
- PR number (optional): If not provided, detect the PR for the current branch.
Instructions
1. Identify the PR
If a PR number was provided, use it. Otherwise, detect it:
gh pr view --json number -q .number
2. Fetch PR details
gh pr view <PR_NUMBER> --json title,body,state,reviews,comments,headRefName,statusCheckRollup
gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments
3. Wait for pending checks
Before analyzing, ensure all status checks have completed. If any checks are PENDING or IN_PROGRESS, poll every 30 seconds until all checks reach a terminal state (success or failure). This ensures that review bot comments (Greptile, linters, etc.) are available before analysis.
4. Analyze the PR
Once all checks are complete, evaluate these areas:
A. Status Checks
- Are all CI checks passing?
- If any are failing, identify which ones and the failure reason.
B. PR Description
- Is the description complete and follows team conventions?
- Are all required sections filled in?
- Are there TODOs or placeholders that need updating?
C. Review Comments
- Inline code review comments that need addressing
- Look for bot review comments (e.g. from
greptile-apps[bot], linters, etc.) - Human reviewer comments
D. General Comments
- Discussion comments on the PR
- Bot comments (Vercel deploy previews, etc.) — usually informational
5. Categorize issues
For each issue found, categorize as:
| Category | Meaning |
|---|---|
| Actionable | Code changes, test improvements, or fixes needed |
| Informational | Verification notes, questions, or FYIs that don't require changes |
| Already addressed | Issues that appear to be resolved by subsequent commits |
6. Report findings
Present a summary table:
| Area | Issue | Status | Action Needed |
|---|---|---|---|
| Status Checks | CI build failing | Failing | Fix type error in src/api.ts |
| Review | "Add null check" — @reviewer | Actionable | Add guard clause |
| Description | TODO placeholder in test plan | Actionable | Fill in test plan |
| Review | "Looks good" — @teammate | Informational | None |
7. Fix issues (if requested)
If there are actionable items:
- Switch to the PR's branch if not already on it.
- Ask the user if they want to fix the issues.
- If yes, make the fixes, commit, and push.
8. Resolve review threads
After addressing comments, resolve the corresponding review threads.
First, fetch unresolved thread IDs (paginate if needed — see the GraphQL reference):
gh api graphql -f query='
query($cursor: String) {
repository(owner: "OWNER", name: "REPO") {
pullRequest(number: PR_NUMBER) {
reviewThreads(first: 100, after: $cursor) {
pageInfo { hasNextPage endCursor }
nodes {
id
isResolved
comments(first: 1) {
nodes { body path }
}
}
}
}
}
}'
If hasNextPage is true, repeat with -f cursor=ENDCURSOR to get remaining threads.
Then resolve threads that have been addressed or are informational:
gh api graphql -f query='
mutation {
resolveReviewThread(input: {threadId: "THREAD_ID"}) {
thread { isResolved }
}
}'
Batch multiple resolutions into a single mutation using aliases (t1, t2, etc.).
9. Multiple PRs
If checking a chain of PRs, process them sequentially.
Output format
Summarize:
- PR title and current state
- Status checks summary (passing/failing/pending)
- Total issues found
- Actionable items with descriptions
- Items that can be ignored with reasons
- Recommended next steps