Fetches and filters human review comments from recent merged PRs in GitHub repos using Python script and gh CLI. Outputs clean JSON of comments, reviewers, and PR details for team coding rules analysis.
From teamsnpx claudepluginhub openshift-eng/ai-helpers --plugin teamsThis skill uses the workspace's default tool permissions.
fetch_pr_comments.pyGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
This skill runs a Python script that fetches human review comments from recent merged PRs in a given GitHub repository. It handles all GitHub API calls, bot filtering, noise removal, rate limiting, and pagination, returning clean JSON output for AI analysis.
Use this skill as Step 2-3 of the /teams:coderabbit-rules-from-pr-reviews command to collect review comments. The script replaces manual gh api calls with a single Python invocation.
gh): Must be installed and authenticated.plugins/teams/skills/coderabbit-rules-from-pr-reviews/fetch_pr_comments.py
# Default: 30 most recent merged PRs
python3 plugins/teams/skills/coderabbit-rules-from-pr-reviews/fetch_pr_comments.py openshift/origin
# Custom count
python3 plugins/teams/skills/coderabbit-rules-from-pr-reviews/fetch_pr_comments.py openshift/origin --count 50
# Full URL
python3 plugins/teams/skills/coderabbit-rules-from-pr-reviews/fetch_pr_comments.py https://github.com/openshift/origin
owner/repo or full GitHub URLgh pr list/pulls/{number}/comments)/issues/{number}/comments)[bot] or matching known bots (coderabbitai, openshift-ci, openshift-bot, openshift-merge-robot, codecov, dependabot, renovate, k8s-ci-robot, etc.)//lgtm, /approve, /hold, etc.JSON to stdout, progress to stderr:
{
"repo": "openshift/origin",
"prs_analyzed": 30,
"total_comments": 142,
"unique_reviewers": 18,
"reviewers": ["alice", "bob", "carol"],
"prs": [
{
"number": 29500,
"title": "Fix flaky test in e2e suite",
"author": "dave",
"url": "https://github.com/openshift/origin/pull/29500",
"merged_at": "2026-03-25T14:30:00Z"
}
],
"comments": [
{
"pr": 29500,
"user": "alice",
"body": "This error should be wrapped with fmt.Errorf to preserve context",
"path": "pkg/cmd/server/start.go",
"type": "review",
"pr_title": "Fix flaky test in e2e suite",
"pr_author": "dave"
},
{
"pr": 29500,
"user": "bob",
"body": "We should add a unit test for this edge case",
"path": "",
"type": "issue",
"pr_title": "Fix flaky test in e2e suite",
"pr_author": "dave"
}
]
}
repo: The normalized owner/repo stringprs_analyzed: Number of merged PRs fetchedtotal_comments: Number of human review comments after filteringunique_reviewers: Count of distinct human reviewersreviewers: Sorted list of reviewer loginsprs[].number: PR numberprs[].title: PR titleprs[].author: PR author loginprs[].url: PR URLprs[].merged_at: Merge timestampcomments[].pr: PR number the comment belongs tocomments[].user: Reviewer logincomments[].body: Full comment textcomments[].path: File path (for inline review comments; empty for discussion comments)comments[].type: "review" for inline code comments, "issue" for general discussioncomments[].pr_title: Title of the PRcomments[].pr_author: Author of the PR