@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.
Files changed (54) hide show
  1. package/package.json +1 -1
  2. package/skills/blog-cover-image-cli/README.md +112 -1
  3. package/skills/brand-alchemy/README.md +31 -1
  4. package/skills/claude-md-generator/README.md +73 -1
  5. package/skills/cold-email-verifier/README.md +41 -1
  6. package/skills/competitor-pr-finder/README.md +69 -1
  7. package/skills/cook-the-blog/README.md +82 -1
  8. package/skills/dependency-update-bot/README.md +96 -1
  9. package/skills/docs-from-code/README.md +93 -1
  10. package/skills/email-newsletter/README.md +72 -1
  11. package/skills/explain-this-pr/README.md +69 -1
  12. package/skills/gh-issue-to-demand-signal/README.md +95 -4
  13. package/skills/google-trends-api-skills/README.md +74 -1
  14. package/skills/graphic-case-study/README.md +97 -3
  15. package/skills/graphic-chart/README.md +0 -19
  16. package/skills/graphic-ebook/README.md +99 -3
  17. package/skills/graphic-gif/README.md +0 -19
  18. package/skills/graphic-slide-deck/README.md +104 -2
  19. package/skills/hackernews-intel/README.md +156 -1
  20. package/skills/human-tone/README.md +43 -1
  21. package/skills/kill-the-standup/README.md +79 -1
  22. package/skills/linkedin-job-post-to-buyer-pain-map/README.md +3 -3
  23. package/skills/linkedin-post-generator/README.md +103 -1
  24. package/skills/llms-txt-generator/README.md +138 -1
  25. package/skills/luma-attendees-scraper/README.md +0 -21
  26. package/skills/map-your-market/README.md +121 -1
  27. package/skills/meeting-brief-generator/README.md +85 -1
  28. package/skills/meta-ads-skill/README.md +67 -1
  29. package/skills/meta-tribeV2-skill/README.md +64 -3
  30. package/skills/newsletter-digest/README.md +142 -1
  31. package/skills/noise-to-linkedin-carousel/README.md +0 -21
  32. package/skills/noise2blog/README.md +102 -1
  33. package/skills/npm-downloads-to-leads/README.md +131 -12
  34. package/skills/oss-launch-kit/README.md +0 -21
  35. package/skills/outreach-sequence-builder/README.md +103 -1
  36. package/skills/position-me/README.md +65 -1
  37. package/skills/pr-description-writer/README.md +76 -1
  38. package/skills/pricing-finder/README.md +114 -1
  39. package/skills/pricing-page-psychology-audit/README.md +85 -1
  40. package/skills/product-update-logger/README.md +172 -4
  41. package/skills/producthunt-launch-kit/README.md +90 -1
  42. package/skills/reddit-icp-monitor/README.md +112 -1
  43. package/skills/reddit-post-engine/README.md +98 -1
  44. package/skills/schema-markup-generator/README.md +109 -1
  45. package/skills/sdk-adoption-tracker/README.md +127 -1
  46. package/skills/show-hn-writer/README.md +83 -1
  47. package/skills/stargazer/README.md +0 -21
  48. package/skills/tweet-thread-from-blog/README.md +104 -1
  49. package/skills/twitter-GTM-find-skill/README.md +37 -1
  50. package/skills/vc-curated-match/README.md +0 -21
  51. package/skills/vc-finder/README.md +98 -5
  52. package/skills/vid-motion-graphics/README.md +65 -5
  53. package/skills/where-your-customer-lives/README.md +0 -19
  54. 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 the skill from GitHub
17
- 1. Copy the URL of this specific skill folder from your browser's address bar.
18
- 2. Go to [download-directory.github.io](https://download-directory.github.io/).
19
- 3. Paste the URL and click **Enter** to download.
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 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).
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
- > **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!
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)