AI SummaryResearch ANY topic across Reddit, X, YouTube, and other sources. Surface what people are actually discussing, recommending, betting on, and debating right now. To detect first run: check if exists. If it does NOT exist, this is a first run. Do NOT run any Bash commands or show any command output to
Install
Copy this and paste it into Claude Code, Cursor, or any AI assistant:
I want to install the "last30days" skill in my project. Please run this command in my terminal: # Install skill into your project mkdir -p .claude/skills/last30days && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/last30days/SKILL.md "https://raw.githubusercontent.com/mvanhorn/last30days-skill/main/skills/last30days/SKILL.md" Then restart Claude Code (or reload the window in Cursor) so the skill is picked up.
Description
Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web.
STEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOW
Before reading anything else in this file, check whether you loaded SKILL.md from the one known stale-clone location: Claude Code's marketplaces directory. Run this check: `bash CLAUDE_CACHE_LATEST=$(find "$HOME/.claude/plugins/cache/last30days-skill/last30days" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -1)
and flat ({version}/SKILL.md). Resolve to whichever shape actually exists.
CLAUDE_CACHE_SKILL_MD="" if [ -n "$CLAUDE_CACHE_LATEST" ]; then if [ -f "$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md" ]; then CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md" elif [ -f "$CLAUDE_CACHE_LATEST/SKILL.md" ]; then CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/SKILL.md" fi fi echo "CLAUDE_CACHE_SKILL_MD=$CLAUDE_CACHE_SKILL_MD" ` If the SKILL.md path you just Read contains /.claude/plugins/marketplaces/ AND $CLAUDE_CACHE_SKILL_MD is non-empty, STOP and re-read $CLAUDE_CACHE_SKILL_MD before proceeding. Otherwise the SKILL.md you have is fine — continue. Why this specific check: ~/.claude/plugins/marketplaces/last30days-skill/ is a git clone Claude Code auto-restores to origin/main on session start. It can lag the versioned cache by one or more releases. Three 2026-04-22 test runs (Linear, Coinbase) loaded SKILL.md from marketplaces/, ran --help from the same stale path, did not see the --competitors flag that existed in the cache, and fell back to a manual comparison plan. Result: 2 of 3 windows never invoked the feature they were asked to test. STEP 0 defends against that one Claude Code-specific bug. Other install paths are fine: ~/.codex/skills/, ~/.agents/skills/, an npx skills add install dir, or a repo checkout are all valid load points - the resolver in Step 1 picks them up. Do NOT abort or hop on those paths. ---
SKILL CONTRACT — READ BEFORE ANY TOOL CALL
You are inside the /last30days SKILL. This is a specific research tool with a 1400+ line instruction contract (the rest of this file) that defines EXACTLY how to produce the research output. It is not a generic "last 30 days of X" research prompt. Do NOT treat /last30days as a search keyword you can improvise against. Named failure mode (2026-04-18 public v3.0.6 0/8 regression): on 8 consecutive public invocations, Opus 4.7 treated /last30days as a generic research keyword and improvised. Every single run violated LAW 2 (invented titles like "The headline", "Kanye West: the last 30 days"), LAW 4 (section headers like "Why he is everywhere this month", "1. gstack dominates", "The 'Homecoming' peak"), or both. One run (Matt Van Horn) skipped Step 0.5 / Step 0.55 entirely and ran the engine bare with zero resolution flags. Another (Garry Tan) leaked a trailing Sources: block despite LAW 1 reinforcement at four tiers. Two runs (Peter Steinberger, Kanye vs Kim) landed on a stale ~/.openclaw/skills/last30days/ engine copy via a self-written path-discovery loop. How v3.0.7 fixes it: three structural anchors. • The MANDATORY first-line badge (🌐 last30days v{VERSION} · synced {YYYY-MM-DD}) at the top of every response is the LAW 2 / LAW 4 enforcement anchor. See "BADGE (MANDATORY, FIRST LINE OF OUTPUT)" in the synthesis section. • The SKILL_DIR substitution in the engine Bash calls uses the directory of the SKILL.md the model just Read — no resolver list, no precedence walk. Whichever install the harness loaded SKILL.md from is the install whose engine runs. Aligns spec-with-code and works for any harness without enumerating its install path. • This preface tells you plainly: do NOT improvise. Follow SKILL.md top to bottom. If you catch yourself about to write a ## section header in a GENERAL-query body, a custom title line, a Sources: bullet list, a for dir in ... path-discovery loop, or a bare python3 scripts/last30days.py "{TOPIC}" engine call with no pre-flight flags — stop. Those are the exact failure modes the LAWs and this contract exist to prevent. The 10/10 beta validation from 2026-04-18 and the 0/8 public v3.0.6 regression from the same day had THE SAME MODEL and SIMILAR SKILL.md CONTENT; the delta is the three anchors this release restores. Read SKILL.md top to bottom before emitting your first response. ---
OUTPUT CONTRACT (BADGE + LAWS — READ BEFORE EMITTING YOUR RESPONSE)
These anchors used to live at line 1094 of this file. Three independent Opus 4.7 self-debugs on 2026-04-18 confirmed the file was too long to reach them before synthesis. Moved here in v3.0.8. Do not synthesize without reading this section. BADGE (MANDATORY, FIRST LINE OF OUTPUT): The Python engine now emits the badge as the first line of its --emit=compact stdout. Your correct behavior is to PASS THROUGH the script's output verbatim. If you are writing your own synthesis from scratch and need to emit the badge yourself, use: ` 🌐 last30days v{VERSION} · synced {YYYY-MM-DD} ` Replace {VERSION} with the installed plugin version (jq -r '.version' "$SKILL_DIR/../../.claude-plugin/plugin.json" 2>/dev/null || awk '/^version:/{gsub(/"/,"",$2); print $2; exit}' "$SKILL_DIR/SKILL.md") and {YYYY-MM-DD} with today's date. No other text on this line. One blank line after, then the synthesis begins. Why the badge is MANDATORY: it is the structural anchor for the canonical output shape. Without it the model drifts into blog-post narrative format with ## section headers and invented titles, violating LAW 2 and LAW 4. The 2026-04-18 public v3.0.6 0/8 regression produced outputs with section headers like "The headline", "Why he is everywhere", "1. gstack dominates", "The 'Homecoming' peak". Direct cause: this anchor was absent. Do NOT skip the badge. Do NOT describe it. Do NOT paraphrase it. Emit it verbatim as line 1. Placement by query type: • GENERAL / NEWS / PROMPTING / RECOMMENDATIONS: badge on line 1, blank line 2, What I learned: on line 3, then bold-lead-in paragraphs • COMPARISON: badge on line 1, blank line 2, # {TOPIC_A} vs {TOPIC_B} [vs {TOPIC_C}]: What the Community Says (/Last30Days) on line 3, then Quick Verdict section ---
Discussion
Health Signals
My Fox Den
Community Rating
Sign in to rate this booster