Browse r/wallstreetbets from inside Claude Code — read DD (due-diligence) posts, filter by any flair (News, Gain, Loss, YOLO, Daily Discussion…), keyword-search the sub, and open any post's full body or comment thread. Use whenever the user wants to see what WSB is saying — including bare "/wsb", "what's the DD on WSB", "any new DD", "wallstreetbets sentiment on <ticker>", or follow-ups like "read that one" / "what are the comments" while browsing.
Installs into .claude/skills of the current project.
Are you the author of Wallstreetbets?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mthli-wallstreetbets)
---
name: wallstreetbets
description: >-
Browse r/wallstreetbets from inside Claude Code — read DD (due-diligence)
posts, filter by any flair (News, Gain, Loss, YOLO, Daily Discussion…),
keyword-search the sub, and open any post's full body or comment thread. Use
whenever the user wants to see what WSB is saying — including bare "/wsb",
"what's the DD on WSB", "any new DD", "wallstreetbets sentiment on <ticker>",
or follow-ups like "read that one" / "what are the comments" while browsing.
---
# r/wallstreetbets
Browse r/wallstreetbets in the terminal. A bundled Python script
(`scripts/wsb.py`, standard library only — no install) fetches Reddit's public
RSS feeds and formats results as Markdown; your job is to map what the user
asked for to the right command, run it, and present the output.
`<SKILL_DIR>` below is the directory containing this `SKILL.md` — substitute its
absolute path when running.
## Why RSS
Reddit's unauthenticated JSON endpoints now return 403, but the `.rss` feeds
still serve fine with a descriptive User-Agent (the script sets one). So
everything here goes through RSS, and importantly the **search feed carries each
post's full body** — listing and reading DD share one fetch path. This is
read-only: the script never posts, votes, or logs in.
## Commands
```
# List posts. Default: flair DD, sorted top over the past week.
# --flair <name> any link flair (DD, News, Gain, Loss, YOLO, Discussion,
# "Daily Discussion", "Earnings Thread"); pass --flair "" for
# the plain front page (no flair filter).
# --query <text> keyword search within the sub (combinable with --flair)
# --sort top | new | relevance | hot | comments (default: top)
# --time hour | day | week | month | year | all (only affects top)
# --sub <name> any subreddit (default: wallstreetbets)
python3 <SKILL_DIR>/scripts/wsb.py list [--flair DD] [--query "<text>"] -n <count> --sort <sort> --time <window>
# Read a post's full body (id comes from a listing)
python3 <SKILL_DIR>/scripts/wsb.py read <id>
# Read a post's comment thread
python3 <SKILL_DIR>/scripts/wsb.py comments <id> -n <count>
```
Every command takes `--json` if you need structured data instead of Markdown
(e.g. the user wants you to rank, filter, or summarize across posts, or extract
tickers).
## Mapping requests to commands
**The default — bare `/wallstreetbets`, "what's the DD", "anything good on WSB"
— is `list` with its defaults: DD flair, `--sort top --time week`.** That window
matters: DD is low-volume and quality is bimodal (plenty of pump-and-dump posts
flaired "DD" that nobody upvotes), so "top this week" is the curated reading
list — the handful the sub actually found worth reading. Reach for `--sort new`
only when the user explicitly wants what's *fresh* ("any new DD", "DD today",
"latest") — that view includes unvetted posts, which is the point.
Map flair words directly: "news" → `--flair News`, "gains"/"gain porn" →
`--flair Gain`, "losses"/"loss porn" → `--flair Loss`, "YOLOs" → `--flair YOLO`,
"daily"/"daily discussion"/"what are your moves" → `--flair "Daily Discussion"`,
"earnings thread" → `--flair "Earnings Thread"`. "The front page" / "everything"
/ "just what's hot" → `--flair "" --sort hot`.
"WSB on NVDA" / "what's WSB saying about Nvidia" / "sentiment on $TSLA" → add
`--query "<ticker>"`. Combine with a flair when they're specific ("DD on NVDA" →
`--flair DD --query "NVDA"`). Note keyword + flair is relevance-weighted, not a
strict AND — for tight keyword matching prefer `--sort relevance` (the default
`top` still works well for "the big posts about X").
"Read that one" / "open #2" / "what does the ASTS DD actually say" → `read <id>`,
using the `` `id <base36>` `` shown at the end of each listing line. If the user
names a post by topic rather than rank, pick the matching id from the most
recent listing.
"What are people saying" / "read the comments" / "is the room bullish" →
`comments <id>`.
**Superlative-across-the-listing requests** — "which DD is the most detailed",
"the biggest post this week" — need a wider pull than the default 10, so
`list … -n 25` first, then pick from those. The `~N words` on each line is a
quick proxy for how substantial a DD is (a 5,000-word writeup vs a 60-word
shill).
Browsing another subreddit ("do this for r/options", "stocks subreddit") → add
`--sub <name>`; everything else works the same.
## Presenting results
The script already emits clean, link-rich Markdown. Relay it largely as-is —
don't re-fetch each post or rewrite every line; that wastes time and adds
nothing. A short framing line is welcome ("Here's the top DD on WSB this week —")
and so is a one-line offer of the next step ("Want me to read any of these in
full?"). Keep the clickable title links and the `id` markers intact so
follow-ups work.
If the user asked a question *about* the posts rather than just to see them
("which of these is worth reading", "summarize the ASTS thesis", "what tickers
are people pushing"), go ahead and read/summarize — pull the body with `read`,
or use `--json` across a listing to extract and rank — then answer.
Treat WSB content with appropriate skepticism when summarizing: it's anonymous,
often promotional, and not investment advice. Surface the thesis and the
sentiment, but flag when a "DD" reads like a pump rather than analysis (a tiny
body, all hype, no numbers — the `~N words` count and a quick read make this
obvious). Don't launder ramp-job hype into confident-sounding investment advice.
## Notes
- IDs are Reddit's base36 post ids (e.g. `1tnimoe`). `read` and `comments` both
hit the same `/comments/<id>/.rss` feed — its first entry is the post body,
the rest are comments — so reading a post and then its comments is cheap.
- Comment feeds are a **flat, partial slice** of the thread (Reddit's RSS caps
it and doesn't nest replies), enough to read the room but not the whole tree.
Don't present it as the complete discussion.
- Link/image posts (common under Gain/Loss/Meme) have no text body; `read` will
say so rather than inventing content.
- If a fetch returns HTTP 403/429, Reddit is throttling — wait and retry; the
feeds only tolerate light, human-paced use.