/reddit-post-engine
Writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a
$ npx -y skills add Varnan-Tech/opendirectory --skill reddit-post-engine --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/reddit-post-engine
Context preview
The summary Claude sees to decide when to auto-load this skill.
Writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a
SKILL.md
reddit-post-engine.SKILL.mdname: reddit-post-engine
description: Writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a Reddit post, share a project on Reddit, write a subreddit post, or launch something on Reddit. Trigger when a user says "post this on Reddit", "write a Reddit post for r/...", "help me launch on Reddit", "draft something for Reddit", or "how do I share this on Reddit without getting banned".
compatibility: [claude-code, gemini-cli, github-copilot]
author: OpenDirectory
version: 1.0.0
Reddit Post Engine
Draft a Reddit post that fits the subreddit's culture. Optionally post it via Composio.
---
**Critical rule:** Never post without confirming subreddit rules. Never include product links in the body: put them in the first comment only if appropriate. Follow the 90/10 rule: your post should add value independent of any product mention.
**Anti-spam rule:** Posts that are primarily promotional will be removed and may get the account banned. The goal is to contribute to the community first. Product mentions go in the first comment, and only if the subreddit allows self-promotion.
---
Step 1: Setup Check
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Check if Composio Reddit MCP is connected
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: not connected"**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file."
**If Composio Reddit MCP is not connected:** Continue. The skill will draft posts but skip the posting step. Inform the user: "Composio Reddit MCP not connected: I'll draft your post for manual submission. To enable direct posting, see the setup instructions in README.md."
---
Step 2: Gather Context
You need:
- Target subreddit (e.g., r/devops, r/startups, r/SideProject)
- What you are sharing (project, article, question, discussion, tool)
- One-sentence description of what it does
- Why it's relevant to this specific subreddit's community
- Whether you want a self-post (text) or link post
If any of these are missing, ask in one message:
"To draft your Reddit post, I need: 1. Which subreddit? (e.g., r/devops, r/startups) 2. What are you sharing? (project, article, tool, question) 3. What does it do? (one sentence, technical) 4. Why does this subreddit care about it specifically?"
---
Step 3: Fetch Subreddit Rules and Culture
**Fetch the subreddit's rules:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about/rules.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
rules = d.get('rules', [])
for r in rules:
print(f'Rule: {r.get(\"short_name\", \"\")}')
print(f'Detail: {r.get(\"description\", \"\")[:200]}')
print()
"**Fetch recent top posts to understand tone and style:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/top.json?t=week&limit=10" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
for p in d['data']['children'][:10]:
pd = p['data']
print(f'Score: {pd[\"score\"]} | Title: {pd[\"title\"][:100]}')
"Note patterns in the top posts:
- Are titles questions or statements?
- Do they lead with the technology or the outcome?
- Are they personal ("I built...") or impersonal ("Tool for...")?
- What format gets the most engagement in this subreddit?
**Check subreddit sidebar for posting rules:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
data = d.get('data', {})
print('Public description:', data.get('public_description', '')[:300])
print('Subscribers:', data.get('subscribers', 0))
"**Identify the subreddit type:**
| Type | Examples | Post style | |------|----------|-----------| | Technical practitioner | r/devops, r/sysadmin, r/ExperiencedDevs | Technical specifics, no fluff, "I did X and learned Y" | | Startup/builder | r/startups, r/SideProject, r/indiehackers | Personal story, metrics, lessons learned | | General tech | r/programming, r/technology | News angle, discussion hook, controversial take | | Career | r/cscareerquestions, r/ITCareerQuestions | Question format, specific scenario, ask for experience | | Niche tool | r/vim, r/rust, r/golang | Deep technical content, code examples, benchmarks |
Use the fetched rules and top posts to determine which style applies.
---
Step 4: Draft the Post with Gemini
Write the post content to a temp file and call Gemini:
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a developer who is active in the {SUBREDDIT} community. Write a Reddit post that fits this subreddit's culture. Rules: (1) Write in first person if it is a project or experience post. (2) Do NOT include any product links in the body: links go in the first comment only. (3) The post must add genuine value to the community independent of any product being shared. (4) Match the tone of top posts in this subreddit: {SUBREDDIT_TONE_NOTES}. (5) Title max 300 characters. (6) Body 150-400 words for text posts. (7) No marketing language: no 'game-changing', 'powerful', 'robust', 'seamless', 'innovative'. (8) If the post is about a tool the user built, use the 'I made...' or 'I built...' opener: it performs best on Reddit. (9) Output: title on first line, blank line, then body. No labels, no commentary. Do not use em dashes."
}]
},
"contents": [{
"parts": [{
"text": "POST_DETAILS_HERE"
}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapisRead more
name: reddit-post-engine description: Writes and optionally posts a Reddit post for any subreddit, following that subreddit's specific culture and rules. Drafts a title, body, and first comment using the 90/10 rule. Uses Composio Reddit MCP for optional direct posting. Use when asked to post on Reddit, draft a Reddit post, share a project on Reddit, write a subreddit post, or launch something on Reddit. Trigger when a user says "post this on Reddit", "write a Reddit post for r/...", "help me launch on Reddit", "draft something for Reddit", or "how do I share this on Reddit without getting banned". compatibility: [claude-code, gemini-cli, github-copilot] author: OpenDirectory version: 1.0.0
Reddit Post Engine
Draft a Reddit post that fits the subreddit's culture. Optionally post it via Composio.
---
**Critical rule:** Never post without confirming subreddit rules. Never include product links in the body: put them in the first comment only if appropriate. Follow the 90/10 rule: your post should add value independent of any product mention.
**Anti-spam rule:** Posts that are primarily promotional will be removed and may get the account banned. The goal is to contribute to the community first. Product mentions go in the first comment, and only if the subreddit allows self-promotion.
---
Step 1: Setup Check
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
# Check if Composio Reddit MCP is connected
claude mcp list 2>/dev/null | grep -i reddit || echo "Composio Reddit MCP: not connected"**If GEMINI_API_KEY is missing:** Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file."
**If Composio Reddit MCP is not connected:** Continue. The skill will draft posts but skip the posting step. Inform the user: "Composio Reddit MCP not connected: I'll draft your post for manual submission. To enable direct posting, see the setup instructions in README.md."
---
Step 2: Gather Context
You need:
- Target subreddit (e.g., r/devops, r/startups, r/SideProject)
- What you are sharing (project, article, question, discussion, tool)
- One-sentence description of what it does
- Why it's relevant to this specific subreddit's community
- Whether you want a self-post (text) or link post
If any of these are missing, ask in one message:
"To draft your Reddit post, I need: 1. Which subreddit? (e.g., r/devops, r/startups) 2. What are you sharing? (project, article, tool, question) 3. What does it do? (one sentence, technical) 4. Why does this subreddit care about it specifically?"
---
Step 3: Fetch Subreddit Rules and Culture
**Fetch the subreddit's rules:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about/rules.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
rules = d.get('rules', [])
for r in rules:
print(f'Rule: {r.get(\"short_name\", \"\")}')
print(f'Detail: {r.get(\"description\", \"\")[:200]}')
print()
"**Fetch recent top posts to understand tone and style:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/top.json?t=week&limit=10" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
for p in d['data']['children'][:10]:
pd = p['data']
print(f'Score: {pd[\"score\"]} | Title: {pd[\"title\"][:100]}')
"Note patterns in the top posts:
- Are titles questions or statements?
- Do they lead with the technology or the outcome?
- Are they personal ("I built...") or impersonal ("Tool for...")?
- What format gets the most engagement in this subreddit?
**Check subreddit sidebar for posting rules:**
curl -s \
-H "User-Agent: varnan-skills/1.0" \
"https://www.reddit.com/r/{SUBREDDIT}/about.json" \
| python3 -c "
import sys, json
d = json.load(sys.stdin)
data = d.get('data', {})
print('Public description:', data.get('public_description', '')[:300])
print('Subscribers:', data.get('subscribers', 0))
"**Identify the subreddit type:**
| Type | Examples | Post style | |------|----------|-----------| | Technical practitioner | r/devops, r/sysadmin, r/ExperiencedDevs | Technical specifics, no fluff, "I did X and learned Y" | | Startup/builder | r/startups, r/SideProject, r/indiehackers | Personal story, metrics, lessons learned | | General tech | r/programming, r/technology | News angle, discussion hook, controversial take | | Career | r/cscareerquestions, r/ITCareerQuestions | Question format, specific scenario, ask for experience | | Niche tool | r/vim, r/rust, r/golang | Deep technical content, code examples, benchmarks |
Use the fetched rules and top posts to determine which style applies.
---
Step 4: Draft the Post with Gemini
Write the post content to a temp file and call Gemini:
cat > /tmp/reddit-post-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "You are a developer who is active in the {SUBREDDIT} community. Write a Reddit post that fits this subreddit's culture. Rules: (1) Write in first person if it is a project or experience post. (2) Do NOT include any product links in the body: links go in the first comment only. (3) The post must add genuine value to the community independent of any product being shared. (4) Match the tone of top posts in this subreddit: {SUBREDDIT_TONE_NOTES}. (5) Title max 300 characters. (6) Body 150-400 words for text posts. (7) No marketing language: no 'game-changing', 'powerful', 'robust', 'seamless', 'innovative'. (8) If the post is about a tool the user built, use the 'I made...' or 'I built...' opener: it performs best on Reddit. (9) Output: title on first line, blank line, then body. No labels, no commentary. Do not use em dashes."
}]
},
"contents": [{
"parts": [{
"text": "POST_DETAILS_HERE"
}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapisAI Agent Skills built for Founders who hate Marketing
Repo: Varnan-Tech/opendirectory
Other skills on opendirectory-gtm-skills.
- /app-store-review-arbitrage
Fetches low-star App Store and Google Play reviews, clusters them into broken-promise patterns, and generates a ranked copy brief with positioning opportunities.
Open skill - /blog-cover-image-cli
Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.
Open skill - /brand-alchemy
World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.
Open skill - /claude-md-generator
Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.
Open skill - /cold-email-verifier
Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.
Open skill - /company-radar
Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.
Open skill

