$npx -y skills add mvanhorn/last30days-skill --skill last30daysResearch 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. Includes a doctor health check to diagnose broken or missing sources.
| 1 | # STEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOW |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | **Run this check:** |
| 6 | |
| 7 | ```bash |
| 8 | CLAUDE_CACHE_LATEST=$(find "$HOME/.claude/plugins/cache/last30days-skill/last30days" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -1) |
| 9 | # Two cache layouts ship in the wild — nested ({version}/skills/last30days/SKILL.md) |
| 10 | # and flat ({version}/SKILL.md). Resolve to whichever shape actually exists. |
| 11 | CLAUDE_CACHE_SKILL_MD="" |
| 12 | if [ -n "$CLAUDE_CACHE_LATEST" ]; then |
| 13 | if [ -f "$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md" ]; then |
| 14 | CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/skills/last30days/SKILL.md" |
| 15 | elif [ -f "$CLAUDE_CACHE_LATEST/SKILL.md" ]; then |
| 16 | CLAUDE_CACHE_SKILL_MD="$CLAUDE_CACHE_LATEST/SKILL.md" |
| 17 | fi |
| 18 | fi |
| 19 | echo "CLAUDE_CACHE_SKILL_MD=$CLAUDE_CACHE_SKILL_MD" |
| 20 | ``` |
| 21 | |
| 22 | 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. |
| 23 | |
| 24 | **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. |
| 25 | |
| 26 | **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. |
| 27 | |
| 28 | --- |
| 29 | |
| 30 | # SKILL CONTRACT — READ BEFORE ANY TOOL CALL |
| 31 | |
| 32 | 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. |
| 33 | |
| 34 | **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. |
| 35 | |
| 36 | **How v3.0.7 fixes it:** three structural anchors. |
| 37 | 1. **The MANDATORY first-line badge** (`🌐 last30days v{VERSION} · synced {YYYY-MM-DD}` |