Evidence-backed lookup for big-repo PR contributions. Local-only, zero-runtime, stdlib-first. Renamed from `prgenius` to avoid PyPI name collision with an unrelated 2024 GPT-3 PR-description tool. Distribution renamed again in v0.7.8: `prgenius-kb` → `prgenius-core` (aligned with `misakanet-core` convention).
Project description
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).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prgenius_core-1.2.0.tar.gz.
File metadata
- Download URL: prgenius_core-1.2.0.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0983cc65ea3ee19df46cdf42147a2a9375215b5d64ebb60f521eeb455e35460e
|
|
| MD5 |
2a95037a0c1f00572986ae70e23ef4b4
|
|
| BLAKE2b-256 |
02ebb7b4ff27b8c2d42c4a6566a13dd541cd7bd33e1551b0b3293861329b69b2
|
Provenance
The following attestation bundles were made for prgenius_core-1.2.0.tar.gz:
Publisher:
publish-pypi.yml on zsxh1990/pr-genius
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
prgenius_core-1.2.0.tar.gz -
Subject digest:
0983cc65ea3ee19df46cdf42147a2a9375215b5d64ebb60f521eeb455e35460e - Sigstore transparency entry: 2194250844
- Sigstore integration time:
-
Permalink:
zsxh1990/pr-genius@8adc3ab953bb654945a4b83e8686001f75a7d8f4 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/zsxh1990
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8adc3ab953bb654945a4b83e8686001f75a7d8f4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file prgenius_core-1.2.0-py3-none-any.whl.
File metadata
- Download URL: prgenius_core-1.2.0-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4972d5a565a2ac0635bad3698fc34eebda135e0cec968c8d0818a3d9c66fd4a7
|
|
| MD5 |
6208aaa4e2a0048e058621b39a6a1e0f
|
|
| BLAKE2b-256 |
d2c515e5cf9393e8c55dd686df867ad69617d25b57227654a4f1dc20e69e5b8d
|
Provenance
The following attestation bundles were made for prgenius_core-1.2.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on zsxh1990/pr-genius
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
prgenius_core-1.2.0-py3-none-any.whl -
Subject digest:
4972d5a565a2ac0635bad3698fc34eebda135e0cec968c8d0818a3d9c66fd4a7 - Sigstore transparency entry: 2194250851
- Sigstore integration time:
-
Permalink:
zsxh1990/pr-genius@8adc3ab953bb654945a4b83e8686001f75a7d8f4 -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/zsxh1990
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8adc3ab953bb654945a4b83e8686001f75a7d8f4 -
Trigger Event:
push
-
Statement type: