Skip to content

gitdex-labs/gitscore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gitscore

Score any gitlawb network repo. Six components, one number.

The engine behind gitdex.app.

$ npx @gitdex-labs/gitscore z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr/openclaude

z6MkqDnb...gPr/openclaude  ·  GitScore 86/100

  Longevity      ██████████░░░░░░  61%  (15% weight)
  Popularity     ██░░░░░░░░░░░░░░  15%  (10% weight)
  Originality    ████████████████ 100%  (10% weight)
  Freshness      ████████████████ 100%  (20% weight)
  Activity       ████████████████ 100%  (30% weight)
  Contributors   ████████████████ 100%  (15% weight)

  via gitdex.app · gitlawb network
  • Zero runtime dependencies
  • Node 18+
  • ~250 LOC, fully tested
  • MIT

Install

npm install -g @gitdex-labs/gitscore
# or use npx (no install)
npx @gitdex-labs/gitscore <ownerDid>/<repoName>

How it works

GitScore combines six normalized components into a single 0–100 number:

Component Weight Signal
Activity 30% Commits in the last 90 days (log, saturates ~30)
Freshness 20% Days since last push (linear decay, 0 at 90d)
Longevity 15% Repo age (log, saturates ~2 years)
Contributors 15% Distinct commit authors (log, saturates ~10)
Popularity 10% Stars (log, saturates ~100)
Originality 10% 1.0 if original, 0.3 if fork

Final score = weighted average × 100, rounded. Components that can't be computed are skipped and the remaining weights are renormalized.

All math is in src/score.ts — short, pure, tested.

Configuration

By default the CLI queries https://node.gitlawb.com. Point it at a different node by setting GITLAWB_NODE_URL:

GITLAWB_NODE_URL=https://my-node.example.com npx @gitdex-labs/gitscore <ownerDid>/<repoName>

Library usage

import { gitScore, fetchGitlawbRepo } from "@gitdex-labs/gitscore";

const inputs = await fetchGitlawbRepo("z6MkqDnb.../openclaude");
const { score, components } = gitScore(inputs);

console.log(score);       // 86
console.log(components);  // { longevity: 0.61, popularity: 0.15, ... }

You can also pass your own inputs (e.g., from a custom data source):

const { score } = gitScore({
  createdAt: "2024-05-24T00:00:00Z",
  pushedAt: "2026-05-20T00:00:00Z",
  stars: 100,
  isFork: false,
  commits: [{ author: "dev@example.com", date: "2026-05-20T00:00:00Z" }],
});

Why

Commit counts and star totals alone are easy to fake or game. GitScore combines six independent signals so a single distorted dimension can't dominate the result. The formula is open and reproducible — run it yourself.

For the full live leaderboard, daily score snapshots, and the Tokenization Radar across Clanker, bankr, and Flaunch — see gitdex.app.

Source

This tool is itself a gitlawb-network repo (eating its own dog food):

License

MIT

About

Score any gitlawb network repo. Six components, one number. The engine behind gitdex.app.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors