type: Schema Reference title: prgenius description: PR Genius — 提交前改进顾问,stdlib-first CLI + stdio MCP shell version: 1.1.1 created: 2026-07-04 updated: 2026-07-09 author: zsxh1990
prgenius
PR Genius — 提交前改进顾问。Local-only. Stdlib-first.
A pure-Python (zero hard deps) library + CLI for PR contribution quality analysis.
Install
pip install prgenius-core
Or run from a checkout:
cd prgenius
PYTHONPATH=src python3 -m prgenius --version
Important: PyPI package is the interface, not the data
The PyPI wheel ships only the Python code (prgenius/ package).
The knowledge base (profile markdown, case studies, OKF schemas) lives
in the GitHub repo at https://github.com/zsxh1990/pr-genius and is
not bundled into the wheel. To use prgenius-core after pip install,
point it at a checkout of the knowledge base:
git clone https://github.com/zsxh1990/pr-genius
prgenius-core --repo-root ./pr-genius profile get astral-sh/uv
If you cloned a specific tag/commit, the package's __version__ should
match (e.g. v0.7.7 ↔ prgenius-core==0.7.7).
Optional: MCP server
The MCP entry point (prgenius-core mcp serve) requires the mcp package:
pip install "prgenius-core[mcp]"
Quick Start
# 1) Schema reference
PYTHONPATH=src python3 -m prgenius schema info
# 2) Look up one repo
PYTHONPATH=src python3 -m prgenius profile get astral-sh/uv
# 3) List currently-open case studies
PYTHONPATH=src python3 -m prgenius case list --status=open
# 4) NDJSON dump of every case study (for benchmarks / agent context)
PYTHONPATH=src python3 -m prgenius dump > cases.ndjson
# 5) Run as stdio MCP server (for Cursor/Cline/Claude Code)
PYTHONPATH=src python3 -m prgenius mcp serve
Programmatic use
from prgenius.parser import profile_get, iter_case_studies, schema_info
prof = profile_get("path/to/repo_root", "astral-sh/uv")
print(prof["frontmatter"]["title"])
for case in iter_case_studies("path/to/repo_root"):
fm = case["frontmatter"]
if fm.get("final_status") == "open":
print(fm.get("pr_number"), fm.get("repo"))
What's exposed
| Command | Description |
|---|---|
prgenius analyze "title" --repo org/repo |
提交前改进建议 (三档风险) |
prgenius coach "title" --repo org/repo |
Agent PR Dojo (exit 0=pass, 1=fail) |
prgenius harvest org/repo 123 |
被拒 PR → anti-pattern/lesson draft |
prgenius profile get <org/name> |
仓库画像 |
prgenius case list [--status=...] |
PR Case Study 列表 |
prgenius schema info |
Schema 版本 |
prgenius dump |
NDJSON dump |
prgenius mcp serve |
Stdio MCP server |
MCP surface (when mcp is installed)
6 tools for local agents:
analyze_pr(title, repo, body, ...)— 结构化信号 + 建议 + 三档风险coach_pr(title, repo, body, ...)— pass/fail + checklistget_repo_profile(repo)— 仓库画像list_open_prs()— open PR 列表get_case_study(repo, pr_number)— PR 案例schema_info()— schema 版本
No network, no auth. Stdio only.
--repo-root flag
The MCP server defaults to a path computed from its install location
(<package>/../.. × 3 to reach the knowledge base). When that path is
wrong (editable install, venv, worktree, fork), pass --repo-root:
python3 -m prgenius --repo-root /path/to/big-repo-pr-knowledge mcp serve
Wiring into Cursor / Claude Code / Cline
These editors all read MCP server config from JSON. Point command at
python3 -m prgenius and args at mcp serve (add --repo-root if the
auto-detected path doesn't match your checkout). No env keys, no auth.
Claude Code (~/.claude/mcp.json or project-local .mcp.json):
{
"mcpServers": {
"pr-genius": {
"command": "python3",
"args": ["-m", "prgenius", "--repo-root", "/abs/path/to/big-repo-pr-knowledge", "mcp", "serve"]
}
}
}
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"pr-genius": {
"command": "python3 -m prgenius",
"args": ["--repo-root", "/abs/path/to/big-repo-pr-knowledge", "mcp", "serve"]
}
}
}
Cline (VS Code cline_mcp_settings.json):
{
"mcpServers": {
"pr-genius": {
"command": "python3",
"args": ["-m", "prgenius", "--repo-root", "/abs/path/to/big-repo-pr-knowledge", "mcp", "serve"],
"disabled": false
}
}
}
Replace /abs/path/to/big-repo-pr-knowledge with the actual checkout.
Omit --repo-root only if you installed prgenius from this exact
checkout (then the default path resolves correctly).
Schema we honor
- rounds v0.5.0 —
actionenum +deltaobject + case-levelclose_decision - rounds v0.7.0 — adds optional
verified_at,evidence_urls,confidenceto round + case level (BC over v0.5.0)
See ../ROUNDS_SCHEMA.md for the canonical schema.
Why this exists
The repo is meant to be human-readable (<org>-<repo>/index.md) AND
machine-readable via this package. People get the narrative; agents get
structured tool calls. Both views share one source of truth.
License
MIT (same as parent repo).
Release files for prgenius-core 1.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prgenius_core-1.8.0.tar.gz | 111.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prgenius_core-1.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 184.4 kB
Release files / prgenius_core-1.8.0.tar.gz
| Download URL | prgenius_core-1.8.0.tar.gz |
|---|---|
| Size | 111.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f30c57395ea2e6e03ecc5fca857062e776b04bf80b19da1bfaeb17a1731a4b7e
|
|
BLAKE2b-256 checksum How to use checksums |
d71e65904af6f49414399f4e6c7da3c3923101de140eaece9eca4c576da12972
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency logRelease files / prgenius_core-1.8.0-py3-none-any.whl
| Download URL | prgenius_core-1.8.0-py3-none-any.whl |
|---|---|
| Size | 72.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
48e5a72dc93a12af81b230397a72813fa4d127aada3b31c8b703dc0fc43102f6
|
|
BLAKE2b-256 checksum How to use checksums |
88468ac891ca0e0a39b8d1d27d64ee0fd1490d2cfaeb117b23711e7d78582d0e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 3, 2026.
Transparency log