Scoring Algorithm

How RepoQuality Scores Repositories

Each repository is graded A through F across five categories. The overall grade is a weighted average.

New in v1.3.0 — Added commit frequency trend, release cadence, README quality, stale issue ratio, first response time, PR size, PR review depth, contributor growth, and recent activity metrics. See details below.

Categories and Metrics

Activity (weight: 30%)

MetricABCDF
Days since last commit<7<30<90<180180+
Commits per month30+10+3+1+0
Days since last release<30<90<180<365365+ or never
Commit frequency trendgrowingstabledeclining
Release cadence<30d<90d<180d<365d365d+ or none

Community (weight: 20%)

MetricABCDF
README>500 charsmissing or tiny
README quality4+ signals3 signals1-2 signals0 signals
Licensepermissiveother/custommissing
Contributing guidepresentmissing
Security policypresentmissing
CI detectedpresentmissing

Issues (weight: 20%)

MetricABCDF
Median response time<1 day<7 days<30 days<90 days90+ or no data
First response time<1 day<7 days<30 days<90 days90+ or no data
Closed issue ratio70%+60%+45%+30%+<30%
Answered ratio90%+80%+65%+40%+<40%
Stale issue ratio>90% non-stale>80%>65%>40%≤40%

Pull Requests (weight: 15%)

MetricABCDF
Median merge time<3 days<7 days<30 days<90 days90+ or no data
Closed PR ratio77%+67%+50%+33%+<33%
Review ratio80%+50%+20%+>0%0%
PR size<200 lines<400<600<10001000+ or none
PR review depth2+1+0.5+>00

Contributors (weight: 15%)

MetricABCDF
Contributor count10+5+3+1+0
Bus factor5+3+2+10
Contributor growthgrowingstabledeclining
Recent activity50%+30%+15%+5%+<5%

Bus Factor

Bus factor is the minimum number of contributors who collectively account for 80% of contributions. AI bots are filtered out before calculation. Known bots include: Dependabot, Renovate, Greenkeeper, Snyk, Mergify, Semantic Release, and any account ending in [bot] or -bot.

Overall Grade

Archived repositories always receive an automatic F grade, regardless of their metrics. An archived repository is a dead project.

Each category grade is converted to a numeric score (A=4, B=3, C=2, D=1, F=0). The overall grade is a weighted average across all five categories, converted back to a letter grade. Activity has the highest weight (30%) because recent development activity is the strongest signal of repository health.

Data Sources

  • Primary: Platform REST APIs (GitHub, GitLab, Bitbucket, Gitea/Codeberg)
  • Fallback: Web scraping with Jsoup when API access is restricted
  • Caching: Results cached in PostgreSQL for 24 hours

Recommendations

After scoring, RepoQuality generates actionable recommendations for metrics graded C or below. Metrics graded A or B are considered healthy and are not flagged.

Priority levels are determined by the metric's grade:

  • High — metric graded F (critical deficiency)
  • Medium — metric graded D (significant weakness)
  • Low — metric graded C (room for improvement)

Effort levels estimate the work required to address a recommendation:

  • Trivial — changes that can be made in minutes (e.g., adding a README or LICENSE file)
  • Moderate — changes requiring some setup or process changes (e.g., configuring CI, improving issue triage)
  • Significant — changes requiring ongoing effort or cultural shifts (e.g., growing a contributor base, reducing bus factor)

Recommendations are sorted by priority (high first) and then by category weight. Each recommendation links to the relevant category section so you can see the underlying metrics.

RepoQuality v1780299654789 · AGPL-3.0