| type | Knowledge Bundle |
|---|---|
| title | PR Genius — Pre-submission PR Advisor |
| description | Evidence-backed PR contribution advisor for large open-source projects |
| version | 1.4.0 |
| created | 2026-07-01 |
| updated | 2026-07-22 |
| author | zsxh1990 |
| conforms_to | OKF v0.1 (Sudhakaran88/okf-conformance) + agent_guidelines extension |
mcp-name: io.github.zsxh1990/pr-genius
1355 loaded patterns across 61 repos. 100% quality pass rate. Clone → paste MCP config → ask "Should I open this PR to encode/httpx?"
PR Genius is not a PR dashboard. It's an Outbound PR CRM for professional OSS contributors and AI agents:
Manage PRs you've submitted to other repos — when to fix CI, rebase, wait, ping, or abandon.
| Capability | gh CLI |
PR Genius |
|---|---|---|
| Cross-repo PR list | ✅ | ✅ |
| Status classification | ❌ | ✅ (9 states) |
| Stale detection | ❌ | ✅ |
| Action suggestions | ❌ | ✅ |
| Repo-specific policy | ❌ | ✅ |
| Snapshot & transitions | ❌ | ✅ |
Status heartbeat runs daily via cron, auto-detecting:
- 🔴
NEEDS_REBASE/CI_FAILING— fix immediately - 🟡
STALE_REVIEW— ping after threshold - 🟡
STALE_NO_REVIEW— consider abandoning - 🟢
CLEAN/WAITING— continue waiting
PR Genius doesn't write PRs for you. It knows which PRs get closed.
| Capability | LLM directly | Scraper Agent | PR Genius |
|---|---|---|---|
| Knowledge source | Training data | Real-time scrape | 1355 structured patterns |
| Repo understanding | Generic | Surface data (stars) | 17-field agent_guidelines |
| Failure patterns | Unknown | Unknown | 752 anti-patterns |
| Success patterns | Unknown | Unknown | 703 success patterns |
| Maintainer preference | Guess | Recent PRs | Structured policy files |
| Merge probability | Can't estimate | Can't estimate | Based on repo merge rate + signals |
Real cases (PR Genius helped avoid these rejections):
| PR | Repo | What happened | PR Genius would have flagged |
|---|---|---|---|
| #491 | MisakaNet | "Destructive README rewrite" — closed | breaking_change_no_compat anti-pattern |
| #47434 | huggingface/transformers | "We'll handle internally" — closed | maintainer_internal_handling anti-pattern |
| #10393 | awesome-mcp-servers | Missing Glama badge — auto-flagged | awesome-mcp-servers-glama-badge-required anti-pattern |
| #282 | punkpeye/fastmcp | +271 lines, first PR — closed without review | fastmcp-282-too-large anti-pattern |
| #2902 | soxoj/maigret | CI failure (tag dev not recognized) — fixed, merged |
maigret-tag-validation pattern |
pip install prgenius-core
# Analyze PR
python3 -m prgenius analyze "feat: add feature" --repo org/repo --body "Fixes #123"
# Coach (pass/fail)
python3 -m prgenius coach "feat: add feature" --repo org/repo
# Triage (policy check)
python3 -m prgenius triage "docs: typo" --repo org/repo --diff-stat "docs/faq.md | 3 ++-"
# Status heartbeat (outbound PR monitoring)
python3 -m prgenius status --author zsxh1990
python3 -m prgenius status --author zsxh1990 --format json --save-snapshot
# Profile writeback suggestions (dry-run)
python3 -m prgenius profile writeback --author zsxh1990Use PR Genius as a GitHub Action in any repo:
# .github/workflows/pr-genius.yml
name: PR Genius Check
on:
pull_request:
types: [opened, synchronize]
jobs:
pr-genius:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: zsxh1990/pr-genius/.github/actions/pr-genius-check@main
id: pr-genius
with:
title: ${{ github.event.pull_request.title }}
repo: ${{ github.repository }}
body: ${{ github.event.pull_request.body }}
- name: Comment on PR
if: always()
uses: actions/github-script@v7
with:
script: |
const tier = '${{ steps.pr-genius.outputs.tier }}';
const emoji = tier === 'high_risk' ? '🔴' : tier === 'medium_risk' ? '🟡' : '🟢';
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: `## ${emoji} PR Genius: ${tier}`
});{
"mcpServers": {
"pr-genius": {
"command": "python",
"args": ["-m", "prgenius", "mcp", "serve"]
}
}
}Docker: docker run --rm -i ghcr.io/zsxh1990/pr-genius:1.3.0
| Tool | Purpose | Required Args |
|---|---|---|
analyze_pr |
Merge probability + optimization path + 3-tier risk | title, repo |
coach_pr |
Go/no-go decision (pass/fail) | title, repo |
triage_pr |
Maintainer policy check (9 rules) | title, repo |
get_repo_profile |
Repo profile (17 fields) | repo |
list_open_prs |
Open PR list | repo |
get_case_study |
PR case study details | case_id |
search_patterns |
Anti-pattern/success-pattern search | query |
schema_info |
OKF schema versions | (none) |
title(required foranalyze_pr,coach_pr,triage_pr): The PR title, e.g."fix: timeout in connection pool"repo(required for most tools): Repository inowner/nameformat, e.g."encode/httpx"pr_description(optional): Additional PR body text for deeper analysisquery(required forsearch_patterns): Search keywords, e.g."connection timeout"
| Dimension | Count |
|---|---|
| Repo profiles | 61 |
| Case studies | 50+ |
| Success patterns | 687 (431 .md + 256 .json) |
| Anti-patterns | 668 (561 .md + 107 .json) |
| Total patterns | 1355 (all loaded) |
| Quality pass rate | 100% (994/994 markdown ≥75分) |
| Covered repos | 35+ (react, kubernetes, rust, uv, pydantic, etc.) |
| 规模 | Success | Anti | 总计 |
|---|---|---|---|
| 大仓 (>10k ⭐) | 208 | 205 | 413 |
| 中仓 (1k-10k ⭐) | 169 | 88 | 257 |
| 小仓 (<1k ⭐) | 169 | 88 | 257 |
| 通用 | 203 | 414 | 617 |
| 其他 (特定仓库) | 312 | 260 | 572 |
- docs/index.md — file map
- AGENT_GUIDELINES_SCHEMA.md — agent_guidelines schema
- ROUNDS_SCHEMA.md — rounds schema
- BLACKLIST.md — repos we don't track
See CONTRIBUTING.md. AI-assisted PRs welcome.
中文版 README:README.zh-CN.md
@misc{pr-genius-2026,
title = {PR Genius — Evidence-backed PR Contribution Advisor},
author = {zsxh1990},
year = {2026},
url = {https://github.com/zsxh1990/pr-genius}
}