@opendirectory.dev/skills 0.1.35 → 0.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/registry.json +22 -0
- package/skills/npm-downloads-to-leads/.env.example +4 -0
- package/skills/npm-downloads-to-leads/README.md +146 -0
- package/skills/npm-downloads-to-leads/SKILL.md +670 -0
- package/skills/npm-downloads-to-leads/evals/evals.json +119 -0
- package/skills/npm-downloads-to-leads/references/outreach-timing.md +163 -0
- package/skills/npm-downloads-to-leads/references/velocity-scoring.md +136 -0
- package/skills/npm-downloads-to-leads/scripts/fetch.py +372 -0
- package/skills/sdk-adoption-tracker/.env.example +3 -0
- package/skills/sdk-adoption-tracker/README.md +153 -0
- package/skills/sdk-adoption-tracker/SKILL.md +808 -0
- package/skills/sdk-adoption-tracker/evals/evals.json +108 -0
- package/skills/sdk-adoption-tracker/references/import-patterns.md +183 -0
- package/skills/sdk-adoption-tracker/references/scoring-guide.md +148 -0
- package/skills/sdk-adoption-tracker/scripts/fetch.py +462 -0
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -187,6 +187,16 @@
|
|
|
187
187
|
"version": "1.0.0",
|
|
188
188
|
"path": "skills/noise2blog"
|
|
189
189
|
},
|
|
190
|
+
{
|
|
191
|
+
"name": "npm-downloads-to-leads",
|
|
192
|
+
"description": "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 s...",
|
|
193
|
+
"tags": [
|
|
194
|
+
"Branding"
|
|
195
|
+
],
|
|
196
|
+
"author": "opendirectory",
|
|
197
|
+
"version": "0.0.1",
|
|
198
|
+
"path": "skills/npm-downloads-to-leads"
|
|
199
|
+
},
|
|
190
200
|
{
|
|
191
201
|
"name": "outreach-sequence-builder",
|
|
192
202
|
"description": "Takes a buying signal and generates a personalized multi-channel outreach sequence across email, LinkedIn, and phone.",
|
|
@@ -269,6 +279,18 @@
|
|
|
269
279
|
"version": "1.0.0",
|
|
270
280
|
"path": "skills/schema-markup-generator"
|
|
271
281
|
},
|
|
282
|
+
{
|
|
283
|
+
"name": "sdk-adoption-tracker",
|
|
284
|
+
"description": "Given your SDK or library name, searches GitHub code search for public repos that import or require it, classifies each repo as company org, affili...",
|
|
285
|
+
"tags": [
|
|
286
|
+
"SEO",
|
|
287
|
+
"Branding",
|
|
288
|
+
"Developer Tools"
|
|
289
|
+
],
|
|
290
|
+
"author": "opendirectory",
|
|
291
|
+
"version": "0.0.1",
|
|
292
|
+
"path": "skills/sdk-adoption-tracker"
|
|
293
|
+
},
|
|
272
294
|
{
|
|
273
295
|
"name": "show-hn-writer",
|
|
274
296
|
"description": "Draft a Show HN post backed by real HN performance data. Uses observed patterns from 250 top HN posts to maximise score.",
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
GITHUB_TOKEN= # optional -- github.com/settings/tokens (no scopes needed for public user profiles)
|
|
2
|
+
# Without it: 60 req/hr unauthenticated -- enough for ~10 packages before degrading
|
|
3
|
+
# With it: 5000 req/hr -- handles any reasonable package list without hitting limits
|
|
4
|
+
# The skill degrades gracefully if the limit is hit: shows npm velocity data without GitHub enrichment
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# npm-downloads-to-leads
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx "@opendirectory.dev/skills" install npm-downloads-to-leads --target claude
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Video Tutorial
|
|
12
|
+
|
|
13
|
+
https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
14
|
+
|
|
15
|
+
### Step 1: Download from GitHub
|
|
16
|
+
1. Click the **Code** button on this repo's GitHub page.
|
|
17
|
+
2. Select **Download ZIP**.
|
|
18
|
+
3. Extract the ZIP on your computer.
|
|
19
|
+
|
|
20
|
+
### Step 2: Install in Claude
|
|
21
|
+
1. Open the **Claude desktop app**.
|
|
22
|
+
2. Go to **Customize** in the sidebar.
|
|
23
|
+
3. Click the **Skills** tab, then the **+** button.
|
|
24
|
+
4. Choose **Upload a skill** and drop the folder or ZIP file.
|
|
25
|
+
|
|
26
|
+
Note: Upload the folder that contains the `SKILL.md` file.
|
|
27
|
+
|
|
28
|
+
## What It Does
|
|
29
|
+
|
|
30
|
+
- Fetches 12 weeks of daily download data per package from the npm Downloads API
|
|
31
|
+
- Aggregates to weekly buckets and computes a velocity score: recent growth x acceleration x sweet-spot multiplier
|
|
32
|
+
- Classifies each package as BREAKOUT, WATCHING, steady, established, or too early
|
|
33
|
+
- Fetches maintainer profiles from the npm registry and GitHub API
|
|
34
|
+
- Extracts GitHub followers, Twitter handle, bio, and company from each maintainer's GitHub profile
|
|
35
|
+
- Generates a lead brief per breakout package: growth story, contact signals, why to reach out now, and a suggested first message
|
|
36
|
+
- Saves output to `docs/npm-leads/[date].md`
|
|
37
|
+
|
|
38
|
+
## Requirements
|
|
39
|
+
|
|
40
|
+
| Requirement | Purpose | How to Set Up |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| 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) |
|
|
43
|
+
|
|
44
|
+
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.
|
|
45
|
+
|
|
46
|
+
## Setup
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
cp .env.example .env
|
|
50
|
+
# Add GITHUB_TOKEN (optional, recommended for larger package lists)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## How to Use
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
"Find leads from these npm packages: esbuild, vite, @hono/hono, zod"
|
|
57
|
+
"Track download trends for competitor packages: turbo, nx, lerna"
|
|
58
|
+
"Who maintains these breakout npm packages? bun, oxc-parser, biome"
|
|
59
|
+
"Find evangelists before they are famous: @effect-ts/core, fp-ts, zod"
|
|
60
|
+
"Analyze npm momentum for my space: my-package, competitor-a, competitor-b"
|
|
61
|
+
"Map npm maintainers to Twitter for these packages: ..."
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Include a short description of your product and the skill will tailor the outreach message to your context.
|
|
65
|
+
|
|
66
|
+
## Why Velocity Score, Not Raw Downloads
|
|
67
|
+
|
|
68
|
+
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.
|
|
69
|
+
|
|
70
|
+
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.
|
|
71
|
+
|
|
72
|
+
The formula: `velocity_score = growth_ratio x acceleration x sweet_spot_multiplier`
|
|
73
|
+
|
|
74
|
+
- `growth_ratio`: recent 4-week average divided by prior 4-week average
|
|
75
|
+
- `acceleration`: last 2 weeks vs mid 2 weeks (is growth speeding up?)
|
|
76
|
+
- `sweet_spot_multiplier`: 1.0 for 500 to 500K weekly downloads, lower for noise floor or established giants
|
|
77
|
+
|
|
78
|
+
Breakout threshold: velocity score above 80 AND 500 to 500K weekly downloads.
|
|
79
|
+
|
|
80
|
+
## The Lead Brief
|
|
81
|
+
|
|
82
|
+
For each breakout and watching package:
|
|
83
|
+
|
|
84
|
+
- **Growth story**: exact download numbers, 8-week comparison, weekly trend
|
|
85
|
+
- **Maintainer profile**: GitHub handle, Twitter, bio, company, follower count
|
|
86
|
+
- **Why reach out now**: specific to this package's growth inflection point
|
|
87
|
+
- **Suggested first message**: names the package, its growth, and connects to your product context
|
|
88
|
+
|
|
89
|
+
## Cost Per Run
|
|
90
|
+
|
|
91
|
+
- npm Downloads API: free, no auth, no rate limit concerns
|
|
92
|
+
- npm Registry API: free, no auth
|
|
93
|
+
- GitHub API: free (60 req/hr unauthenticated, 5000/hr with token)
|
|
94
|
+
- AI analysis: uses the model already running the skill; no additional cost
|
|
95
|
+
- Total: free
|
|
96
|
+
|
|
97
|
+
## Standalone Script
|
|
98
|
+
|
|
99
|
+
Run the data fetching step directly from the terminal without Claude. Useful for scheduled jobs, CI pipelines, or exploring data before generating lead briefs.
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Basic usage
|
|
103
|
+
python3 scripts/fetch.py esbuild zod @hono/hono
|
|
104
|
+
|
|
105
|
+
# With product context
|
|
106
|
+
python3 scripts/fetch.py esbuild zod --context "We build a TypeScript DX platform"
|
|
107
|
+
|
|
108
|
+
# From a file (one package per line)
|
|
109
|
+
python3 scripts/fetch.py --file packages.txt --output results.json
|
|
110
|
+
|
|
111
|
+
# Print to stdout
|
|
112
|
+
python3 scripts/fetch.py esbuild zod --stdout | jq '.summary'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
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."
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
GITHUB_TOKEN=your_token python3 scripts/fetch.py esbuild zod @hono/hono
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Script output fields per package:
|
|
122
|
+
|
|
123
|
+
- `velocity_score`, `growth_pct`, `recent_4_avg`, `prior_4_avg`, `tier`
|
|
124
|
+
- `weeks`: array of 12 weekly download counts, oldest to newest
|
|
125
|
+
- `profile.description`, `profile.keywords`, `profile.npm_maintainers`
|
|
126
|
+
- `profile.github_users`: array with `username`, `twitter_username`, `followers`, `bio`, `company`
|
|
127
|
+
|
|
128
|
+
## Project Structure
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
npm-downloads-to-leads/
|
|
132
|
+
├── SKILL.md
|
|
133
|
+
├── README.md
|
|
134
|
+
├── .env.example
|
|
135
|
+
├── scripts/
|
|
136
|
+
│ └── fetch.py standalone data fetcher (Steps 3 to 5, no Claude needed)
|
|
137
|
+
├── evals/
|
|
138
|
+
│ └── evals.json
|
|
139
|
+
└── references/
|
|
140
|
+
├── velocity-scoring.md
|
|
141
|
+
└── outreach-timing.md
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## License
|
|
145
|
+
|
|
146
|
+
MIT
|