@opendirectory.dev/skills 0.1.34 → 0.1.36

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendirectory.dev/skills",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "bin": {
package/registry.json CHANGED
@@ -77,6 +77,16 @@
77
77
  "version": "1.0.0",
78
78
  "path": "skills/explain-this-pr"
79
79
  },
80
+ {
81
+ "name": "gh-issue-to-demand-signal",
82
+ "description": "Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 deman...",
83
+ "tags": [
84
+ "Developer Tools"
85
+ ],
86
+ "author": "opendirectory",
87
+ "version": "0.0.1",
88
+ "path": "skills/gh-issue-to-demand-signal"
89
+ },
80
90
  {
81
91
  "name": "google-trends-api-skills",
82
92
  "description": "SEO keyword research workflow for blog generation using Google Trends data.",
@@ -177,6 +187,16 @@
177
187
  "version": "1.0.0",
178
188
  "path": "skills/noise2blog"
179
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
+ },
180
200
  {
181
201
  "name": "outreach-sequence-builder",
182
202
  "description": "Takes a buying signal and generates a personalized multi-channel outreach sequence across email, LinkedIn, and phone.",
@@ -0,0 +1,3 @@
1
+ GITHUB_TOKEN= # optional -- github.com/settings/tokens (no scopes needed for public repos)
2
+ # Without it: 60 req/hr unauthenticated (enough for ~2 fetches before hitting limit)
3
+ # With it: 5000 req/hr (effectively unlimited for this skill's 2-page fetch pattern)
@@ -0,0 +1,118 @@
1
+ # gh-issue-to-demand-signal
2
+
3
+ Give the skill a competitor's public GitHub repo URL. It fetches their open issues, filters noise locally, clusters into 6 demand categories using the AI already running the skill, scores by real engagement (reactions), detects ignored demand (high reactions + no response = your opportunity), and outputs a ranked demand gap report with a GTM messaging brief.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npx "@opendirectory.dev/skills" install gh-issue-to-demand-signal --target claude
9
+ ```
10
+
11
+ ### Video Tutorial
12
+ Watch this quick video to see how it's done:
13
+
14
+ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
15
+
16
+ ### Step 1: Download the skill from GitHub
17
+ 1. Click the **Code** button on this repo's GitHub page.
18
+ 2. Select **Download ZIP** to download the repository.
19
+ 3. Extract the ZIP file on your computer.
20
+
21
+ ### Step 2: Install the Skill in Claude
22
+ 1. Open your **Claude desktop app**.
23
+ 2. Go to the sidebar on the left side and click on the **Customize** section.
24
+ 3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
25
+ 4. Choose the option to **Upload a skill**, and drag and drop the `.zip` file (or you can extract it and drop the folder, both work).
26
+
27
+ > **Note:** For some skills (like `position-me`), the `SKILL.md` file might be located inside a subfolder. Always make sure you are uploading the specific folder that contains the `SKILL.md` file!
28
+
29
+ ## What It Does
30
+
31
+ - Fetches up to 200 open issues from any public GitHub repo (no auth required)
32
+ - Filters noise locally: removes PRs, bot issues, zero-engagement issues, and chore-pattern titles
33
+ - Computes a demand score per issue: `(reactions["+1"] x 2) + (comments x 0.5)`
34
+ - Detects "ignored demand": issues with 10+ reactions, open 6+ months, no planned label
35
+ - Clusters issues into 6 categories using the AI running the skill (no external API key needed): feature gaps, bug patterns, UX complaints, performance issues, missing integrations, missing docs
36
+ - Generates 5-8 cluster themes with total demand scores
37
+ - Messaging brief: 3 positioning angles + 3 outreach hooks + cluster-specific headlines
38
+ - Saves output to `docs/demand-signals/[owner]-[repo]-[date].md`
39
+
40
+ ## Requirements
41
+
42
+ | Requirement | Purpose | How to Set Up |
43
+ |---|---|---|
44
+ | GitHub token | Raises rate limit from 60/hr to 5000/hr | github.com/settings/tokens (no scopes needed for public repos) |
45
+
46
+ No external AI API key needed. The skill uses the AI assistant running it (Claude, Gemini, Copilot) to do the clustering and messaging brief. GitHub token is optional but recommended for repeated use.
47
+
48
+ ## Setup
49
+
50
+ ```bash
51
+ cp .env.example .env
52
+ # Add GITHUB_TOKEN (optional, recommended for repeated use)
53
+ ```
54
+
55
+ ## How to Use
56
+
57
+ ```
58
+ "Scan competitor GitHub issues: https://github.com/vercel/next.js"
59
+ "What are users asking for in facebook/react?"
60
+ "Find demand gaps in linear-app/linear"
61
+ "Turn GitHub complaints into messaging: https://github.com/supabase/supabase"
62
+ "What should I build based on competitor issues? vercel/next.js"
63
+ "Which features are users begging for in this repo?"
64
+ ```
65
+
66
+ ## Why This Matters
67
+
68
+ A busy product team cannot read 500 open issues. This skill does the work: ranks by real user demand (reaction counts), clusters into actionable GTM categories, detects ignored demand (where competitors have been silent the longest), and translates raw complaints into positioning language.
69
+
70
+ **The demand score formula:** `(reactions["+1"] x 2) + (comments x 0.5)`. Reactions are weighted higher than comments because reactions are pure signal -- a thumbs-up means "I want this." Comments include maintainer responses, off-topic discussion, and spam.
71
+
72
+ **Ignored demand is your opportunity:** An issue with 50 reactions that has been open for 2 years with no planned label means their users have been waiting. That is your product's first billboard.
73
+
74
+ ## The 6 Demand Categories
75
+
76
+ | Category | What it captures |
77
+ |---|---|
78
+ | `feature_gap` | Functionality that does not exist yet |
79
+ | `bug_pattern` | Recurring broken behavior that erodes trust |
80
+ | `ux_complaint` | Friction, confusion, or workflow problems |
81
+ | `performance` | Slowness, timeouts, resource usage |
82
+ | `integration_missing` | Requests to connect with other tools or APIs |
83
+ | `docs_missing` | Confusion caused by absent or wrong documentation |
84
+
85
+ ## Output
86
+
87
+ Each run produces:
88
+
89
+ 1. **Demand Gap Leaderboard**: clusters ranked by total demand score
90
+ 2. **Ignored Demand section**: issues open 6+ months with 10+ reactions and no response
91
+ 3. **Top 10 Highest-Demand Issues**: verbatim titles, reaction counts, direct GitHub links
92
+ 4. **Cluster Deep Dives**: top 3 clusters with theme name, pain summary, top 3 verbatim issues
93
+ 5. **Messaging Brief**: 3 positioning angles citing exact demand evidence
94
+ 6. **GTM Angles**: 3 outreach hooks using verbatim issue language
95
+
96
+ ## Cost per Run
97
+
98
+ - GitHub API: 2 calls -- free (unauthenticated: 60/hr limit, token: 5000/hr)
99
+ - AI analysis: uses the model already running the skill -- no additional cost
100
+ - Total: free
101
+
102
+ ## Project Structure
103
+
104
+ ```
105
+ gh-issue-to-demand-signal/
106
+ ├── SKILL.md
107
+ ├── README.md
108
+ ├── .env.example
109
+ ├── evals/
110
+ │ └── evals.json
111
+ └── references/
112
+ ├── demand-categories.md
113
+ └── gtm-translation.md
114
+ ```
115
+
116
+ ## License
117
+
118
+ MIT