Agent skill · Data & Analytics

npm-downloads-to-leads

Takes a list of npm package names (yours or competitors'), fetches 12 weeks of daily download data from the npm API, computes a breakout velocity score per package to identify hockey-stick growth, fetches maintainer profiles from the npm registry and GitHub API, and outputs a ranked lead brief for each breakout package with who built it, how to reach them, and what to say. Use when asked to find evangelists before they are famous, track competitor package momentum, identify breakout npm packages, map npm maintainers to Twitter or GitHub, or find DevTools leads from package growth signals. Trig

Varnan-Techgithub.com/Varnan-TechGitHub ↗
claude-codecopilotships scriptsMIT
Install
npx skills add Varnan-Tech/opendirectory --skill npm-downloads-to-leads --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 7
SKILL.md size: 27 KB
Bundled scripts: yes
Requires: [claude-code, gemini-cli, github-copilot]
Path: skills/npm-downloads-to-leads/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 571
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Takes a list of npm packages, fetches 12 weeks of daily download data, computes a breakout velocity score to flag hockey-stick growth, enriches maintainer profiles from the npm registry and GitHub, and outputs a ranked lead brief for each breakout package including who built it, how to reach them, and outreach context.

How it works

  • Gather input: accepts one or more npm package names (unscoped or scoped) and optional product context.
  • Step 3: Fetch 12-week download data from the npm Downloads API per package, aggregating daily downloads into weekly buckets and keeping the last 12 weeks.
  • Step 4: Compute velocity scores using recent 4-week and prior 4-week averages, growth ratio, acceleration, and a noise factor, then classify each package as breakout, watching, too_early, etc. Packages are sorted by velocity score to identify top signals.
  • Step 5: For packages flagged as breakout or watching, fetch maintainer profiles from the npm registry and derive potential GitHub users from repository data and maintainer names; query GitHub user profiles to obtain contact signals (including twitter_username if present) and basic bios.

When to use it

Use when asked to find evangelists before they are famous, track competitor package momentum, identify breakout npm packages, map npm maintainers to Twitter or GitHub, or find DevTools leads from package growth signals. Trigger phrases include: "find leads from npm packages", "who maintains these breakout packages", "track npm download trends", "find evangelists before they are famous", or "map npm maintainers to Twitter".

What it can touch

  • npm registry data for package metadata and maintainers
  • npm Downloads API for 12 weeks of daily downloads
  • GitHub API for maintainer profile enrichment (twitter_username if available)
  • Local intermediate JSON files (e.g., /tmp/npl-*.json) used by the workflow

Caveats

  • The GitHub enrichment is rate-limited; a GITHUB_TOKEN increases rate limits. If not set, enrichment is limited to a smaller number of packages.
  • The script requires that GitHub handles be available in API responses; if twitter_username is missing, it is labeled as not found on GitHub.
  • If all packages fail data fetch or fall below the 500 weekly threshold, results may be incomplete and the process may stop per the workflow rules.
From the SKILL.md

# npm Downloads to Leads Take a list of npm packages. Fetch 12 weeks of download data. Compute breakout velocity. Enrich maintainer profiles. Output a ranked lead brief per breakout package with contact signals and an outreach message. --- **Critical rule:** Every package download figure in the output must come from the npm API response. Every maintainer GitHub handle or Twitter username must come from the GitHub API response -- not guessed from the npm username. If the GitHub API did not return a twitter_username field, write "not found on GitHub" -- do not invent one. --- ## Common Mistakes | The agent will want to... | Why that's wrong | |---|---| | Fetch GitHub profiles for every package in the list | Rate limit is 60 req/hr without a token. Enriching steady or declining packages wastes the budget before reaching breakout ones. Only fetch profiles for breakout and watching packages. | | Rank packages by raw weekly downloads | Raw downloads favor React and lodash, which are not leads. A package going from 1K to 8K/week is more actionable than React at 50M/week. Velocity score is the signal. | | Skip URL-encoding for scoped packages | @org/pkg without encoding causes a 404 from t

What's inside
Steps it walks through
  1. Common Mistakes
  2. Step 1: Setup Check
  3. Step 2: Gather Input
  4. Step 3: Fetch 12-Week Download Data
  5. Step 4: Compute Velocity Scores
  6. Step 5: Fetch Maintainer Profiles
  7. Step 6: Generate Lead Briefs
  8. Step 7: Self-QA
  9. Step 8: Save and Present Output
Ships with 6 files
  • .env.example
  • README.md
  • evals/evals.json
  • references/outreach-timing.md
  • references/velocity-scoring.md
  • scripts/fetch.py
Commands it runs
echo "GITHUB_TOKEN: ${GITHUB_TOKEN:-not set, unauthenticated rate limit applies (60 req/hr -- enough for ~10 packages)}"
python3 << 'PYEOF'
Check if the script exists
ls scripts/fetch.py 2>/dev/null && echo "script available" || echo "script not found"
python3 scripts/fetch.py PACKAGES_HERE --context "CONTEXT_HERE" --output /tmp/npl-script-out.json
python3 -c "
import json
d = json.load(open('/tmp/npl-briefs.json'))
for b in d['lead_briefs']:
rm -f /tmp/npl-input.json /tmp/npl-download-data.json /tmp/npl-scored.json \
More from opendirectory
All skills →
About this skill
What does the npm-downloads-to-leads skill do?

Takes a list of npm package names (yours or competitors'), fetches 12 weeks of daily download data from the npm API, computes a breakout velocity score per package to identify hockey-stick growth, fetches maintainer profiles from the npm registry and GitHub API, and outputs a ranked lead brief for each breakout package with who built it, how to reach them, and what to say. Use when asked to find evangelists before they are famous, track competitor package momentum, identify breakout npm packages, map npm maintainers to Twitter or GitHub, or find DevTools leads from package growth signals. Trig

How do I install it?

Run `npx skills add Varnan-Tech/opendirectory --skill npm-downloads-to-leads --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From Varnan-Tech/opendirectory, a repository with 571 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going