@opendirectory.dev/skills 0.1.64 → 0.1.65
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 +1 -112
- package/skills/brand-alchemy/README.md +1 -31
- package/skills/claude-md-generator/README.md +1 -73
- package/skills/cold-email-verifier/README.md +1 -41
- package/skills/competitor-pr-finder/README.md +1 -69
- package/skills/cook-the-blog/README.md +1 -82
- package/skills/dependency-update-bot/README.md +1 -96
- package/skills/docs-from-code/README.md +1 -93
- package/skills/email-newsletter/README.md +1 -72
- package/skills/explain-this-pr/README.md +1 -69
- package/skills/gh-issue-to-demand-signal/README.md +4 -95
- package/skills/google-trends-api-skills/README.md +1 -74
- package/skills/graphic-case-study/README.md +3 -97
- package/skills/graphic-chart/README.md +19 -0
- package/skills/graphic-ebook/README.md +3 -99
- package/skills/graphic-gif/README.md +19 -0
- package/skills/graphic-slide-deck/README.md +2 -104
- package/skills/hackernews-intel/README.md +1 -156
- package/skills/human-tone/README.md +1 -43
- package/skills/kill-the-standup/README.md +1 -79
- package/skills/linkedin-job-post-to-buyer-pain-map/README.md +3 -3
- package/skills/linkedin-post-generator/README.md +1 -103
- package/skills/llms-txt-generator/README.md +1 -138
- package/skills/luma-attendees-scraper/README.md +21 -0
- package/skills/map-your-market/README.md +1 -121
- package/skills/meeting-brief-generator/README.md +1 -85
- package/skills/meta-ads-skill/README.md +1 -67
- package/skills/meta-tribeV2-skill/README.md +3 -64
- package/skills/newsletter-digest/README.md +1 -142
- package/skills/noise-to-linkedin-carousel/README.md +21 -0
- package/skills/noise2blog/README.md +1 -102
- package/skills/npm-downloads-to-leads/README.md +12 -131
- package/skills/oss-launch-kit/README.md +21 -0
- package/skills/outreach-sequence-builder/README.md +1 -103
- package/skills/position-me/README.md +1 -65
- package/skills/pr-description-writer/README.md +1 -76
- package/skills/pricing-finder/README.md +1 -114
- package/skills/pricing-page-psychology-audit/README.md +1 -85
- package/skills/product-update-logger/README.md +4 -172
- package/skills/producthunt-launch-kit/README.md +1 -90
- package/skills/reddit-icp-monitor/README.md +1 -112
- package/skills/reddit-post-engine/README.md +1 -98
- package/skills/schema-markup-generator/README.md +1 -109
- package/skills/sdk-adoption-tracker/README.md +1 -127
- package/skills/show-hn-writer/README.md +1 -83
- package/skills/stargazer/README.md +21 -0
- package/skills/tweet-thread-from-blog/README.md +1 -104
- package/skills/twitter-GTM-find-skill/README.md +1 -37
- package/skills/vc-curated-match/README.md +21 -0
- package/skills/vc-finder/README.md +5 -98
- package/skills/vid-motion-graphics/README.md +5 -65
- package/skills/where-your-customer-lives/README.md +19 -0
- package/skills/yc-intent-radar-skill/README.md +1 -35
|
@@ -14,7 +14,7 @@ npx "@opendirectory.dev/skills" install pr-description-writer --target claude
|
|
|
14
14
|
### Video Tutorial
|
|
15
15
|
Watch this quick video to see how it's done:
|
|
16
16
|
|
|
17
|
-
https://github.com/user-attachments/assets/
|
|
17
|
+
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
18
18
|
|
|
19
19
|
### Step 1: Download the skill from GitHub
|
|
20
20
|
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
@@ -28,78 +28,3 @@ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
|
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
|
|
@@ -13,7 +13,7 @@ npx "@opendirectory.dev/skills" install pricing-finder --target claude
|
|
|
13
13
|
### Video Tutorial
|
|
14
14
|
Watch this quick video to see how it's done:
|
|
15
15
|
|
|
16
|
-
https://github.com/user-attachments/assets/
|
|
16
|
+
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
17
17
|
|
|
18
18
|
### Step 1: Download the skill from GitHub
|
|
19
19
|
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
@@ -27,116 +27,3 @@ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
|
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
|
-
```
|
|
@@ -84,7 +84,7 @@ npx @opendirectory.dev/skills install pricing-page-psychology-audit
|
|
|
84
84
|
### Video Tutorial
|
|
85
85
|
Watch this quick video to see how it's done:
|
|
86
86
|
|
|
87
|
-
https://github.com/user-attachments/assets/
|
|
87
|
+
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
88
88
|
|
|
89
89
|
### Step 1: Download the skill from GitHub
|
|
90
90
|
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
@@ -98,87 +98,3 @@ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
|
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)
|
|
@@ -13,12 +13,12 @@ npx "@opendirectory.dev/skills" install product-update-logger --target claude
|
|
|
13
13
|
### Video Tutorial
|
|
14
14
|
Watch this quick video to see how it's done:
|
|
15
15
|
|
|
16
|
-
https://github.com/user-attachments/assets/
|
|
16
|
+
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
17
17
|
|
|
18
18
|
### Step 1: Download the skill from GitHub
|
|
19
|
-
1.
|
|
20
|
-
2.
|
|
21
|
-
3.
|
|
19
|
+
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
20
|
+
2. Go to [download-directory.github.io](https://download-directory.github.io/).
|
|
21
|
+
3. Paste the URL and click **Enter** to download.
|
|
22
22
|
|
|
23
23
|
### Step 2: Install the Skill in Claude
|
|
24
24
|
1. Open your **Claude desktop app**.
|
|
@@ -27,171 +27,3 @@ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
|
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
|
-
## What It Does
|
|
32
|
-
|
|
33
|
-
- Accepts: free text items, git commits (auto-read), GitHub PRs -- any combination
|
|
34
|
-
- Filters noise: merge commits, version bumps, CI/CD, typos excluded automatically
|
|
35
|
-
- Transforms: technical commit language -> user-facing benefit language
|
|
36
|
-
- Categorizes: New / Improved / Fixed / Under the hood
|
|
37
|
-
- Generates a content package: one-liner, tweet thread, LinkedIn post, email snippet
|
|
38
|
-
- Appends a new dated entry to `docs/changelog.md` (living log, newest entry first)
|
|
39
|
-
- Saves the content package to `docs/product-updates/[date]-content.md`
|
|
40
|
-
|
|
41
|
-
## Requirements
|
|
42
|
-
|
|
43
|
-
| Requirement | Purpose | How to Set Up |
|
|
44
|
-
|---|---|---|
|
|
45
|
-
| GITHUB_TOKEN | Optional -- enables GitHub PR fetching for richer context | github.com/settings/tokens (no scopes needed) |
|
|
46
|
-
|
|
47
|
-
No other API keys required. Free text + git auto-read work with no configuration.
|
|
48
|
-
|
|
49
|
-
## Setup
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
cp .env.example .env
|
|
53
|
-
# Add GITHUB_TOKEN if you want to pull from GitHub PRs
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## How to Use
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
"We shipped dark mode and fixed the export bug this week."
|
|
60
|
-
"Log my product updates. I'm in a git repo."
|
|
61
|
-
"We launched 3 things: dark mode, faster search, fixed mobile login."
|
|
62
|
-
"Log updates from last 14 days. Repo: acme/dashboard"
|
|
63
|
-
"We shipped the onboarding redesign. Version: v2.1.0"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Include competitor names for richer channel discovery. Include ICP role + pain for accurate signal-tracing.
|
|
67
|
-
|
|
68
|
-
## What Gets Generated
|
|
69
|
-
|
|
70
|
-
### docs/changelog.md (living log)
|
|
71
|
-
|
|
72
|
-
```markdown
|
|
73
|
-
# Changelog
|
|
74
|
-
|
|
75
|
-
## Week of April 23, 2026
|
|
76
|
-
|
|
77
|
-
### New
|
|
78
|
-
- **Dark mode** -- Toggle in Settings > Appearance. Works across all views.
|
|
79
|
-
|
|
80
|
-
### Improved
|
|
81
|
-
- **Search** -- Results now load in under half a second.
|
|
82
|
-
|
|
83
|
-
### Fixed
|
|
84
|
-
- **CSV export** -- Exports no longer drop the last row.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## Week of April 14, 2026
|
|
89
|
-
...
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### docs/product-updates/[date]-content.md (content package)
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
## One-liner
|
|
96
|
-
Dark mode, faster search, and a fix for the export bug.
|
|
97
|
-
|
|
98
|
-
## Tweet Thread
|
|
99
|
-
[1/4] We shipped 3 things this week.
|
|
100
|
-
[2/4] Dark mode is live. Toggle it in Settings > Appearance.
|
|
101
|
-
...
|
|
102
|
-
|
|
103
|
-
## LinkedIn Post
|
|
104
|
-
We shipped 3 updates this week.
|
|
105
|
-
...
|
|
106
|
-
|
|
107
|
-
## Email Snippet
|
|
108
|
-
Subject: What shipped this week: dark mode + faster search
|
|
109
|
-
...
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## Input Sources
|
|
113
|
-
|
|
114
|
-
The skill pulls from all three sources automatically:
|
|
115
|
-
|
|
116
|
-
| Source | When used | How to trigger |
|
|
117
|
-
|---|---|---|
|
|
118
|
-
| Free text | Always first | Just describe what shipped in your message |
|
|
119
|
-
| Git commits | Auto-read when in a git repo | Run the skill from your project directory |
|
|
120
|
-
| GitHub PRs | When GITHUB_TOKEN + repo provided | Mention "repo: owner/repo" in your message |
|
|
121
|
-
|
|
122
|
-
All three can be combined. Overlapping items are deduplicated.
|
|
123
|
-
|
|
124
|
-
## Changelog Entry Format
|
|
125
|
-
|
|
126
|
-
Each entry follows a consistent structure:
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
## [Version label]
|
|
130
|
-
|
|
131
|
-
### New
|
|
132
|
-
- **Feature** -- Benefit sentence.
|
|
133
|
-
|
|
134
|
-
### Improved
|
|
135
|
-
- **Feature** -- Benefit sentence.
|
|
136
|
-
|
|
137
|
-
### Fixed
|
|
138
|
-
- **Feature** -- What was broken, now fixed.
|
|
139
|
-
|
|
140
|
-
### Under the hood
|
|
141
|
-
- **Component** -- Developer-relevant change only.
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Version labels default to `Week of [Month Day, Year]`. Detected semver format is preserved and incremented automatically.
|
|
145
|
-
|
|
146
|
-
## Content Rules
|
|
147
|
-
|
|
148
|
-
- **Tweets**: Under 280 chars each, no hashtags, no em dashes, active voice
|
|
149
|
-
- **LinkedIn**: No markdown formatting, no hashtags, founder voice ("We shipped" not "We are excited to announce")
|
|
150
|
-
- **Email**: 50-100 word body, subject line formula, casual and direct
|
|
151
|
-
- **One-liner**: Max 20 words, covers top 1-2 items
|
|
152
|
-
|
|
153
|
-
## Standalone Script
|
|
154
|
-
|
|
155
|
-
Run data collection without Claude. Useful for raw item discovery before analysis.
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# Git auto-read
|
|
159
|
-
python3 scripts/gather.py --since 7 --output /tmp/pul-raw.json
|
|
160
|
-
|
|
161
|
-
# Free text items
|
|
162
|
-
python3 scripts/gather.py --items "Add dark mode|Fix CSV bug" --output /tmp/pul-raw.json
|
|
163
|
-
|
|
164
|
-
# With GitHub PRs
|
|
165
|
-
GITHUB_TOKEN=your_token python3 scripts/gather.py --repo owner/repo --since 14
|
|
166
|
-
|
|
167
|
-
# Print to stdout
|
|
168
|
-
python3 scripts/gather.py --since 7 --stdout | jq '.items'
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## Project Structure
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
product-update-logger/
|
|
175
|
-
├── SKILL.md
|
|
176
|
-
├── README.md
|
|
177
|
-
├── .env.example
|
|
178
|
-
├── scripts/
|
|
179
|
-
│ └── gather.py git + GitHub + free text collector
|
|
180
|
-
├── evals/
|
|
181
|
-
│ └── evals.json 5 test cases
|
|
182
|
-
└── references/
|
|
183
|
-
├── changelog-format.md entry structure, category rules, transformation examples
|
|
184
|
-
├── content-rules.md tweet/LinkedIn/email writing rules + banned words
|
|
185
|
-
└── noise-filter.md git commit patterns to skip
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
## Cost Per Run
|
|
189
|
-
|
|
190
|
-
- Git, free text: free, no auth
|
|
191
|
-
- GitHub PRs: free with optional token
|
|
192
|
-
- AI analysis: uses the model running the skill
|
|
193
|
-
- Total: free
|
|
194
|
-
|
|
195
|
-
## License
|
|
196
|
-
|
|
197
|
-
MIT
|
|
@@ -14,7 +14,7 @@ npx "@opendirectory.dev/skills" install producthunt-launch-kit --target claude
|
|
|
14
14
|
### Video Tutorial
|
|
15
15
|
Watch this quick video to see how it's done:
|
|
16
16
|
|
|
17
|
-
https://github.com/user-attachments/assets/
|
|
17
|
+
https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
|
|
18
18
|
|
|
19
19
|
### Step 1: Download the skill from GitHub
|
|
20
20
|
1. Copy the URL of this specific skill folder from your browser's address bar.
|
|
@@ -28,92 +28,3 @@ https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067
|
|
|
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
|
-
- Generates 5 tagline variants with character counts (all under 60 chars)
|
|
35
|
-
- Writes a listing description under 500 characters
|
|
36
|
-
- Drafts a maker comment (300-400 words) that opens with the builder story, not "Hi PH!"
|
|
37
|
-
- Creates a launch day tweet thread (5-7 tweets, no hashtags)
|
|
38
|
-
- Writes a LinkedIn post for launch day
|
|
39
|
-
- Generates a 4-email sequence: existing users, newsletter, day-of reminder, follow-up
|
|
40
|
-
- Includes a launch checklist with timing and community guidelines
|
|
41
|
-
|
|
42
|
-
## Requirements
|
|
43
|
-
|
|
44
|
-
| Requirement | Purpose | How to Set Up |
|
|
45
|
-
|------------|---------|--------------|
|
|
46
|
-
| Gemini API key | All copy generation | aistudio.google.com, Get API key |
|
|
47
|
-
|
|
48
|
-
## Setup
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
cp .env.example .env
|
|
52
|
-
# Add GEMINI_API_KEY
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## How to Use
|
|
56
|
-
|
|
57
|
-
Full launch kit:
|
|
58
|
-
```
|
|
59
|
-
"Generate a Product Hunt launch kit for my product"
|
|
60
|
-
"Prepare my PH listing and launch copy"
|
|
61
|
-
"Help me launch on Product Hunt"
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Specific assets:
|
|
65
|
-
```
|
|
66
|
-
"Write my Product Hunt tagline for [product description]"
|
|
67
|
-
"Draft a maker comment for my PH launch"
|
|
68
|
-
"Write PH launch tweets"
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
From README:
|
|
72
|
-
```
|
|
73
|
-
"Generate a Product Hunt kit: my README is in this repo"
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Copy Constraints
|
|
77
|
-
|
|
78
|
-
| Asset | Limit | Notes |
|
|
79
|
-
|-------|-------|-------|
|
|
80
|
-
| Tagline | 60 chars | Hard limit, enforced by PH form |
|
|
81
|
-
| Description | 500 chars | Appears in search and email digests |
|
|
82
|
-
| Maker comment | 300-400 words | Post within 60 seconds of launch |
|
|
83
|
-
| Tweets | 280 chars each | No hashtags on technical threads |
|
|
84
|
-
|
|
85
|
-
## Maker Comment Strategy
|
|
86
|
-
|
|
87
|
-
The maker comment drives more PH success than any other single action. It should:
|
|
88
|
-
|
|
89
|
-
- Open with the real builder story (not "Hi PH! We're excited to announce...")
|
|
90
|
-
- Include at least one technical detail about how it works
|
|
91
|
-
- Acknowledge what the product does NOT do
|
|
92
|
-
- End with a specific question that invites comments
|
|
93
|
-
|
|
94
|
-
The comment goes live as your first reply to your own listing, within 60 seconds of the product going live at 12:01 AM PST.
|
|
95
|
-
|
|
96
|
-
## Launch Timing
|
|
97
|
-
|
|
98
|
-
Best days: Tuesday, Wednesday, Thursday
|
|
99
|
-
|
|
100
|
-
Avoid: Friday afternoons, holiday weeks, major tech conference days
|
|
101
|
-
|
|
102
|
-
The first 4 hours determine front page placement. Notify your audience before midnight PST on launch day so they are ready.
|
|
103
|
-
|
|
104
|
-
## Project Structure
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
producthunt-launch-kit/
|
|
108
|
-
├── SKILL.md
|
|
109
|
-
├── README.md
|
|
110
|
-
├── .env.example
|
|
111
|
-
├── evals/
|
|
112
|
-
│ └── evals.json
|
|
113
|
-
└── references/
|
|
114
|
-
└── copy-rules.md
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## License
|
|
118
|
-
|
|
119
|
-
MIT
|