GitHub trending repos versus npm download signals

GitHub Trending Repos surfaces repositories gaining stars and traffic today. npm weekly downloads measure package installs over months. The two signals diverge often because repo names do not map cleanly to npm package names. This page defines mapping rules, triangulation workflows, and when each feed leads.

Developer trend research pulls from two feeds that answer different questions. GitHub Trending Repos shows which repositories gained attention today. npm weekly downloads show which packages teams actually installed. Treating them as interchangeable produces false positives.

What each feed measures

FeedAPI callSignalLag
GitHub Trending Reposget_top_trends type GitHub Trending ReposStar and traffic velocity on reposHours
npm downloadsget_growth source npmWeekly install countsDays to weeks

GitHub ranks org/repo slugs. npm requires the exact package name from npmjs.com, case-sensitive.

Live GitHub board example

On 2026-07-25, get_top_trends returned:

{
  "as_of_ts": "2026-07-25T04:01:42.229953+00:00",
  "type": "GitHub Trending Repos",
  "limit": 10,
  "data": [
    [1, "block/buzz"],
    [2, "koala73/worldmonitor"],
    [3, "ComposioHQ/awesome-claude-skills"],
    [4, "Pumpkin-MC/Pumpkin"],
    [5, "shiyu-coder/Kronos"],
    [6, "Automattic/harper"],
    [7, "likec4/likec4"],
    [8, "citrolabs/ego-lite"],
    [9, "yorukot/superfile"],
    [10, "ruvnet/RuView"]
  ]
}

block/buzz ranks first on GitHub. That does not mean the npm package buzz gained equivalent traction. The repo slug and the published package name are independent identifiers.

Step 1: Resolve repo slug to npm package name

Before any npm API call:

  1. Open the repository on GitHub.
  2. Read name in the root package.json.
  3. If no package.json exists, the project may not publish to npm. Skip npm checks.
  4. For monorepos, find the package directory and use that package's name field.

Pass the resolved string exactly:

{
  "mode": "get_growth",
  "source": "npm",
  "keyword": "langchain",
  "percent_growth": ["3M", "12M"]
}

npm rejects fuzzy matches. @block/buzz and buzz are different packages.

Step 2: Read npm growth response fields

A get_growth response on langchain on 2026-07-25 showed:

PeriodGrowthRecent weekly downloadsBaseline weekly downloads
12M+104.25%2,144,4861,049,891
3M+3.29%2,144,4862,074,817

Twelve-month growth was strong while three-month growth flattened. That pattern fits a mature package past its initial hype curve. GitHub trending would not flag langchain today because the repo is established, even though installs remain high.

Contrast with react on the same date:

PeriodGrowthRecent weekly downloads
12M+207.72%122,216,526
3M-6.57%122,216,526

Massive absolute volume with slight recent decline. GitHub trending and npm growth tell opposite short-term stories for the same ecosystem anchor.

Step 3: Handle new packages and low-quality signals

Querying npm with a guessed name from a trending repo can return misleading growth. A lookup on worldmonitor returned 12M growth above 999,000% because the baseline weekly volume was zero. The response included data_quality: low and a warning that the underlying signal was over 90% zero values.

Treat those results as "new or near-zero baseline," not as proof of viral adoption. Confirm with:

Divergence patterns worth tracking

Stars without installs. Repo trends on GitHub, npm growth flat. Common for awesome-list repos, devtools with binary releases, or pre-1.0 libraries developers bookmark before shipping.

Installs without stars. npm 3M growth rises, GitHub repo absent from trending. Typical of B2B libraries adopted through internal security review rather than social discovery.

Name collision false positive. Repo block/buzz trends while an unrelated npm package buzz shows high growth. The API returns data for the keyword asked, not the repo linked. Mapping discipline prevents this error.

Monorepo mismatch. Trending repo is org/monorepo but the installable package is @org/cli inside packages/cli. npm queries must target @org/cli.

Triangulation workflow for agent pipelines

1. get_top_trends(type="GitHub Trending Repos", limit=25)
2. For each new repo slug:
   a. Resolve npm package name from package.json
   b. get_growth(source="npm", keyword=<package>, percent_growth=["3M","12M"])
   c. If volume_available and recent_volume > 10,000: flag "production scale"
   d. If data_quality low: flag "early signal, verify manually"
3. Optional: get_growth(source="google search, news volume", keyword=<project name>)

Step 3 catches hype cycles where press coverage outpaces package installs.

Request budget

StepRequests per repo
GitHub leaderboard poll1 (shared across all repos)
npm growth check1 per package
Cross-source growth1 per project name

Scanning 10 new trending repos with npm and cross-source checks costs 1 + 10 + 10 = 21 requests. On the free tier at 100 requests per month, batch weekly rather than on every hourly GitHub poll.

MCP prompts for developer triangulation

Explicit source names in prompts reduce routing errors. For npm, always include the exact package string.

When to add more developer sources

npm covers JavaScript packages only. GitHub trending includes Rust, Go, Python, and other ecosystems. Pair GitHub polls with:

For broader developer ecosystem coverage, see developer ecosystem trends and the npm API reference.

Common questions

GitHub Trending ranks repositories by recent star velocity, forks, and traffic. npm tracks weekly installs of published packages. A repo can trend because of documentation, a CLI tool with no npm publish, or a monorepo where the trending repo name differs from the installable package. Stars often lead installs by days or weeks for new libraries.
Read the package.json name field in the repo root, not the GitHub org/repo slug. Scoped packages use the exact string such as @babel/core. Pass that string as keyword on get_growth with source npm. Guessing from the repo name produces false matches, especially for generic words like buzz or monitor.
Poll get_top_trends with type GitHub Trending Repos for the live board. For each candidate repo, resolve the npm package name from package.json, then call get_growth with source npm and percent_growth 3M and 12M. Optionally add get_growth on google search and news volume for the project name to catch hype without installs.
Trust GitHub when evaluating developer mindshare, contributor interest, or pre-release tools not yet on npm. Trust npm when measuring production adoption, semver upgrade risk, or dependency footprint. A repo trending on GitHub with flat npm growth may be early-stage. Flat GitHub activity with rising npm installs often signals quiet enterprise adoption of an established package.