How we rank skills.
Every score on this site is computed from public GitHub data using the formula below. No editorial weighting, no vendor install counts, no pay-to-rank. The goal is simple: reward the projects people are actually using, forking, contributing to, and returning to.
Why traction, not stars
GitHub stars used to mean something. A repo with 10k+ stars signaled a mature, widely-used project — but that era is over. Investigations into GitHub's fake star economy have flagged millions of artificial stars across the ecosystem, including one VC-darling project that topped a well-known ROSS Index with 74,300 stars — nearly half flagged as artificial, with 52% of stargazers coming from zero-follower accounts and a fork-to-star ratio of just 0.052.
Once a metric becomes a target (Goodhart's Law in action), it stops being a metric. Because VCs, rankings pages, and trending lists still lean on raw star counts, an entire gray-market ecosystem of star-farms, bot accounts, and paid promotion has sprung up to game them.
Current Traction is our answer: a multi-signal 0–100 score using recent attention, sustained growth, repo activity, forks, and anti-gaming penalties. The leaderboard displays that score as a simple band label instead of showing the raw number in the table.
Formula
Recent stars are useful, but they are not enough on their own. We combine 7-day attention, 30-day sustained growth, repo activity, and forks so a star-only spike does not dominate a slower but healthier project. Each component is normalized inside the current cohort and variant, then combined into the Current Traction score.
| Signal | Weight | Rationale |
|---|---|---|
| Recent attention | 40% | Stars earned in the last 7 days |
| Sustained growth | 25% | 30-day stars plus 7d / 30d consistency |
| Repo activity | 25% | Recent commits, contributors, and push freshness |
| Adoption signal | 10% | Forks and healthy fork-to-star ratio |
Anti-gaming penalty
Each trigger subtracts a small dampener so obvious star-only patterns do not crowd out healthier projects. These are not fraud verdicts; they are conservative scoring rules for noisy public data.
- Star-only burst20+ recent stars with <=2 forks, no recent commits, and <=1 contributor
- Low star-to-fork ratio500+ lifetime stars and a star-to-fork ratio above 500:1
- Recent star concentration50+ stars in 30 days, at least 80% of them inside 7 days, and low repo activity
Normalization pipeline
- Compute recent attention from 7-day stars.
- Compute sustained growth from 30-day stars and 7d / 30d consistency.
- Compute repo activity from recent commits, contributors, and push freshness.
- Compute adoption signal from forks and fork-to-star health.
- Normalize each component to 0-100 inside the current cohort and variant.
- Weight and sum per the table above.
- Subtract the anti-gaming dampener, then clamp the score to 0-100.
Current Traction bands
The raw score still powers sorting, ranking, and the bar fill. The visible table label is intentionally simplified to one of five score bands.
Top-band multi-signal traction
Clear traction across recent and sustained signals
Healthy current movement
Some traction, but below the active band
Limited recent traction
Refresh cadence
- GitHub data is stored as daily snapshots.
- Stargazer-derived 7-day and 30-day fields update after each stargazer fetch.
- Production pages revalidate from the data cache every 10 minutes.
What we don't do
- No vendor install counts. We rank public GitHub signal, not marketplace telemetry.
- No paid placement. There is no boost, ad slot, or featured tier.
- No LLM-based ranking. Categories are LLM-classified once; the score itself is deterministic.
- Single-skill repos and skill bundles stay available as separate focused views.