skills_all/fetch-unresolved-comments/SKILL.md
Fetch unresolved PR review comments using GitHub GraphQL API, filtering out resolved and outdated feedback.
npx skillsauth add activer007/ordinary-claude-skills fetch-unresolved-commentsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Uses GitHub's GraphQL API to fetch only unresolved review thread comments from a pull request.
Parse PR information:
PR_NUMBER and GITHUB_REPOSITORY are set, read them and parse GITHUB_REPOSITORY as owner/repo and use PR_NUMBER directlygh pr view --json url -q '.url' to get the current branch's PR URL and parse to extract owner, repo, and PR numberRun 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){
"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"
}
]
}
]
}
}
tools
Generate typed TypeScript SDKs for AI agents to interact with MCP servers. Converts verbose JSON-RPC curl commands to clean function calls (docs.createDocument() vs curl). Auto-detects MCP tools from server modules, generates TypeScript types and client methods, creates runnable example scripts. Use when: building MCP-enabled applications, need typed programmatic access to MCP tools, want Claude Code to manage apps via scripts, eliminating manual JSON-RPC curl commands, validating MCP inputs/outputs, or creating reusable agent automation.
testing
Generate structured task lists from specs or requirements. IMPORTANT: After completing ANY spec via ExitSpecMode, ALWAYS ask the user: "Would you like me to generate a task list for this spec?" Use when user confirms or explicitly requests task generation from a plan/spec/PRD.
tools
Create compelling story-format summaries using UltraThink to find the best narrative framing. Support multiple formats - 3-part narrative, n-length with inline links, abridged 5-line, or comprehensive via Foundry MCP. USE WHEN user says 'create story explanation', 'narrative summary', 'explain as a story', or wants content in Daniel's conversational first-person voice.
testing
Navigate through the original three-world shamanic technology. Deploy when soul retrieval, power animal guidance, or journey between realms emerges. Deeply respectful of Tungus, Buryat, Yakut, Evenki traditions. Use for consciousness navigation, NOT cultural appropriation.