How We Score

Every project is evaluated across 8 weighted signals pulled from the GitHub GraphQL API. The signals are combined into a single score from 0 to 100, then mapped to a human-readable verdict.

Signals

Last Commit 25%

How recently the default branch received a commit. This is the strongest indicator that someone is actively working on the project.

RecencyScore
Within 7 days100
Within 30 days80
Within 90 days60
Within 180 days40
Within 1 year20
Over 1 year ago0

Source: defaultBranchRef.target.history

Last Release 15%

When the most recent release or tag was published. Regular releases indicate a project that ships to users, not just commits to main.

RecencyScore
Within 30 days100
Within 90 days75
Within 180 days50
Within 1 year25
Over 1 year ago0

Source: releases(last: 1)

PR Responsiveness 15%

Median age of recently updated pull requests. Fast PR turnaround means the maintainers are engaged and the contribution workflow is healthy.

Median PR AgeScore
Under 3 days100
Under 7 days75
Under 30 days50
Under 90 days25
Over 90 days0

Source: pullRequests(first: 50, orderBy: UPDATED_AT)

Issue Staleness 10%

Median age of the last comment on open issues. Low staleness means maintainers are triaging and responding to bug reports and feature requests.

Median Comment AgeScore
Under 7 days100
Under 30 days75
Under 90 days50
Under 180 days25
Over 180 days0

Source: issues(first: 50, states: OPEN, orderBy: UPDATED_AT)

Recent Contributors 10%

Number of unique authors who committed in the last 90 days. More contributors means the project isn't dependent on a single person's availability.

Contributors (90d)Score
10 or more100
5 – 975
2 – 450
125
00

Source: defaultBranchRef.target.history (since: 90d ago)

Bus Factor 10%

Percentage of commits from the top contributor. If one person wrote 95% of the code, the project is at risk if they step away.

Top Contributor %Score
Under 50%100
50% – 70%75
70% – 85%50
85% – 95%25
Over 95%0

Source: Calculated from commit author distribution

Stars 5%

GitHub star count as a proxy for community interest. Low weight because stars are a vanity metric — popular ≠ maintained.

StarsScore
1,000+100
500 – 99975
100 – 49950
10 – 9925
Under 100

Source: stargazerCount

CI/CD Activity 5%

Multi-factor assessment of CI/CD health. Checks for workflow file presence, recency of last run, run frequency in the last 30 days, and success rate of recent runs.

FactorMax Points
Workflows present30
Last run within 7 days30
30+ runs/month20
90%+ success rate20

Source: object(expression: ".github/workflows") + REST /actions/runs

Verdicts

The weighted score maps to one of five verdicts:

🟢
Healthy
80 – 100
🟡
Maintained
60 – 79
🟠
Declining
40 – 59
🔴
At Risk
20 – 39
Abandoned
0 – 19

Overrides

Archived repositories are automatically scored 0 with the verdict "Abandoned" regardless of other signals. If the repository owner has explicitly archived it, the project is no longer maintained.

Caching

Results are cached to avoid excessive API calls and to keep responses fast. Cache TTLs depend on your API tier:

TierFresh TTLStale TTL
Free (no key)24 hours48 hours
Free key24 hours48 hours
Pro key1 hour2 hours
Enterprise key15 minutes30 minutes

During the stale window, you'll receive the cached result immediately while a background refresh runs. After the stale window, a fresh fetch is triggered synchronously.