Trust scoring for GitHub contributors using graph-based ranking on contribution graphs
Project description
Good Egg
Trust scoring for GitHub PR authors using graph-based analysis of contribution history.
Why
AI has made mass pull requests trivial to generate, eroding the signal that a PR represents genuine investment. Good Egg is a data-driven answer: it mines a contributor's existing track record across the GitHub ecosystem instead of requiring manual vouching. See Methodology for the full approach.
Installation
pip install good-egg # Core package
pip install good-egg[mcp] # With MCP server support
GitHub Action
Add Good Egg to any pull request workflow:
name: Good Egg
on:
pull_request:
types: [opened, reopened, synchronize]
permissions:
pull-requests: write
jobs:
score:
runs-on: ubuntu-latest
steps:
- uses: 2ndSetAI/good-egg@v0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
Add checks: write to permissions if you enable check-run: true.
Example PR comment
See docs/github-action.md for inputs, outputs, and advanced configuration.
CLI
good-egg score <username> --repo <owner/repo>
good-egg score octocat --repo octocat/Hello-World --json
good-egg score octocat --repo octocat/Hello-World --verbose
good-egg cache-stats
good-egg cache-clear
good-egg --version
good-egg --help
Python Library
import asyncio
import os
from good_egg import score_pr_author
async def main() -> None:
result = await score_pr_author(
login="octocat",
repo_owner="octocat",
repo_name="Hello-World",
token=os.environ["GITHUB_TOKEN"],
)
print(f"{result.trust_level}: {result.normalized_score:.2f}")
asyncio.run(main())
See docs/library.md for full API documentation.
MCP Server
pip install good-egg[mcp]
GITHUB_TOKEN=ghp_... good-egg-mcp
Add to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"good-egg": {
"command": "good-egg-mcp",
"env": { "GITHUB_TOKEN": "ghp_your_token_here" }
}
}
}
See docs/mcp-server.md for tool reference.
How It Works
Good Egg builds a weighted contribution graph from a user's merged PRs and runs personalized graph scoring to produce a trust score relative to your project. See Methodology for details.
Trust Levels
| Level | Description |
|---|---|
| HIGH | Established contributor with a strong cross-project track record |
| MEDIUM | Some contribution history, but limited breadth or recency |
| LOW | Little to no prior contribution history -- review manually |
| UNKNOWN | Insufficient data to produce a meaningful score |
| BOT | Detected bot account (e.g. dependabot, renovate) |
Configuration
thresholds:
high_trust: 0.7
medium_trust: 0.3
graph_scoring:
alpha: 0.85
Environment variables with the GOOD_EGG_ prefix can override individual
settings. See docs/configuration.md for the full
reference and examples/.good-egg.yml for a
complete example.
Troubleshooting
See docs/troubleshooting.md for rate limits, required permissions, and common errors.
License
MIT
Egg image CC BY 2.0 (Flickr: renwest)
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 good_egg-0.1.2.tar.gz.
File metadata
- Download URL: good_egg-0.1.2.tar.gz
- Upload date:
- Size: 278.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9badb1b9eed1c29a2b1fd8c5477a95f807e15ea2d19a0186246b7194f9e1fdf0
|
|
| MD5 |
3a6593525ee37d0fe422c74b2b211667
|
|
| BLAKE2b-256 |
c20957983dab1f1c9e015a63b53c6ea521d057c3c2a25bbf14fa89b04fdca288
|
Provenance
The following attestation bundles were made for good_egg-0.1.2.tar.gz:
Publisher:
release.yml on 2ndSetAI/good-egg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
good_egg-0.1.2.tar.gz -
Subject digest:
9badb1b9eed1c29a2b1fd8c5477a95f807e15ea2d19a0186246b7194f9e1fdf0 - Sigstore transparency entry: 937380303
- Sigstore integration time:
-
Permalink:
2ndSetAI/good-egg@4d9541b8d055758174247b5bff5da928fb8af903 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/2ndSetAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d9541b8d055758174247b5bff5da928fb8af903 -
Trigger Event:
push
-
Statement type:
File details
Details for the file good_egg-0.1.2-py3-none-any.whl.
File metadata
- Download URL: good_egg-0.1.2-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88a2a647fc59d0198c7646b0445cf0dd8f03e99585c57d8a5992506e3908dedb
|
|
| MD5 |
ee4c7c114c2111aa5631a0f6bb776a33
|
|
| BLAKE2b-256 |
8def76c0ecfe8a6dc8a3c4294b5892382b938def0a958f2521bde6c2b985e697
|
Provenance
The following attestation bundles were made for good_egg-0.1.2-py3-none-any.whl:
Publisher:
release.yml on 2ndSetAI/good-egg
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
good_egg-0.1.2-py3-none-any.whl -
Subject digest:
88a2a647fc59d0198c7646b0445cf0dd8f03e99585c57d8a5992506e3908dedb - Sigstore transparency entry: 937380310
- Sigstore integration time:
-
Permalink:
2ndSetAI/good-egg@4d9541b8d055758174247b5bff5da928fb8af903 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/2ndSetAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d9541b8d055758174247b5bff5da928fb8af903 -
Trigger Event:
push
-
Statement type: