/reddit-setup
One-time setup wizard for the Reddit content engine. Gathers product brief, Reddit username, and goals; analyzes the user's writing style; discovers target subreddits; caches sub rules; classifies past posts by performance.
$ npx -y skills add agamjn/rising --agent claude-codeShips with rising. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/reddit-setup
Context preview
What this command does when you run it.
One-time setup wizard for the Reddit content engine. Gathers product brief, Reddit username, and goals; analyzes the user's writing style; discovers target subreddits; caches sub rules; classifies past posts by performance.
Command definition
reddit-setup.mddescription: One-time setup wizard for the Reddit content engine. Gathers product brief, Reddit username, and goals; analyzes the user's writing style; discovers target subreddits; caches sub rules; classifies past posts by performance.
argument-hint: (interactive — no args)
You are the setup wizard for the **rising** plugin. Walk the user through a one-time setup that produces all the config files for their per-product Reddit folder.
Pre-flight check
Confirm CWD is appropriate before doing anything destructive. Run:
- `pwd` to show the user where you are
- `ls -la` to show what's already here
If `product.md` already exists, the user has already set up here. Ask: "Setup files already exist in this folder. Re-run setup (overwrites everything) or cancel?" Wait for an explicit answer.
Step 1 — Product brief
Ask the user: "What's your product? Paste a website URL (I'll fetch it) or describe it in a paragraph."
- If URL: WebFetch it, extract the actual product description (not nav/footer cruft).
- If text: take it as-is.
Write `product.md` containing the brief — keep it tight, 100-200 words, focused on what the product does + who it's for.
Step 2 — Goal
Ask: "What do you want out of Reddit? (e.g., 'increase brand presence in the ML/infra community', 'drive signups from devops engineers', 'build karma so I can post in stricter subs', 'recruit beta testers')"
Write `goal.md` with their answer + a brief expansion of what success looks like for that goal.
Step 3 — Reddit username + profile-visibility caveat
**This step has a critical caveat. Surface it BEFORE asking for the username:**
> "I need to fetch your past Reddit posts to learn your writing style and figure out what's worked for you. Reddit's public JSON API only returns submissions for **public** profiles. If yours is hidden, here's how to flip it on temporarily: > > 1. Click your profile avatar in the top right → **User Settings** > 2. Open the **Profile** tab → scroll to **Content and Activity** and turn on the toggles that make your posts and comments visible > 3. Open the **Privacy** tab → toggle ON **Show up in search results** > 4. Come back here. > 5. After this setup finishes, you can flip all those toggles **OFF** again — from then on you'll log new posts manually with `/reddit-add-post <url>` so we keep growing your history without your profile being public. > > Ready? Paste your Reddit username (without the `u/`):"
Wait for the username.
Step 4 — Persist config and seed cache directory
Run this Bash command to write `.rising/config.json` and prepare the cache:
mkdir -p .rising/cache
cat > .rising/config.json <<JSON
{
"reddit_username": "<username>"
}
JSON
# Add .rising/ to .gitignore (creates if missing, appends if missing the line)
touch .gitignore
grep -qxF '.rising/' .gitignore || echo '.rising/' >> .gitignoreSubstitute `<username>` with the value the user gave.
Step 5 — Pull post history (Bash + curl)
Reddit's API rejects requests without a conformant User-Agent. **Always use Bash + curl, never WebFetch, for Reddit endpoints.**
Run this Bash command:
USERNAME=$(jq -r .reddit_username .rising/config.json)
UA="script:com.github.agamjn.rising:v0.1.0 (by /u/${USERNAME})"
curl -sS --fail-with-body \
-A "$UA" \
--connect-timeout 10 --max-time 30 \
"https://www.reddit.com/user/${USERNAME}/submitted.json?limit=100" \
-o ".rising/cache/${USERNAME}-submissions.json"If the curl exits non-zero or the resulting JSON has no `data.children` (empty list), tell the user their profile is likely hidden — point them back to the toggle steps and wait for them to retry.
Read the saved JSON and parse each post. For each post in `data.children[].data`, extract: `title`, `selftext`, `subreddit`, `permalink`, `created_utc` (convert to ISO date), `score`, `num_comments`, `link_flair_text`. Also pull the top 3 comments by score for context — for each post, fetch its comments via:
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \
"https://www.reddit.com<permalink>.json?limit=100" \
-o ".rising/cache/post-<id>.json"
Issue these per-post comment fetches in parallel — multiple Bash tool calls in a single message. (Up to ~20 at a time is fine; Reddit's unauthenticated rate limit is ~60/min.)
Write `posts-history.md` as the canonical append-only log. Format each entry as:
## <ISO-date> — r/<sub> — "<title>"
- URL: https://reddit.com<permalink>
- Score: <score> | Comments: <num_comments>
- Flair: <link_flair_text or "none">
<selftext (or "[link post: <url>]" for link posts)>
**Top comments:**
- (<score>) <username>: <truncated 200 chars>
- ...
---
Order: newest first. This file is the source of truth for every other analysis.
Step 6 — Brainstorm subreddit candidates and validate them (orchestrator does this, NOT the discoverer agent)
You (the orchestrator) brainstorm an initial list of ~10-15 subreddit candidates based on the product brief and goal. Think across:
- Where the target *user* hangs out (posting candidates)
- Where competitors get discussed or compete (non-posting candidates)
- Adjacent communities and industry trend signals (non-posting candidates)
For each candidate, fan out parallel curls (single message, multiple Bash tool calls) to validate:
USERNAME=$(jq -r .reddit_username .rising/config.json)
UA="script:com.github.agamjn.rising:v0.1.0 (by /u/${USERNAME})"
SUB=<candidate>
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \
"https://www.reddit.com/r/${SUB}/about.json" \
-o ".rising/cache/${SUB}-about.json"
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \
"https://www.reddit.com/r/${SUB}/about/rules.json" \
-o ".rising/cache/${SUB}-rules.json"Filter the candidates:
- **Drop** if the about.json fetch returned 404 or the body indicates the sub doesn't exist
- **Drop** if `subscribers` < 1000
- **Drop** if `subreddit_type` is `pri
Read more
description: One-time setup wizard for the Reddit content engine. Gathers product brief, Reddit username, and goals; analyzes the user's writing style; discovers target subreddits; caches sub rules; classifies past posts by performance. argument-hint: (interactive — no args)
You are the setup wizard for the **rising** plugin. Walk the user through a one-time setup that produces all the config files for their per-product Reddit folder.
Pre-flight check
Confirm CWD is appropriate before doing anything destructive. Run:
- `pwd` to show the user where you are
- `ls -la` to show what's already here
If `product.md` already exists, the user has already set up here. Ask: "Setup files already exist in this folder. Re-run setup (overwrites everything) or cancel?" Wait for an explicit answer.
Step 1 — Product brief
Ask the user: "What's your product? Paste a website URL (I'll fetch it) or describe it in a paragraph."
- If URL: WebFetch it, extract the actual product description (not nav/footer cruft).
- If text: take it as-is.
Write `product.md` containing the brief — keep it tight, 100-200 words, focused on what the product does + who it's for.
Step 2 — Goal
Ask: "What do you want out of Reddit? (e.g., 'increase brand presence in the ML/infra community', 'drive signups from devops engineers', 'build karma so I can post in stricter subs', 'recruit beta testers')"
Write `goal.md` with their answer + a brief expansion of what success looks like for that goal.
Step 3 — Reddit username + profile-visibility caveat
**This step has a critical caveat. Surface it BEFORE asking for the username:**
> "I need to fetch your past Reddit posts to learn your writing style and figure out what's worked for you. Reddit's public JSON API only returns submissions for **public** profiles. If yours is hidden, here's how to flip it on temporarily: > > 1. Click your profile avatar in the top right → **User Settings** > 2. Open the **Profile** tab → scroll to **Content and Activity** and turn on the toggles that make your posts and comments visible > 3. Open the **Privacy** tab → toggle ON **Show up in search results** > 4. Come back here. > 5. After this setup finishes, you can flip all those toggles **OFF** again — from then on you'll log new posts manually with `/reddit-add-post <url>` so we keep growing your history without your profile being public. > > Ready? Paste your Reddit username (without the `u/`):"
Wait for the username.
Step 4 — Persist config and seed cache directory
Run this Bash command to write `.rising/config.json` and prepare the cache:
mkdir -p .rising/cache
cat > .rising/config.json <<JSON
{
"reddit_username": "<username>"
}
JSON
# Add .rising/ to .gitignore (creates if missing, appends if missing the line)
touch .gitignore
grep -qxF '.rising/' .gitignore || echo '.rising/' >> .gitignoreSubstitute `<username>` with the value the user gave.
Step 5 — Pull post history (Bash + curl)
Reddit's API rejects requests without a conformant User-Agent. **Always use Bash + curl, never WebFetch, for Reddit endpoints.**
Run this Bash command:
USERNAME=$(jq -r .reddit_username .rising/config.json)
UA="script:com.github.agamjn.rising:v0.1.0 (by /u/${USERNAME})"
curl -sS --fail-with-body \
-A "$UA" \
--connect-timeout 10 --max-time 30 \
"https://www.reddit.com/user/${USERNAME}/submitted.json?limit=100" \
-o ".rising/cache/${USERNAME}-submissions.json"If the curl exits non-zero or the resulting JSON has no `data.children` (empty list), tell the user their profile is likely hidden — point them back to the toggle steps and wait for them to retry.
Read the saved JSON and parse each post. For each post in `data.children[].data`, extract: `title`, `selftext`, `subreddit`, `permalink`, `created_utc` (convert to ISO date), `score`, `num_comments`, `link_flair_text`. Also pull the top 3 comments by score for context — for each post, fetch its comments via:
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \ "https://www.reddit.com<permalink>.json?limit=100" \ -o ".rising/cache/post-<id>.json"
Issue these per-post comment fetches in parallel — multiple Bash tool calls in a single message. (Up to ~20 at a time is fine; Reddit's unauthenticated rate limit is ~60/min.)
Write `posts-history.md` as the canonical append-only log. Format each entry as:
## <ISO-date> — r/<sub> — "<title>" - URL: https://reddit.com<permalink> - Score: <score> | Comments: <num_comments> - Flair: <link_flair_text or "none"> <selftext (or "[link post: <url>]" for link posts)> **Top comments:** - (<score>) <username>: <truncated 200 chars> - ... ---
Order: newest first. This file is the source of truth for every other analysis.
Step 6 — Brainstorm subreddit candidates and validate them (orchestrator does this, NOT the discoverer agent)
You (the orchestrator) brainstorm an initial list of ~10-15 subreddit candidates based on the product brief and goal. Think across:
- Where the target *user* hangs out (posting candidates)
- Where competitors get discussed or compete (non-posting candidates)
- Adjacent communities and industry trend signals (non-posting candidates)
For each candidate, fan out parallel curls (single message, multiple Bash tool calls) to validate:
USERNAME=$(jq -r .reddit_username .rising/config.json)
UA="script:com.github.agamjn.rising:v0.1.0 (by /u/${USERNAME})"
SUB=<candidate>
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \
"https://www.reddit.com/r/${SUB}/about.json" \
-o ".rising/cache/${SUB}-about.json"
curl -sS --fail-with-body -A "$UA" --connect-timeout 10 --max-time 30 \
"https://www.reddit.com/r/${SUB}/about/rules.json" \
-o ".rising/cache/${SUB}-rules.json"Filter the candidates:
- **Drop** if the about.json fetch returned 404 or the body indicates the sub doesn't exist
- **Drop** if `subscribers` < 1000
- **Drop** if `subreddit_type` is `pri
Showing the first part of this file.
A claude code plugin that turns claude into a personal Reddit content engine for founders, marketers, and devrel folks. Not by spamming product blurbs, but by researching what their target subs actually talk about and proposing posts that fit the community.
Other commands on rising.
- /reddit-add-post
Log one or more Reddit posts the user made by pasting their URLs. Appends to posts-history.md and refreshes post-categories.md so the engine keeps learning what works.
Open command - /reddit-add-sub
Discover and add fresh subreddits to your list based on a goal or angle you give. Researches new candidates (never duplicates what you already have), asks you follow-up questions, caches rules for posting subs, and appends to subreddits.md. Run /reddit-daily afterward to use
Open command - /reddit-daily
Daily Reddit content engine run. Logs any new posts the user made, refreshes engagement on recent ones, researches trends across all configured subs in parallel, and produces 3 post proposals saved to drafts/YYYY-MM-DD.md.
Open command - /reddit-schedule
Schedule /reddit-daily to run automatically on a cron. Wraps Claude Code's built-in scheduling with a Reddit-engine-specific default.
Open command

