@opendirectory.dev/skills 0.1.65 → 0.1.67
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/skills/blog-cover-image-cli/README.md +112 -1
- package/skills/brand-alchemy/README.md +31 -1
- package/skills/claude-md-generator/README.md +73 -1
- package/skills/cold-email-verifier/README.md +41 -1
- package/skills/competitor-pr-finder/README.md +69 -1
- package/skills/cook-the-blog/README.md +82 -1
- package/skills/dependency-update-bot/README.md +96 -1
- package/skills/docs-from-code/README.md +93 -1
- package/skills/email-newsletter/README.md +72 -1
- package/skills/explain-this-pr/README.md +69 -1
- package/skills/gh-issue-to-demand-signal/README.md +95 -4
- package/skills/google-trends-api-skills/README.md +74 -1
- package/skills/graphic-case-study/README.md +97 -3
- package/skills/graphic-chart/README.md +0 -19
- package/skills/graphic-ebook/README.md +99 -3
- package/skills/graphic-gif/README.md +0 -19
- package/skills/graphic-slide-deck/README.md +104 -2
- package/skills/hackernews-intel/README.md +156 -1
- package/skills/human-tone/README.md +43 -1
- package/skills/kill-the-standup/README.md +79 -1
- package/skills/linkedin-job-post-to-buyer-pain-map/README.md +3 -3
- package/skills/linkedin-post-generator/README.md +103 -1
- package/skills/llms-txt-generator/README.md +138 -1
- package/skills/luma-attendees-scraper/README.md +0 -21
- package/skills/map-your-market/README.md +121 -1
- package/skills/meeting-brief-generator/README.md +85 -1
- package/skills/meta-ads-skill/README.md +67 -1
- package/skills/meta-tribeV2-skill/README.md +64 -3
- package/skills/newsletter-digest/README.md +142 -1
- package/skills/noise-to-linkedin-carousel/README.md +0 -21
- package/skills/noise2blog/README.md +102 -1
- package/skills/npm-downloads-to-leads/README.md +131 -12
- package/skills/oss-launch-kit/README.md +0 -21
- package/skills/outreach-sequence-builder/README.md +103 -1
- package/skills/position-me/README.md +65 -1
- package/skills/pr-description-writer/README.md +76 -1
- package/skills/pricing-finder/README.md +114 -1
- package/skills/pricing-page-psychology-audit/README.md +85 -1
- package/skills/product-update-logger/README.md +172 -4
- package/skills/producthunt-launch-kit/README.md +90 -1
- package/skills/reddit-icp-monitor/README.md +112 -1
- package/skills/reddit-post-engine/README.md +98 -1
- package/skills/schema-markup-generator/README.md +109 -1
- package/skills/sdk-adoption-tracker/README.md +127 -1
- package/skills/show-hn-writer/README.md +83 -1
- package/skills/stargazer/README.md +0 -21
- package/skills/tweet-thread-from-blog/README.md +104 -1
- package/skills/twitter-GTM-find-skill/README.md +37 -1
- package/skills/vc-curated-match/README.md +0 -21
- package/skills/vc-finder/README.md +98 -5
- package/skills/vid-motion-graphics/README.md +65 -5
- package/skills/where-your-customer-lives/README.md +0 -19
- package/skills/yc-intent-radar-skill/README.md +35 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# npm-downloads-to-leads
|
|
1
|
+
# npm-downloads-to-leads
|
|
2
2
|
|
|
3
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
4
|
|
|
@@ -9,19 +9,138 @@ npx "@opendirectory.dev/skills" install npm-downloads-to-leads --target claude
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
### Video Tutorial
|
|
12
|
-
Watch this quick video to see how it's done:
|
|
13
12
|
|
|
14
13
|
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
15
14
|
|
|
16
|
-
### Step 1: Download
|
|
17
|
-
1.
|
|
18
|
-
2.
|
|
19
|
-
3.
|
|
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.
|
|
20
19
|
|
|
21
|
-
### Step 2: Install
|
|
22
|
-
1. Open
|
|
23
|
-
2. Go to
|
|
24
|
-
3. Click
|
|
25
|
-
4. Choose
|
|
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.
|
|
26
25
|
|
|
27
|
-
|
|
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
|
|
@@ -25,24 +25,3 @@ Unlike single-channel generators, `oss-launch-kit` acts as the **Root Strategy L
|
|
|
25
25
|
1. It tells you **if and where** you should launch.
|
|
26
26
|
2. It provides a **timed checklist** for coordination.
|
|
27
27
|
3. It hands off to **specialized skills** for channel-specific drafting.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
## Install
|
|
31
|
-
|
|
32
|
-
### Video Tutorial
|
|
33
|
-
Watch this quick video to see how it's done:
|
|
34
|
-
|
|
35
|
-
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
36
|
-
|
|
37
|
-
### Step 1: Download the skill from GitHub
|
|
38
|
-
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
39
|
-
2. Go to [download-directory.github.io](https://download-directory.github.io/).
|
|
40
|
-
3. Paste the URL and click **Enter** to download.
|
|
41
|
-
|
|
42
|
-
### Step 2: Install the Skill in Claude
|
|
43
|
-
1. Open your **Claude desktop app**.
|
|
44
|
-
2. Go to the sidebar on the left side and click on the **Customize** section.
|
|
45
|
-
3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
|
|
46
|
-
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).
|
|
47
|
-
|
|
48
|
-
> **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!
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# outreach-sequence-builder
|
|
1
|
+
# outreach-sequence-builder
|
|
2
2
|
|
|
3
3
|
<img width="1280" height="640" alt="outreach-sequence-builder" src="https://github.com/user-attachments/assets/3d73358a-52ca-48e7-b34e-b1ba33246d6e" />
|
|
4
4
|
|
|
@@ -28,3 +28,105 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
|
28
28
|
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).
|
|
29
29
|
|
|
30
30
|
> **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!
|
|
31
|
+
|
|
32
|
+
## What It Does
|
|
33
|
+
|
|
34
|
+
- Identifies the signal type from 7 categories: Post-Fundraise, Hiring Signal, Competitor Displacement, Product Launch, Content Engagement, Event Follow-up, Job Change
|
|
35
|
+
- Loads your ICP from docs/icp.md or asks 4 questions to define target persona and pain points
|
|
36
|
+
- Develops the Insight, Bridge, Opener, and Ask for the specific signal
|
|
37
|
+
- Plans a 4-6 touchpoint channel sequence over 10-14 days
|
|
38
|
+
- Generates all messages with Gemini, enforcing hard limits (100-word emails, 300-character LinkedIn notes, 20-word phone openers)
|
|
39
|
+
- Pre-empts 2-4 objections woven into existing touchpoints
|
|
40
|
+
- Runs a 13-point QA pass before presenting the sequence
|
|
41
|
+
- Saves the sequence to docs/sequences/ and optionally drafts emails in Gmail via Composio
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
| Requirement | Purpose | How to Set Up |
|
|
46
|
+
|------------|---------|--------------|
|
|
47
|
+
| Gemini API key | Sequence generation | aistudio.google.com, Get API key |
|
|
48
|
+
| Composio API key (optional) | Gmail draft creation | app.composio.dev, API Keys |
|
|
49
|
+
|
|
50
|
+
## Setup
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
cp .env.example .env
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Fill in:
|
|
57
|
+
- `GEMINI_API_KEY` (required)
|
|
58
|
+
- `COMPOSIO_API_KEY` (optional, for Gmail draft creation)
|
|
59
|
+
|
|
60
|
+
Optional: create `docs/icp.md` with your target personas, company profile, pain points, and differentiators. If the file does not exist, the skill asks 4 questions before generating.
|
|
61
|
+
|
|
62
|
+
## How to Use
|
|
63
|
+
|
|
64
|
+
Basic sequence from a signal:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
"Build an outreach sequence for a prospect who just raised a Series B"
|
|
68
|
+
"They're hiring 8 engineers — write me a sequence"
|
|
69
|
+
"Create outreach based on this signal: they just launched a new product"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
With contact context:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
"Build an outreach sequence for Sarah Chen, VP Sales at Momentum CRM — they just raised $22M Series B"
|
|
76
|
+
"They switched from Salesforce and posted a frustrated LinkedIn comment. Write a competitor displacement sequence."
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
With Gmail drafting:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
"Build a post-fundraise sequence and draft the emails in Gmail"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Signal Types
|
|
86
|
+
|
|
87
|
+
| Signal | Definition | Window |
|
|
88
|
+
|--------|-----------|--------|
|
|
89
|
+
| Post-Fundraise | Company raised a round in the last 30 days | 48 hours from announcement |
|
|
90
|
+
| Hiring Signal | Company posted 5 or more roles in a function you serve | Within the week posts appear |
|
|
91
|
+
| Competitor Displacement | Contact is using a competitor and showing frustration | Within 24 hours |
|
|
92
|
+
| Product Launch | Company launched a new product or major feature | 2-4 weeks after launch |
|
|
93
|
+
| Content Engagement | Contact liked, commented, or shared your content | Start on LinkedIn first |
|
|
94
|
+
| Event Follow-up | You met at a conference or webinar | Within 48 hours of event |
|
|
95
|
+
| Job Change | Contact moved to a new company in the last 60 days | Within 2 weeks of announcement |
|
|
96
|
+
|
|
97
|
+
## Message Rules
|
|
98
|
+
|
|
99
|
+
- Only `{{first_name}}` is allowed as a variable. All other details must be filled in from context.
|
|
100
|
+
- Email bodies: 100 words maximum.
|
|
101
|
+
- LinkedIn notes: 300 characters maximum.
|
|
102
|
+
- Phone openers: 20 words maximum.
|
|
103
|
+
- No placeholders like `[Company Name]` or `[INSERT PAIN POINT]`. If the information is not available, the skill asks before writing.
|
|
104
|
+
|
|
105
|
+
## Output
|
|
106
|
+
|
|
107
|
+
The sequence is saved to `docs/sequences/{signal-type}.md`. Each touchpoint includes:
|
|
108
|
+
|
|
109
|
+
- Channel and day number
|
|
110
|
+
- Two subject line variants (email)
|
|
111
|
+
- Message body
|
|
112
|
+
- Word count (email) or character count (LinkedIn)
|
|
113
|
+
- Phone talk track with voicemail script
|
|
114
|
+
|
|
115
|
+
## Project Structure
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
outreach-sequence-builder/
|
|
119
|
+
├── SKILL.md
|
|
120
|
+
├── README.md
|
|
121
|
+
├── .env.example
|
|
122
|
+
├── evals/
|
|
123
|
+
│ └── evals.json
|
|
124
|
+
└── references/
|
|
125
|
+
├── signal-playbook.md
|
|
126
|
+
├── sequence-format.md
|
|
127
|
+
└── output-template.md
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
MIT
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Position-Me
|
|
1
|
+
# Position-Me
|
|
2
2
|
|
|
3
3
|
<img width="1376" height="768" alt="generated-image" src="https://github.com/user-attachments/assets/118fcd1f-1efc-4eca-b0b0-366a6f9ff5da" />
|
|
4
4
|
|
|
@@ -29,3 +29,67 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
|
29
29
|
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).
|
|
30
30
|
|
|
31
31
|
> **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!
|
|
32
|
+
|
|
33
|
+
## Core Capabilities
|
|
34
|
+
|
|
35
|
+
When invoked, the skill commands the AI agent to conduct an exhaustive teardown of the target website through a rigid protocol:
|
|
36
|
+
|
|
37
|
+
* Autonomous Navigation: Crawl the homepage, about, pricing, and blog pages.
|
|
38
|
+
* Visual Psychology: Take full page screenshots and analyze visual friction, layout flow, and cognitive load using the LIFT model.
|
|
39
|
+
* Copywriting Critique: Rewrite generic text using the PAS (Problem, Agitation, Solution) framework.
|
|
40
|
+
* Deep Content Audits: Read actual blog posts to identify fluff, grade technical depth, and offer new content strategies.
|
|
41
|
+
* Technical Readiness: Verify the presence of llms.txt, sitemap.xml, and semantic JSON-LD Schema (FAQPage, SoftwareApplication, etc) for generative search optimization.
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
The host AI agent must have access to:
|
|
46
|
+
1. A multimodal LLM capable of analyzing screenshots natively.
|
|
47
|
+
2. Chrome DevTools MCP Server (https://github.com/ChromeDevTools/chrome-devtools-mcp).
|
|
48
|
+
3. Chrome CDP Skill (https://github.com/pasky/chrome-cdp-skill).
|
|
49
|
+
4. Terminal access to run fallback Python scripts if browser automation fails.
|
|
50
|
+
|
|
51
|
+
To set up the required Chrome automation:
|
|
52
|
+
* Install and configure the Chrome DevTools MCP server in the agent MCP settings.
|
|
53
|
+
* Add the Chrome CDP skill to the agent skills directory.
|
|
54
|
+
* Ensure Chrome is running with remote debugging enabled (e.g., `chrome --remote-debugging-port=9222`).
|
|
55
|
+
|
|
56
|
+
## Installation Instructions
|
|
57
|
+
|
|
58
|
+
### For Developers (Manual Setup)
|
|
59
|
+
|
|
60
|
+
1. Clone or download the `position-me` repository.
|
|
61
|
+
2. Copy the `position-me/` directory into the agent designated skills directory.
|
|
62
|
+
3. Alternatively, extract the raw `SKILL.md` and `references/` folder into the agent custom prompt configuration.
|
|
63
|
+
|
|
64
|
+
### For AI Agents (Automated Setup)
|
|
65
|
+
|
|
66
|
+
1. Clone or download the `position-me` repository into the active project workspace.
|
|
67
|
+
2. Read directly from the `position-me/` source folder.
|
|
68
|
+
3. Add the `SKILL.md` file to the active context window or skill registry.
|
|
69
|
+
4. Verify access to the `references/EVALUATION_SOP.md` and `references/REPORT_TEMPLATE.md` files.
|
|
70
|
+
|
|
71
|
+
## Execution Protocol for Agents
|
|
72
|
+
|
|
73
|
+
Once loaded, the AI agent must strictly follow this execution loop:
|
|
74
|
+
|
|
75
|
+
1. Data Gathering: Prompt the user for the target URL.
|
|
76
|
+
2. Connect to Browser: Use the Chrome DevTools MCP combined with the Chrome CDP skill.
|
|
77
|
+
3. Multi-Page Crawl: Navigate to the homepage, pricing page, about page, and at least one blog post.
|
|
78
|
+
4. Capture Vision Context: Take screenshots of every visited page and load them into memory.
|
|
79
|
+
5. Extract DOM Context: Pull the accessibility tree, search for `llms.txt`, and verify JSON-LD schemas.
|
|
80
|
+
6. Analyze: Apply the frameworks specified in `references/EVALUATION_SOP.md`.
|
|
81
|
+
7. Report: Generate a scored, highly structured teardown using exactly the format in `references/REPORT_TEMPLATE.md`.
|
|
82
|
+
|
|
83
|
+
## Project Structure
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
position-me/
|
|
87
|
+
├── README.md # Documentation
|
|
88
|
+
└── position-me/ # Raw skill source code
|
|
89
|
+
├── SKILL.md # Master protocol
|
|
90
|
+
├── scripts/
|
|
91
|
+
│ └── extract_links.py # Fallback crawler script
|
|
92
|
+
└── references/
|
|
93
|
+
├── EVALUATION_SOP.md # Evaluation frameworks
|
|
94
|
+
└── REPORT_TEMPLATE.md # Teardown report template
|
|
95
|
+
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# pr-description-writer
|
|
1
|
+
# pr-description-writer
|
|
2
2
|
|
|
3
3
|
<img width="1280" height="640" alt="pr-description-writer" src="https://github.com/user-attachments/assets/485f5846-b621-40ac-8a99-2b50243fb454" />
|
|
4
4
|
|
|
@@ -28,3 +28,78 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
|
28
28
|
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).
|
|
29
29
|
|
|
30
30
|
> **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!
|
|
31
|
+
|
|
32
|
+
## What It Does
|
|
33
|
+
|
|
34
|
+
- Reads `git diff main...HEAD` to understand what changed
|
|
35
|
+
- Reads commit messages for context on why it changed
|
|
36
|
+
- Generates a structured PR description following a consistent format
|
|
37
|
+
- Creates a new PR with `gh pr create` or updates an existing one with `gh pr edit`
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
| Requirement | Purpose | How to Set Up |
|
|
42
|
+
|------------|---------|--------------|
|
|
43
|
+
| `gh` CLI | Creating and updating PRs | https://cli.github.com, then run `gh auth login` |
|
|
44
|
+
| Git repo with a branch | Source diff | Run from inside the repo |
|
|
45
|
+
|
|
46
|
+
No API keys needed. The agent reads the diff directly and writes the description.
|
|
47
|
+
|
|
48
|
+
## How to Use
|
|
49
|
+
|
|
50
|
+
Write a description for the current branch:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
"Write a PR description for my current branch"
|
|
54
|
+
"Draft my PR"
|
|
55
|
+
"Generate a PR description"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Create the PR at the same time:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
"Create a PR for this branch with a good description"
|
|
62
|
+
"Open a PR and write the description"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Update an existing PR's description:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
"Update my PR description"
|
|
69
|
+
"Rewrite the PR body based on the latest changes"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Output only, no gh commands:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
"Write a PR description but just give me the text"
|
|
76
|
+
"Draft the PR description, I'll paste it myself"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Output Format
|
|
80
|
+
|
|
81
|
+
Every generated description includes:
|
|
82
|
+
|
|
83
|
+
| Section | Content |
|
|
84
|
+
|---------|---------|
|
|
85
|
+
| Summary | 1-2 sentences on what this PR does and why |
|
|
86
|
+
| Changes | Specific bullets, one per logical change, starting with a verb |
|
|
87
|
+
| Testing | Actionable steps to verify the change works |
|
|
88
|
+
| Screenshots | Only for UI changes |
|
|
89
|
+
| Linked Issues | Only if the branch fixes a tracked issue |
|
|
90
|
+
|
|
91
|
+
## Project Structure
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
pr-description-writer/
|
|
95
|
+
├── SKILL.md
|
|
96
|
+
├── README.md
|
|
97
|
+
├── evals/
|
|
98
|
+
│ └── evals.json
|
|
99
|
+
└── references/
|
|
100
|
+
└── pr-format-guide.md
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## License
|
|
104
|
+
|
|
105
|
+
MIT
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# pricing-finder
|
|
1
|
+
# pricing-finder
|
|
2
2
|
|
|
3
3
|
Tell it what your product is (URL or description). It finds 5 competitors globally, fetches their actual pricing pages, and returns a complete pricing intelligence report: the dominant pricing model in your space, a benchmark price table, feature gate analysis, a competitive positioning map, and a concrete recommended pricing strategy for your product.
|
|
4
4
|
|
|
@@ -27,3 +27,116 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
|
27
27
|
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).
|
|
28
28
|
|
|
29
29
|
> **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!
|
|
30
|
+
|
|
31
|
+
## Setup
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install free Python dependencies (required)
|
|
35
|
+
pip install ddgs requests beautifulsoup4 html2text
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
No API keys needed. Optionally add keys to `.env` for better quality:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cp .env.example .env
|
|
42
|
+
# Uncomment TAVILY_API_KEY or FIRECRAWL_API_KEY if you have them
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Usage
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Find pricing benchmarks for my startup: https://yourstartup.com
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or paste a description if you don't have a live URL:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Find pricing benchmarks. We build [what you do] for [who]. [Stage], [geography].
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## What It Does
|
|
58
|
+
|
|
59
|
+
1. Fetches your product page to understand what you're building
|
|
60
|
+
2. Analyzes your product: category, differentiators, ICP
|
|
61
|
+
3. Discovers 5 competitors in your space via DuckDuckGo search
|
|
62
|
+
4. **Asks you to confirm the competitor list** before fetching any data
|
|
63
|
+
5. Fetches each competitor's pricing page (3-tier fallback: direct fetch → Google cache → search snippet)
|
|
64
|
+
6. Extracts structured pricing data: tiers, prices, limits, feature gates
|
|
65
|
+
7. Analyzes patterns across all 5 competitors
|
|
66
|
+
8. Maps competitive positioning and identifies underserved gaps
|
|
67
|
+
9. Recommends a concrete pricing strategy for your product
|
|
68
|
+
|
|
69
|
+
## Output
|
|
70
|
+
|
|
71
|
+
A pricing intel report saved to `docs/pricing-intel/[product-slug]-[date].md` containing:
|
|
72
|
+
|
|
73
|
+
- **Pricing Model Analysis** -- dominant model in your space (per-seat / flat-rate / usage-based / freemium) and why
|
|
74
|
+
- **Price Point Benchmark Table** -- every competitor's tiers with exact prices, free tier, free trial
|
|
75
|
+
- **Market ranges** -- entry tier median, mid tier median, enterprise floor
|
|
76
|
+
- **Feature Gate Analysis** -- what's always free, what's always paid, what varies
|
|
77
|
+
- **Competitive Positioning Map** -- who owns cheap+simple, middle market, enterprise, and where the gap is
|
|
78
|
+
- **Recommended Pricing Strategy** -- model, entry price, mid price, top price, free tier decision, annual discount, what to gate behind paid
|
|
79
|
+
|
|
80
|
+
## Cost
|
|
81
|
+
|
|
82
|
+
**$0.00.** Entirely free using pip dependencies.
|
|
83
|
+
|
|
84
|
+
Optional API upgrades:
|
|
85
|
+
- Tavily API (free tier: 1000 credits/month) -- better search results
|
|
86
|
+
- Firecrawl API (free tier: 500 credits/month) -- better JS-heavy page rendering
|
|
87
|
+
|
|
88
|
+
## Zero-Hallucination Policy
|
|
89
|
+
|
|
90
|
+
Every price in the output traces to fetched pricing page content or a search snippet. "Contact Sales" is recorded exactly -- never estimated. Fields that could not be sourced are labeled "not found in page data." Low-quality data (search snippets) is explicitly flagged so you know which competitors to verify manually.
|
|
91
|
+
|
|
92
|
+
## How Pricing Page Fetching Works
|
|
93
|
+
|
|
94
|
+
The script tries three methods per competitor, in order:
|
|
95
|
+
|
|
96
|
+
1. **Direct fetch** (`requests` + `beautifulsoup4` + `html2text`) -- works for most pricing pages since companies make them SEO-friendly and server-rendered
|
|
97
|
+
2. **Google cache** -- fallback for recently-changed pages or soft blocks
|
|
98
|
+
3. **Search snippet** -- last resort; marks data quality as "low" in the output
|
|
99
|
+
|
|
100
|
+
If you have a Firecrawl API key, it replaces step 1 with a fully JS-rendered fetch.
|
|
101
|
+
|
|
102
|
+
## Project Structure
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
pricing-finder/
|
|
106
|
+
├── SKILL.md -- 10-step workflow for Claude Code
|
|
107
|
+
├── README.md -- this file
|
|
108
|
+
├── .env.example -- optional API key template
|
|
109
|
+
├── requirements.txt -- free pip dependencies
|
|
110
|
+
├── scripts/
|
|
111
|
+
│ └── research.py -- two-phase data collector
|
|
112
|
+
├── evals/
|
|
113
|
+
│ └── evals.json -- 5 test cases
|
|
114
|
+
└── references/
|
|
115
|
+
├── pricing-models.md -- per-seat, flat, usage, freemium definitions + signals
|
|
116
|
+
├── extraction-guide.md -- how to read a pricing page
|
|
117
|
+
└── positioning-guide.md -- how to map competitors and find gaps
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Standalone Script Usage
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Phase 1: competitor discovery
|
|
124
|
+
python3 scripts/research.py \
|
|
125
|
+
--phase discover \
|
|
126
|
+
--product-analysis /tmp/pf-product-analysis.json \
|
|
127
|
+
--output /tmp/pf-competitors-raw.json
|
|
128
|
+
|
|
129
|
+
# Phase 2: fetch pricing pages
|
|
130
|
+
python3 scripts/research.py \
|
|
131
|
+
--phase fetch-pricing \
|
|
132
|
+
--competitors /tmp/pf-competitors-confirmed.json \
|
|
133
|
+
--output /tmp/pf-pricing-raw.json
|
|
134
|
+
|
|
135
|
+
# With optional API key upgrades
|
|
136
|
+
python3 scripts/research.py \
|
|
137
|
+
--phase fetch-pricing \
|
|
138
|
+
--competitors /tmp/pf-competitors-confirmed.json \
|
|
139
|
+
--firecrawl-key "$FIRECRAWL_API_KEY" \
|
|
140
|
+
--tavily-key "$TAVILY_API_KEY" \
|
|
141
|
+
--output /tmp/pf-pricing-raw.json
|
|
142
|
+
```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1280&h=640&fit=crop&q=80" width="100%" alt="cover" />
|
|
1
|
+
<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1280&h=640&fit=crop&q=80" width="100%" alt="cover" />
|
|
2
2
|
|
|
3
3
|
# pricing-page-psychology-audit
|
|
4
4
|
|
|
@@ -98,3 +98,87 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
|
98
98
|
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).
|
|
99
99
|
|
|
100
100
|
> **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!
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Usage
|
|
105
|
+
|
|
106
|
+
### Basic audit:
|
|
107
|
+
```
|
|
108
|
+
"Use pricing-page-psychology-audit to audit https://linear.app/pricing"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### More examples:
|
|
112
|
+
```
|
|
113
|
+
"Audit the pricing page at https://notion.so/pricing"
|
|
114
|
+
"Run a psychology audit on https://vercel.com/pricing"
|
|
115
|
+
"What's wrong with https://stripe.com/pricing from a psychology perspective?"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Example Output
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
# Pricing Page Psychology Audit
|
|
124
|
+
**URL:** https://linear.app/pricing
|
|
125
|
+
**Audited on:** 2026-04-18
|
|
126
|
+
**Overall Score:** 9/12 principles passing
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Audit Results
|
|
131
|
+
|
|
132
|
+
### 1. Anchoring — ✅ Pass
|
|
133
|
+
**What we found:** Enterprise plan is listed last but priced highest at
|
|
134
|
+
custom pricing, creating an anchor that makes the $16/seat Business plan
|
|
135
|
+
feel accessible.
|
|
136
|
+
**Suggestion:** Consider moving Enterprise to first position for stronger
|
|
137
|
+
anchoring effect.
|
|
138
|
+
|
|
139
|
+
### 2. Decoy Effect — ⚠️ Needs Work
|
|
140
|
+
**What we found:** The Business tier exists between Free and Enterprise
|
|
141
|
+
but is not clearly positioned as the "sweet spot."
|
|
142
|
+
**Suggestion:** Add a "Most Popular" badge to Business and increase visual
|
|
143
|
+
size to activate the decoy effect.
|
|
144
|
+
|
|
145
|
+
[... 10 more principles ...]
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 🏆 Top 3 Quick Wins
|
|
150
|
+
|
|
151
|
+
**Quick Win #1 — CTA Button Copy**
|
|
152
|
+
Current: "Get started"
|
|
153
|
+
Rewrite to: "Start shipping faster — free"
|
|
154
|
+
Why: Action-outcome CTAs convert 14% higher than generic "Get started" copy.
|
|
155
|
+
|
|
156
|
+
**Quick Win #2 — Social Proof Placement**
|
|
157
|
+
Current: Logos shown on a separate /customers page
|
|
158
|
+
Rewrite to: Add 3 customer logos directly below the pricing tiers
|
|
159
|
+
Why: Social proof near the decision point reduces purchase anxiety.
|
|
160
|
+
|
|
161
|
+
**Quick Win #3 — Guarantee / Trust Signal**
|
|
162
|
+
Current: No guarantee mentioned on pricing page
|
|
163
|
+
Rewrite to: Add "30-day money-back guarantee. No questions asked." below CTAs
|
|
164
|
+
Why: Guarantees have been shown to increase conversion by up to 21%.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Project Structure
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
pricing-page-psychology-audit/
|
|
173
|
+
├── SKILL.md ← AI instructions (the brain)
|
|
174
|
+
├── README.md ← This file
|
|
175
|
+
├── .env.example ← No API keys required
|
|
176
|
+
└── scripts/
|
|
177
|
+
└── scrape_pricing.py ← Python scraper (requests + BeautifulSoup)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
|
|
184
|
+
MIT — Built by [@ajaycodesitbetter](https://github.com/ajaycodesitbetter)
|