> ## Documentation Index
> Fetch the complete documentation index at: https://www.opendirectory.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# npm-downloads-to-leads

> Give this skill a list of npm packages. It fetches 12 weeks of download data, scores each package by growth velocity, maps maintainers to GitHub and Twitter,...

<Info>
  **Category:** GTM Intelligence · **Version:** `0.0.1` · **Author:** `opendirectory` · **Compatibility:** All targets (claude, codex, opencode, gemini, anti-gravity, openclaw, hermes)
</Info>

Give this skill a list of npm packages. It fetches 12 weeks of download data, scores each package by growth velocity, maps maintainers to GitHub and Twitter, and outputs a ranked lead brief per breakout package: who built it, how to reach them, and what to say.

## Install

<Tabs>
  <Tab title="npx CLI (Recommended)">
    ```bash theme={null}
    npx "@opendirectory.dev/skills" install npm-downloads-to-leads --target claude
    ```
  </Tab>

  <Tab title="skills.sh">
    ```bash theme={null}
    npx skills add Varnan-Tech/opendirectory --skill npm-downloads-to-leads
    ```
  </Tab>

  <Tab title="Claude Code Native">
    ```bash theme={null}
    /plugin marketplace add Varnan-Tech/opendirectory
    /plugin install opendirectory-gtm-skills@opendirectory-marketplace
    ```
  </Tab>

  <Tab title="Claude Desktop">
    <video controls className="w-full aspect-video rounded-xl mb-4" src="https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c" />

    1. Copy `https://github.com/Varnan-Tech/opendirectory/tree/main/skills/npm-downloads-to-leads` into [download-directory.github.io](https://download-directory.github.io/) to download the ZIP.
    2. Open **Claude Desktop** -> **Customize** -> **Skills** -> **+** -> **Upload a skill** and drop the folder containing `SKILL.md`.
  </Tab>

  <Tab title="Manus AI">
    <video controls className="w-full aspect-video rounded-xl mb-4" src="https://github.com/user-attachments/assets/17cbee2a-9e17-4bd4-ac46-68e0e92ffab4" />

    [**Install npm-downloads-to-leads in Manus AI**](https://manus.im/import-skills?githubUrl=https%3A%2F%2Fgithub.com%2FVarnan-Tech%2Fopendirectory%2Ftree%2Fmain%2Fskills%2Fnpm-downloads-to-leads\&utm_source=opendirectory)
  </Tab>
</Tabs>

## What It Does

* Fetches 12 weeks of daily download data per package from the npm Downloads API
* Aggregates to weekly buckets and computes a velocity score: recent growth x acceleration x sweet-spot multiplier
* Classifies each package as BREAKOUT, WATCHING, steady, established, or too early
* Fetches maintainer profiles from the npm registry and GitHub API
* Extracts GitHub followers, Twitter handle, bio, and company from each maintainer's GitHub profile
* Generates a lead brief per breakout package: growth story, contact signals, why to reach out now, and a suggested first message
* Saves output to `docs/npm-leads/[date].md`

## Requirements

| Requirement | Purpose | How to Set Up |
| - | - | - |
| GitHub token | Raises rate limit from 60/hr to 5000/hr for maintainer profile lookups | github.com/settings/tokens (no scopes needed for public user profiles) |

No external AI API key needed. The npm and npm registry APIs are fully public with no auth. GitHub token is optional but recommended for lists larger than 10 packages.

## Setup

```bash theme={null}
cp .env.example .env
# Add GITHUB_TOKEN (optional, recommended for larger package lists)
```

## How to Use

```
"Find leads from these npm packages: esbuild, vite, @hono/hono, zod"
"Track download trends for competitor packages: turbo, nx, lerna"
"Who maintains these breakout npm packages? bun, oxc-parser, biome"
"Find evangelists before they are famous: @effect-ts/core, fp-ts, zod"
"Analyze npm momentum for my space: my-package, competitor-a, competitor-b"
"Map npm maintainers to Twitter for these packages: ..."
```

Include a short description of your product and the skill will tailor the outreach message to your context.

## Why Velocity Score, Not Raw Downloads

React gets 50 million downloads a week. Its maintainers are already famous, already inundated with outreach, and already aligned with a framework you are likely building on.

The velocity score finds the package going from 1K to 8K weekly downloads over 8 weeks. That maintainer just crossed a growth inflection. They are building an audience, they are not yet overwhelmed, and they are in a phase where your product makes a difference to their workflow.

The formula: `velocity_score = growth_ratio x acceleration x sweet_spot_multiplier`

* `growth_ratio`: recent 4-week average divided by prior 4-week average
* `acceleration`: last 2 weeks vs mid 2 weeks (is growth speeding up?)
* `sweet_spot_multiplier`: 1.0 for 500 to 500K weekly downloads, lower for noise floor or established giants

Breakout threshold: velocity score above 80 AND 500 to 500K weekly downloads.

## The Lead Brief

For each breakout and watching package:

* **Growth story**: exact download numbers, 8-week comparison, weekly trend
* **Maintainer profile**: GitHub handle, Twitter, bio, company, follower count
* **Why reach out now**: specific to this package's growth inflection point
* **Suggested first message**: names the package, its growth, and connects to your product context

## Cost Per Run

* npm Downloads API: free, no auth, no rate limit concerns
* npm Registry API: free, no auth
* GitHub API: free (60 req/hr unauthenticated, 5000/hr with token)
* AI analysis: uses the model already running the skill; no additional cost
* Total: free

## Standalone Script

Run the data fetching step directly from the terminal without Claude. Useful for scheduled jobs, CI pipelines, or exploring data before generating lead briefs.

```bash theme={null}
# Basic usage
python3 scripts/fetch.py esbuild zod @hono/hono

# With product context
python3 scripts/fetch.py esbuild zod --context "We build a TypeScript DX platform"

# From a file (one package per line)
python3 scripts/fetch.py --file packages.txt --output results.json

# Print to stdout
python3 scripts/fetch.py esbuild zod --stdout | jq '.summary'
```

The script handles Steps 3 to 5 (download fetch, velocity scoring, maintainer enrichment) and writes a JSON file. Open that file with Claude and ask: "Generate lead briefs from this npm data."

```bash theme={null}
GITHUB_TOKEN=your_token python3 scripts/fetch.py esbuild zod @hono/hono
```

Script output fields per package:

* `velocity_score`, `growth_pct`, `recent_4_avg`, `prior_4_avg`, `tier`
* `weeks`: array of 12 weekly download counts, oldest to newest
* `profile.description`, `profile.keywords`, `profile.npm_maintainers`
* `profile.github_users`: array with `username`, `twitter_username`, `followers`, `bio`, `company`

## Project Structure

```
npm-downloads-to-leads/
├── SKILL.md
├── README.md
├── .env.example
├── scripts/
│   └── fetch.py           standalone data fetcher (Steps 3 to 5, no Claude needed)
├── evals/
│   └── evals.json
└── references/
    ├── velocity-scoring.md
    └── outreach-timing.md
```

## License

MIT


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.