zsxh1990/pr-genius

插件Plugin 原生Native ⭐ 3 MIT 编程Coding

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.

或使用命令行安装(适合开发者)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?"

CI PyPI Python License Glama score DSH Plugin


🎯 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 latest v1.x.x release (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 release
  • ghcr.io/zsxh1990/pr-genius:1.7.2 — Specific version
  • ghcr.io/zsxh1990/pr-genius:1.7 — Minor version
  • ghcr.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 for analyze_pr, coach_pr, triage_pr): The PR title, e.g. "fix: timeout in connection pool"
  • repo (required for most tools): Repository in owner/name format, e.g. "encode/httpx"
  • pr_description (optional): Additional PR body text for deeper analysis
  • query (required for search_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

  1. docs/index.md — file map
  2. AGENT_GUIDELINES_SCHEMA.md — agent_guidelines schema
  3. ROUNDS_SCHEMA.md — rounds schema
  4. 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}
}
上一个 Prev dsh-dev-sandbox 下一个 Next dsh-md-annotator