@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
- # graphic-slide-deck
1
+ # graphic-slide-deck
2
2
 
3
3
  Generate a professionally designed HTML slide deck from a brief, content notes, or an existing PowerPoint. Outputs a browser-ready presentation + optional PDF. Supports 13 named layout types and 8 business style presets.
4
4
 
@@ -24,4 +24,106 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
24
24
  3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
25
25
  4. Choose the option to **Upload a skill**, and drag and drop the `.zip` file (or you can extract it and drop the folder, both work).
26
26
 
27
- > **Note:** For some skills (like `position-me`), the `SKILL.md` file might be located inside a subfolder. Always make sure you are uploading the specific folder that contains the `SKILL.md` file!
27
+ > **Note:** Make sure you upload the folder that contains the `SKILL.md` file directly.
28
+
29
+ ---
30
+
31
+ ## What it does
32
+
33
+ - Asks the questions that determine how a deck should be structured
34
+ - Plans the slide sequence with named layout types for each slide
35
+ - Generates a single self-contained HTML file -- opens in any browser, no build tools
36
+ - Splits into per-slide HTML files for individual sharing or editing
37
+ - Exports a PDF via Playwright (renders animations to final state)
38
+ - Optionally deploys to a live URL via Vercel for phone/tablet sharing
39
+ - Converts existing PowerPoint files to HTML
40
+
41
+ ## Example
42
+
43
+ > "Create a 12-slide Series A investor deck for DataPulse. Audience: Series A VCs. Style: midnight-editorial."
44
+
45
+ Output: 12-slide HTML presentation, per-slide HTML files, and a PDF -- covering problem/solution/traction/team/market/ask.
46
+
47
+ ---
48
+
49
+ ## Supported Styles
50
+
51
+ | Style | Best for |
52
+ |---|---|
53
+ | midnight-editorial | Investor decks, premium B2B, thought leadership |
54
+ | matt-gray | Internal decks, operational reviews, mixed audiences |
55
+ | clean-slate | Sales decks, customer-facing, enterprise-safe |
56
+ | brutalist | Startup pitches, design-forward, tech conferences |
57
+ | mint-pixel-corporate | SaaS sales, product demos, growth-stage pitches |
58
+ | product-minimal | Product demos, feature showcases, design audiences |
59
+ | magazine-red | Marketing reports, campaign reviews, bold internal |
60
+ | soft-cloud | Onboarding, customer education, approachable SaaS |
61
+
62
+ ---
63
+
64
+ ## Supported Layouts
65
+
66
+ | Layout | Use case |
67
+ |---|---|
68
+ | title-hero | Opening slide -- large headline + subtext |
69
+ | section-divider | Section break -- bold label, minimal design |
70
+ | text-full | Headers + bullet points or paragraphs |
71
+ | text-left-image-right | Side-by-side: text column + visual |
72
+ | image-left-text-right | Side-by-side: image first, text second |
73
+ | two-column-text | Comparisons, pros/cons, before/after |
74
+ | image-full | Full-bleed image with optional caption overlay |
75
+ | image-grid | 2x2 or 3x2 grid of images or screenshots |
76
+ | stat-highlight | 2-4 large KPI metrics (the unmissable slide) |
77
+ | quote-callout | Pull quote with attribution |
78
+ | comparison-table | Feature or option comparison grid |
79
+ | timeline | Horizontal or vertical milestones |
80
+ | closing-cta | Final slide -- CTA, contact info, next steps |
81
+
82
+ ---
83
+
84
+ ## Output
85
+
86
+ | File | What it is |
87
+ |---|---|
88
+ | `deck/[name]-slides/index.html` | Full presentation, browser-ready |
89
+ | `deck/[name]-slides/slide-001.html` ... | Per-slide HTML files for individual sharing |
90
+ | `deck/[name].pdf` | PDF export (if requested) |
91
+ | Live URL | Deployed Vercel URL (if requested) |
92
+
93
+ Slides are 1920x1080px (16:9) by default. 1:1 (1080x1080) available for LinkedIn.
94
+
95
+ ---
96
+
97
+ ## Parameters
98
+
99
+ | Param | Required | Notes |
100
+ |---|---|---|
101
+ | purpose | Yes | investor pitch / sales call / conference talk / internal / onboarding |
102
+ | audience | Yes | VCs, prospects, your team, executives, conference room |
103
+ | topic_or_content | Yes | Freeform brief, notes, URL, or uploaded file |
104
+ | key_message | No | Single sentence the audience must remember |
105
+ | slide_count | No | Default: 12 |
106
+ | style | No | One of 8 named presets or "show me options" (default: clean-slate) |
107
+ | aspect_ratio | No | 16:9 or 1:1 (default: 16:9) |
108
+ | inline_editing | No | Yes/No -- editable in-browser (default: No) |
109
+ | output_format | No | HTML only / HTML+PDF / HTML+PDF+deploy (default: HTML+PDF) |
110
+ | deck_name | No | Slug for file/folder naming (derived from topic if omitted) |
111
+
112
+ ---
113
+
114
+ ## Dependencies
115
+
116
+ This skill requires the `frontend-slides` skill files at:
117
+ `/Users/ksd/Desktop/Varnan_skills/frontend-slides/`
118
+
119
+ Specifically:
120
+ - `viewport-base.css` -- responsive slide foundation (included verbatim in generated HTML)
121
+ - `html-template.md` -- SlidePresentation class and inline editing system
122
+ - `animation-patterns.md` -- entrance animations and background effects
123
+ - `scripts/export-pdf.sh` -- PDF export via Playwright (Node.js required, auto-installs)
124
+ - `scripts/deploy.sh` -- Vercel deployment (Node.js required)
125
+ - `scripts/extract-pptx.py` -- PowerPoint content extraction (Python + `python-pptx` required)
126
+
127
+ ## No API keys required
128
+
129
+ Pure AI skill. No external services, no scraping, no dependencies to install beyond the above.
@@ -1,4 +1,4 @@
1
- # hackernews-intel
1
+ # hackernews-intel
2
2
 
3
3
  <img width="1280" height="640" alt="hackernews-intel" src="https://github.com/user-attachments/assets/8d75cba9-7c2b-4693-8365-00779ed2b3d3" />
4
4
 
@@ -28,3 +28,158 @@ 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
+ - Fetches new posts from HN using the free Algolia search API (no API key needed)
35
+ - Checks each match against a local SQLite cache and never alerts on the same post twice
36
+ - Sends a Slack notification with title, URL, points, and comment count
37
+ - Supports dry-run mode to preview matches without sending alerts
38
+ - Configurable lookback window, minimum points threshold, and comment inclusion
39
+
40
+ ## Requirements
41
+
42
+ | Requirement | Purpose | Where to Get It |
43
+ |------------|---------|-----------------|
44
+ | HN_KEYWORDS | Keywords to monitor | Set in .env, comma-separated list |
45
+ | SLACK_WEBHOOK | Slack alerts | https://api.slack.com/apps, Incoming Webhooks |
46
+ | Node.js 20+ | Running the script | https://nodejs.org |
47
+
48
+ No API key needed for Hacker News. The HN Algolia API is free and public.
49
+
50
+ ## Setup
51
+
52
+ ### 1. Install dependencies
53
+
54
+ ```bash
55
+ cd hackernews-intel
56
+ npm install
57
+ ```
58
+
59
+ ### 2. Configure environment variables
60
+
61
+ ```bash
62
+ cp .env.example .env
63
+ ```
64
+
65
+ Edit `.env`:
66
+
67
+ ```bash
68
+ HN_KEYWORDS=claude code,LLM agents,deno runtime
69
+ SLACK_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
70
+ HN_MIN_POINTS=0
71
+ ```
72
+
73
+ ### 3. Create a Slack webhook
74
+
75
+ 1. Go to https://api.slack.com/apps and create or select your app
76
+ 2. Enable "Incoming Webhooks" in the app settings
77
+ 3. Add a webhook to your workspace and select the target channel
78
+ 4. Copy the webhook URL (starts with `https://hooks.slack.com/services/`)
79
+ 5. Set it as `SLACK_WEBHOOK` in `.env`
80
+
81
+ ## How to Use
82
+
83
+ Preview the last 7 days without sending alerts:
84
+
85
+ ```bash
86
+ npm run dry-run:week
87
+ # or
88
+ node scripts/monitor-hn.js --dry-run --days=7
89
+ ```
90
+
91
+ Live run:
92
+
93
+ ```bash
94
+ npm run monitor
95
+ # or
96
+ node scripts/monitor-hn.js
97
+ ```
98
+
99
+ Schedule via cron (every 4 hours):
100
+
101
+ ```bash
102
+ crontab -e
103
+ # Add:
104
+ 0 */4 * * * cd /path/to/hackernews-intel && node scripts/monitor-hn.js >> /tmp/hn-intel.log 2>&1
105
+ ```
106
+
107
+ Schedule via GitHub Actions:
108
+
109
+ ```yaml
110
+ name: HN Intel Monitor
111
+ on:
112
+ schedule:
113
+ - cron: '0 */4 * * *'
114
+ workflow_dispatch:
115
+ jobs:
116
+ monitor:
117
+ runs-on: ubuntu-latest
118
+ steps:
119
+ - uses: actions/checkout@v4
120
+ - uses: actions/setup-node@v4
121
+ with:
122
+ node-version: '20'
123
+ - run: npm install
124
+ - run: node scripts/monitor-hn.js
125
+ env:
126
+ HN_KEYWORDS: ${{ secrets.HN_KEYWORDS }}
127
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
128
+ ```
129
+
130
+ Add `HN_KEYWORDS` and `SLACK_WEBHOOK` as repository secrets.
131
+
132
+ ## Slack Alert Format
133
+
134
+ Each alert looks like:
135
+
136
+ ```
137
+ Story Title Here
138
+ 47 points 23 comments authorname
139
+ Keyword: claude code | HN discussion
140
+ ```
141
+
142
+ ## Options
143
+
144
+ | Variable | Default | Purpose |
145
+ |----------|---------|---------|
146
+ | `HN_KEYWORDS` | required | Comma-separated keywords |
147
+ | `SLACK_WEBHOOK` | required | Slack Incoming Webhook URL |
148
+ | `HN_MIN_POINTS` | `0` | Minimum points to alert |
149
+ | `HN_INCLUDE_COMMENTS` | `false` | Also monitor HN comments |
150
+ | `HN_DB_PATH` | `./hn-intel.db` | SQLite cache file path |
151
+
152
+ ## CLI Flags
153
+
154
+ | Flag | Purpose |
155
+ |------|---------|
156
+ | `--dry-run` | Preview matches without sending Slack alerts |
157
+ | `--days=N` | Lookback window for the first run (default: 1) |
158
+ | `--reset` | Clear the cache and start fresh |
159
+
160
+ ## GitHub Actions Note
161
+
162
+ GitHub Actions does not persist files between workflow runs. The SQLite cache resets on each run, and the script re-fetches the last 1 day of posts every time. Posts from the previous run will be alerted again.
163
+
164
+ To fix this, either:
165
+ - Store `hn-intel.db` in an S3 bucket and download/upload it around the script run
166
+ - Use a self-hosted runner with persistent storage
167
+ - Use a cron job on your own machine instead
168
+
169
+ ## Project Structure
170
+
171
+ ```
172
+ hackernews-intel/
173
+ ├── SKILL.md
174
+ ├── README.md
175
+ ├── .env.example
176
+ ├── package.json
177
+ ├── evals/
178
+ │ └── evals.json
179
+ └── scripts/
180
+ └── monitor-hn.js
181
+ ```
182
+
183
+ ## License
184
+
185
+ MIT
@@ -1,4 +1,4 @@
1
- <img width="1280" height="640" alt="human-tone-skill-cover-image" src="https://github.com/user-attachments/assets/aa2c99dc-87a6-490e-a989-21fd6a2bbc9a" />
1
+ <img width="1280" height="640" alt="human-tone-skill-cover-image" src="https://github.com/user-attachments/assets/aa2c99dc-87a6-490e-a989-21fd6a2bbc9a" />
2
2
 
3
3
  # Human Tone
4
4
 
@@ -30,3 +30,45 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
30
30
  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).
31
31
 
32
32
  > **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!
33
+
34
+ ## What It Fixes
35
+
36
+ * Removes words like "streamline", "empower", and "revolutionize".
37
+ * Stops the AI from starting emails with "I hope this finds you well".
38
+ * Forces the AI to replace vague claims with specific numbers and outcomes.
39
+ * Fixes the rigid sentence structures that make AI text obvious.
40
+
41
+ ## Installation
42
+
43
+ You can install this skill directly into your AI agent environment using the OpenDirectory command line tool.
44
+
45
+ ### Option 1: Quick Install
46
+
47
+ Run this command in your terminal to install it directly without downloading the whole directory:
48
+
49
+ ```bash
50
+ npx "@opendirectory.dev/skills" install human-tone --target opencode
51
+ ```
52
+
53
+ Note: You can change `--target opencode` to `--target claude` or `--target cursor` depending on which AI assistant you use.
54
+
55
+ ### Option 2: Global Install
56
+
57
+ If you plan to browse and install multiple skills, you can install the tool globally on your computer:
58
+
59
+ ```bash
60
+ npm install -g @opendirectory.dev/skills
61
+ opendirectory install human-tone --target opencode
62
+ ```
63
+
64
+ ## How to Use It
65
+
66
+ Once the skill is installed in your workspace, simply ask your AI to humanize your copy.
67
+
68
+ **Basic usage:**
69
+ > "Take this draft for a cold email and run it through the human-tone skill. Make it short and direct."
70
+
71
+ **Advanced usage (Matching a specific voice):**
72
+ > "Rewrite this landing page copy using the human-tone skill. Match the writing style in this sample: [paste a sample of your writing]."
73
+
74
+ The AI will rewrite the text, provide a bulleted list of what it changed, and flag any placeholders where you need to insert real numbers or actual customer names.
@@ -1,4 +1,4 @@
1
- # kill-the-standup
1
+ # kill-the-standup
2
2
 
3
3
  <img width="1280" height="640" alt="kill-the-standup" src="https://github.com/user-attachments/assets/4fcf306d-7ef9-455a-b5f1-02532c292f65" />
4
4
 
@@ -28,3 +28,81 @@ 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
+ - Fetches yesterday's Linear issues assigned to you (completed and in-progress)
35
+ - Fetches yesterday's GitHub commits from your configured repo
36
+ - Formats a three-section standup: Done, Doing, Blockers
37
+ - Posts to your Slack channel via Incoming Webhook
38
+
39
+ ## Requirements
40
+
41
+ | Requirement | Purpose | How to Set Up |
42
+ |------------|---------|--------------|
43
+ | Linear API key | Fetching your issues | Linear, Settings, API, Personal API keys |
44
+ | Slack Incoming Webhook | Posting the standup | api.slack.com/apps, Your App, Incoming Webhooks |
45
+ | `gh` CLI (optional) | Fetching GitHub commits | https://cli.github.com, then run `gh auth login` |
46
+
47
+ No LLM API key needed. The agent reads your activity directly.
48
+
49
+ ## Setup
50
+
51
+ ```bash
52
+ cp .env.example .env
53
+ ```
54
+
55
+ Edit `.env` and fill in:
56
+ - `LINEAR_API_KEY` (required)
57
+ - `SLACK_WEBHOOK_URL` (required)
58
+ - `GITHUB_REPO` (optional, format: `owner/repo`)
59
+ - `GITHUB_USERNAME` (optional, defaults to your gh auth username)
60
+
61
+ ## How to Use
62
+
63
+ Write and post standup:
64
+
65
+ ```
66
+ "Write my standup"
67
+ "Post my standup to Slack"
68
+ "Generate standup update"
69
+ ```
70
+
71
+ Output only, no Slack post:
72
+
73
+ ```
74
+ "Write my standup but don't post it"
75
+ "What did I do yesterday?"
76
+ "Give me my standup text"
77
+ ```
78
+
79
+ ## Output Format
80
+
81
+ ```
82
+ Done
83
+ - [ENG-123] Fix session timeout bug
84
+ - fix: remove duplicate middleware registration
85
+
86
+ Doing
87
+ - [ENG-124] Migrate auth to OAuth2
88
+
89
+ Blockers
90
+ No blockers.
91
+ ```
92
+
93
+ ## Project Structure
94
+
95
+ ```
96
+ kill-the-standup/
97
+ ├── SKILL.md
98
+ ├── README.md
99
+ ├── .env.example
100
+ ├── evals/
101
+ │ └── evals.json
102
+ └── references/
103
+ └── standup-format.md
104
+ ```
105
+
106
+ ## License
107
+
108
+ MIT
@@ -1,4 +1,4 @@
1
- # linkedin-job-post-to-buyer-pain-map
1
+ # linkedin-job-post-to-buyer-pain-map
2
2
 
3
3
  <img src="cover.png" width="100%" alt="LinkedIn Job Post to Buyer Pain Map — Signal Decoder for GTM Teams" />
4
4
 
@@ -123,7 +123,7 @@ linkedin-job-post-to-buyer-pain-map/
123
123
 
124
124
  MIT
125
125
 
126
- ## Install
126
+ ## Installation in Claude Desktop App
127
127
 
128
128
  ### Video Tutorial
129
129
  Watch this quick video to see how it's done:
@@ -141,4 +141,4 @@ https://github.com/user-attachments/assets/cea8b565-2002-4a87-8857-d902bfcfdc1c
141
141
  3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
142
142
  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).
143
143
 
144
- > **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!
144
+ > **Note:** Always make sure you are uploading the specific folder that contains the `SKILL.md` file!
@@ -1,4 +1,4 @@
1
- # linkedin-post-generator
1
+ # linkedin-post-generator
2
2
 
3
3
  <img width="1376" height="768" alt="LinkedIn_post_generator" src="https://github.com/user-attachments/assets/dc71e06b-8b3c-486a-adbf-d56a7b22cdc1" />
4
4
 
@@ -27,3 +27,105 @@ 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
+ ## Post Styles
32
+
33
+ | Style | Use When | Example Input |
34
+ |-------|----------|---------------|
35
+ | Founder/Ship | Personal story of building or shipping | "We merged our streaming SDK after 3 weeks" |
36
+ | Insight | Educational observation or lesson | Blog article, pattern you noticed, lesson learned |
37
+ | Product Launch | Announcing a new tool or feature | PR description, launch brief, feature going GA |
38
+ | Tutorial Summary | Distilling a long technical post | Tutorial URL, deep-dive article, step-by-step guide |
39
+
40
+ The agent auto-detects the right style. You override it by asking for a specific one.
41
+
42
+ ## Requirements
43
+
44
+ No LLM API key needed. The agent writes the post.
45
+
46
+ Composio is optional. Add it to post directly to LinkedIn.
47
+
48
+ ## Setup
49
+
50
+ ### Composio (Optional)
51
+
52
+ Without Composio, the agent outputs formatted text for copy-paste. No configuration needed.
53
+
54
+ To enable direct posting:
55
+ 1. Get your API key at https://app.composio.dev/settings
56
+ 2. Connect your LinkedIn account at https://app.composio.dev/app/linkedin
57
+ 3. Complete the OAuth flow
58
+ 4. Add the key to your .env file:
59
+
60
+ ```bash
61
+ cp .env.example .env
62
+ # Edit .env and add your COMPOSIO_API_KEY
63
+ ```
64
+
65
+ ## How to Use
66
+
67
+ From a URL:
68
+ ```
69
+ "Turn this into a LinkedIn post: https://yourblog.com/my-post"
70
+ "Write a LinkedIn post about this article: [URL]"
71
+ ```
72
+
73
+ From pasted text:
74
+ ```
75
+ "Here's a case study, turn it into a LinkedIn post: [paste text]"
76
+ "Convert this to a LinkedIn post: [paste article]"
77
+ ```
78
+
79
+ From a PR or shipped feature:
80
+ ```
81
+ "Write a LinkedIn post about this PR we merged: [paste PR description]"
82
+ "Announce our new feature on LinkedIn: [describe the feature]"
83
+ ```
84
+
85
+ With a style override:
86
+ ```
87
+ "Write a LinkedIn post in Tutorial Summary style about: [topic]"
88
+ "Use the Product Launch style for this: [description]"
89
+ ```
90
+
91
+ With direct posting:
92
+ ```
93
+ "Post this to LinkedIn: [paste content]"
94
+ "Generate and post a LinkedIn update about [topic]"
95
+ ```
96
+
97
+ ## Output
98
+
99
+ | Output | Description |
100
+ |--------|-------------|
101
+ | LinkedIn post | Formatted text, 900-1,300 characters, ready to publish |
102
+ | First comment | Text with source links. Post this immediately after publishing. |
103
+ | Hook alternatives | 2 additional hook lines in different formats |
104
+ | Posted confirmation | If Composio is configured and you confirm posting |
105
+
106
+ ## How Posts Are Formatted
107
+
108
+ Four rules drive every post the agent writes:
109
+
110
+ - Hook first. The first line is all most people see. It works standalone.
111
+ - Short paragraphs. 1-3 lines, then a blank line. LinkedIn is mobile-first.
112
+ - Links in the first comment. URLs in the post body reduce LinkedIn's distribution.
113
+ - Question or CTA at the end. One or the other, not both.
114
+
115
+ ## Project Structure
116
+
117
+ ```
118
+ linkedin-post-generator/
119
+ ├── SKILL.md
120
+ ├── README.md
121
+ ├── .env.example
122
+ ├── evals/
123
+ │ └── evals.json
124
+ └── references/
125
+ ├── linkedin-format.md
126
+ └── output-template.md
127
+ ```
128
+
129
+ ## License
130
+
131
+ MIT
@@ -1,4 +1,4 @@
1
- # llms-txt-generator
1
+ # llms-txt-generator
2
2
 
3
3
  <img width="1376" height="768" alt="llms-txt-generator" src="https://github.com/user-attachments/assets/7f549d0b-4d55-40a8-97c6-59510cc40b54" />
4
4
 
@@ -27,3 +27,140 @@ 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
+ ## What It Does
32
+
33
+ The skill crawls your website using Chrome DevTools, reads your actual pages, and produces a clean `llms.txt` file in the format specified by [Jeremy Howard's llms.txt standard](https://llmstxt.org). When AI agents (Claude, ChatGPT, Gemini) visit your site, they read `llms.txt` first to understand what you are and where to find authoritative content.
34
+
35
+ **Without llms.txt:** AI agents guess, hallucinate, or cite competitors instead.
36
+ **With llms.txt:** AI agents cite your product correctly and know exactly where your docs, blog, and key pages live.
37
+
38
+ ## Two Modes
39
+
40
+ ### Codebase Mode (no Chrome needed)
41
+ If you're inside a website's repo, the skill reads your source files directly pages, routes, blog posts, frontmatter, site config. It writes `llms.txt` straight to `public/` when you approve. No browser required.
42
+
43
+ Supported frameworks: **Next.js** (pages + app router), **Astro**, **Nuxt**, **Gatsby**, **SvelteKit**, **Hugo**, **Jekyll**
44
+
45
+ ### Live Site Mode (Chrome or fetch fallback)
46
+ If you only have the URL, the skill crawls the live site using Chrome DevTools MCP. Falls back to standard web fetch if Chrome isn't available.
47
+
48
+ ---
49
+
50
+ ## Requirements
51
+
52
+ **Codebase Mode:** No extra setup. Just be inside the repo directory.
53
+
54
+ **Live Site Mode:**
55
+ - Chrome with remote debugging enabled (or any live URL skill will fall back to web fetch)
56
+ - Chrome DevTools MCP server configured in your agent (optional, improves JS-rendered sites)
57
+
58
+ ## Setup
59
+
60
+ ### For Live Site Mode: Start Chrome with Remote Debugging
61
+
62
+ **Mac:**
63
+ ```bash
64
+ open -a "Google Chrome" --args --remote-debugging-port=9222
65
+ ```
66
+
67
+ **Linux:**
68
+ ```bash
69
+ google-chrome --remote-debugging-port=9222
70
+ ```
71
+
72
+ **Windows:**
73
+ ```bash
74
+ chrome.exe --remote-debugging-port=9222
75
+ ```
76
+
77
+ ### 2. Install Chrome DevTools MCP Server
78
+
79
+ Follow the setup at: https://github.com/ChromeDevTools/chrome-devtools-mcp
80
+
81
+ Add to your agent's MCP configuration:
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "chrome-devtools": {
86
+ "command": "npx",
87
+ "args": ["-y", "@chrome-devtools/mcp-server"],
88
+ "env": {
89
+ "CHROME_DEBUGGING_PORT": "9222"
90
+ }
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### 3. Configure Environment (Optional)
97
+
98
+ Copy `.env.example` to `.env` and fill in:
99
+ ```bash
100
+ cp .env.example .env
101
+ ```
102
+
103
+ `GITHUB_TOKEN` and `GITHUB_REPO` are only needed if you want the agent to automatically open a GitHub PR with the generated file.
104
+
105
+ ## How to Use
106
+
107
+ **Codebase Mode** just be inside your project and ask:
108
+ ```
109
+ "Generate an llms.txt for this site"
110
+ "Add llms.txt to this project"
111
+ "Make this site readable by AI agents"
112
+ ```
113
+
114
+ The agent will detect your framework, read your pages and blog posts from source, generate `llms.txt`, and write it to the right directory (e.g. `public/llms.txt`) after you confirm.
115
+
116
+ **Live Site Mode** provide a URL:
117
+ ```
118
+ "Generate an llms.txt for https://yoursite.com"
119
+ "Does https://yoursite.com have an llms.txt? If not, create one."
120
+ ```
121
+
122
+ The agent will:
123
+ 1. Check if `llms.txt` already exists at the domain
124
+ 2. Crawl homepage, docs, blog, about, pricing, and API pages
125
+ 3. Generate `llms.txt` following the official spec
126
+ 4. Optionally generate `llms-full.txt` with full page content
127
+ 5. Save the file locally and give you deployment instructions
128
+ 6. Optionally open a GitHub PR if configured
129
+
130
+ ## Where to Deploy the File
131
+
132
+ Place `llms.txt` at your web root so it's accessible at `https://yourdomain.com/llms.txt`:
133
+
134
+ | Platform | File Location |
135
+ |----------|--------------|
136
+ | Next.js / Vercel | `/public/llms.txt` |
137
+ | Astro | `/public/llms.txt` |
138
+ | Nuxt | `/public/llms.txt` |
139
+ | GitHub Pages | Repository root |
140
+ | Hugo | `/static/llms.txt` |
141
+ | WordPress | Upload via FTP to web root |
142
+
143
+ ## Output Files
144
+
145
+ | File | Description |
146
+ |------|-------------|
147
+ | `llms.txt` | Structured link map. LLMs follow links to find content |
148
+ | `llms-full.txt` | Full prose content of key pages. LLMs ingest everything at once |
149
+
150
+ ## Project Structure
151
+
152
+ ```
153
+ llms-txt-generator/
154
+ ├── SKILL.md # Agent instructions
155
+ ├── README.md # This file
156
+ ├── .env.example # Environment variables template
157
+ ├── evals/
158
+ │ └── evals.json # Test prompts for skill evaluation
159
+ └── references/
160
+ ├── llms-txt-spec.md # The llms.txt format specification
161
+ └── output-template.md # Exact output template with example
162
+ ```
163
+
164
+ ## License
165
+
166
+ MIT