Fetch Unresolved PR Review Comments
Uses GitHub's GraphQL API to fetch only unresolved review thread comments from a pull request.
When to Use
- •You need to get only unresolved review comments from a PR
- •You want to filter out already-resolved and outdated feedback
Instructions
- •
Parse PR information:
- •First check for environment variables:
- •If
PR_NUMBERandGITHUB_REPOSITORYare set, read them and parseGITHUB_REPOSITORYasowner/repoand usePR_NUMBERdirectly
- •If
- •Otherwise:
- •Use
gh pr view --json url -q '.url'to get the current branch's PR URL and parse to extract owner, repo, and PR number
- •Use
- •First check for environment variables:
- •
Run the Python script:
bashGITHUB_TOKEN=$(gh auth token) \ uv run python .claude/skills/fetch-unresolved-comments/fetch_unresolved_comments.py <owner> <repo> <pr_number> - •
Script options:
- •
--token <token>: Provide token explicitly (default: GITHUB_TOKEN or GH_TOKEN env var)
- •
- •
Parse the JSON output: The script always outputs JSON with:
- •
total: Total number of unresolved comments across all threads - •
by_file: Review threads grouped by file path (each thread contains multiple comments in a conversation)
- •
Example JSON Output
json
{
"total": 3,
"by_file": {
".github/workflows/resolve.yml": [
{
"thread_id": "PRRT_kwDOAL...",
"isOutdated": false,
"line": 40,
"startLine": null,
"diffHunk": "@@ -0,0 +1,245 @@\n+name: resolve...",
"comments": [
{
"id": 2437935275,
"body": "We can remove this once we get the key.",
"author": "harupy",
"createdAt": "2025-10-17T00:53:20Z"
},
{
"id": 2437935276,
"body": "Good catch, I'll update it.",
"author": "contributor",
"createdAt": "2025-10-17T01:10:15Z"
}
]
}
],
".gitignore": [
{
"thread_id": "PRRT_kwDOAL...",
"isOutdated": false,
"line": 133,
"startLine": null,
"diffHunk": "@@ -130,0 +133,2 @@\n+.claude/*",
"comments": [
{
"id": 2437935280,
"body": "Should we add this to .gitignore?",
"author": "reviewer",
"createdAt": "2025-10-17T01:15:42Z"
}
]
}
]
}
}