zsxh1990/pr-genius
PR Genius — 提交前改进顾问 + 大型开源项目 PR 知识库
项目介绍Project Overview
PR Genius 是面向开源贡献者与 AI 代理的出站 PR 顾问知识包,基于 61 个仓库、1355 条成功/反模式提供合并概率、风险分级、策略检查与状态心跳建议。提交 PR 前判断是否该开、如何优化,或提交后决定修复 CI、变基、等待、催促还是放弃时使用。它不代写 PR,且模式覆盖仓库有限,未覆盖仓库的建议可能不适用。
PR Genius is an outbound PR advisor knowledge bundle for OSS contributors and AI agents. Using 1,355 success and anti-patterns across 61 repos, it provides merge probability, risk grading, policy checks, and status heartbeat actions. Use it before opening a PR to assess fit and optimization, or after submission to decide whether to fix CI, rebase, wait, ping, or abandon. It does not write PRs, and guidance may be weak for repos outside its tracked set.
请帮我了解并安装插件:【pr-genius】【https://github.com/zsxh1990/pr-genius】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:zsxh1990/pr-genius
把 zsxh1990/pr-genius 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
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
PR Genius — The advisor that knows which PRs get closed
1355 loaded patterns across 61 repos. 100% quality pass rate. Clone → paste MCP config → ask "Should I open this PR to encode/httpx?"
🎯 What is PR Genius?
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
🛡️ Why PR Genius?
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 |
🚀 Quick Start
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 zsxh1990
🤖 GitHub Action
Use 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@v1
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}`
});
Version Auto-Update
@v1— Always points to the latestv1.x.xrelease (recommended)@v1.7.1— Pinned to specific version (for reproducibility)@main— Latest development version (not recommended for production)
The v1 tag is automatically updated when a new version is published to PyPI.
Docker Image (Alternative)
Use PR Genius as a Docker container via GitHub Container Registry:
# .github/workflows/pr-genius-docker.yml
name: PR Genius Check (Docker)
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
pr-genius:
runs-on: ubuntu-latest
steps:
- name: Run PR Genius
uses: docker://ghcr.io/zsxh1990/pr-genius:latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: coach "${{ github.event.pull_request.title }}" --repo ${{ github.repository }} --format json
Docker Image Tags:
ghcr.io/zsxh1990/pr-genius:latest— Latest releaseghcr.io/zsxh1990/pr-genius:1.7.2— Specific versionghcr.io/zsxh1990/pr-genius:1.7— Minor versionghcr.io/zsxh1990/pr-genius:1— Major version (auto-updated)
Auto-update with Dependabot:
# .github/dependabot.yml
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
🤖 MCP Configuration
{
"mcpServers": {
"pr-genius": {
"command": "python",
"args": ["-m", "prgenius", "mcp", "serve"]
}
}
}
Docker: docker run --rm -i ghcr.io/zsxh1990/pr-genius:1.3.0
8 MCP Tools
| 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) |
Tool Parameter Notes
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"
📊 Data Scale
| 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 |
🤖 Robots / Agents
- docs/index.md — file map
- AGENT_GUIDELINES_SCHEMA.md — agent_guidelines schema
- ROUNDS_SCHEMA.md — rounds schema
- BLACKLIST.md — repos we don't track
📖 Contributing
See CONTRIBUTING.md. AI-assisted PRs welcome.
🤝 Community
中文文档
中文版 README:README.zh-CN.md
Citation
@misc{pr-genius-2026,
title = {PR Genius — Evidence-backed PR Contribution Advisor},
author = {zsxh1990},
year = {2026},
url = {https://github.com/zsxh1990/pr-genius}
}
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase