| name | fetch-unresolved-comments |
| description | Fetch unresolved PR review comments using GitHub GraphQL API, filtering out resolved and outdated feedback. |
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:
GITHUB_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 threadsby_file: Review threads grouped by file path (each thread contains multiple comments in a conversation)
Example JSON Output
{
"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"
}
]
}
]
}
}