RepoTrust

Methodology

RepoTrust scores public repositories on three separate questions. The three scores are never blended into one number, because a well-tested project can be entirely AI-written, and a hand-written one can be insecure.

Every score comes with:

How a repository is scored

  1. Fetch (networked): repository metadata, merged pull requests, a full clone, OpenSSF Scorecard results, and vulnerability databases.
  2. Analyze (no network): static tools run inside an isolated container that has no network access, a read-only copy of the repository, and CPU, memory and time limits. The repository's own code is never installed, built or run.
  3. Report (no network): sub-scores are combined using versioned weights. The scoring version is shown on every report, so scores from different versions are not silently compared.

AI provenance

The headline number is the share of code with explicit AI attribution:

This is a lower bound: AI use is often not attributed.

Label Meaning
explicit At least 1% of attributed lines, or at least 3 attributed commits
possible Weaker signals: a few attributed commits below the explicit threshold, AI tool configuration files (CLAUDE.md, .cursorrules), or commit bursts faster than a person usually writes code
none-detected No signals found. This does not prove that no AI was used

Wording: unless attribution is explicit, reports say "signals consistent with" AI generation, never that code is AI-generated.

Code quality

Area Weight Measured by
Testing and CI 25% test-to-code ratio, CI present and what it runs
Complexity 20% function complexity and length (lizard)
Duplication 15% duplicated blocks
Lint and smells 15% Opengrep code-quality rules, per thousand lines
Docs 10% README, license, contributing guide, changelog
Process 10% code review and maintenance (OpenSSF Scorecard)
Type safety 5% strict type-checking configuration and escape hatches

Security

Area Weight Measured by
Secrets 25% gitleaks over the tree and full history. Matches are not verified, and secret values are never stored or shown
Static analysis 20% Opengrep community rules, weighted by severity and confidence
Dependencies 20% known vulnerabilities in lockfiles (osv-scanner, offline)
CI workflows 15% GitHub Actions risks (zizmor)
Posture 10% security policy, automated dependency updates, signed commits
OpenSSF Scorecard 10% the public Scorecard result, where one exists

A repository's own suppression comments and tool configuration are ignored, so every repository is measured the same way.

Labels: strong 85+, adequate 70+, weak 50+, poor below 50. Quality uses 80, 65 and 50.

Flags

Flags are heuristics backed by evidence, not verdicts.

Limitations

Disagree with a score? See Disputes.