Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bobvarkey-last30days-a9a6f0
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: research, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
last30days- Description
- Multi-query social search with intelligent planning. Agent plans queries when possible, falls back to Gemini/OpenAI when not. Research any topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web.
- License
- MIT
- Allowed tools
- Bash,, Read,, Write,, AskUserQuestion,, WebSearch
- Instructions
- 1,323 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- name: "last30days" does not match folder "last30days-skill"
- body: 1323 lines (spec recommends under 500)
Files (200)
- SKILL.md · .agents/skills/last30days/
- marketplace.json · .claude-plugin/
- plugin.json · .claude-plugin/
- .clawhubignore
- plugin.json · .codex-plugin/
- .gitignore
- CHANGELOG.md
- CLAUDE.md
- CONTRIBUTORS.md
- LICENSE
- README.md
- SKILL-original.md
- SKILL.md
- SPEC.md
- TASKS.md
- openai.yaml · agents/
- aging-portrait.jpeg · assets/
- claude-code-rap.mp3 · assets/
- dog-as-human.png · assets/
- dog-original.jpeg · assets/
- swimmom-mockup.jpeg · assets/
- how-search-works.md · docs/
- pr-credits.md · docs/
- search-quality-eval.md · docs/
- v1-SKILL.md · docs/test-results/v1-vs-v2-20260206-231338/
- 1-prompting-techniques-for-chatgpt-for-legal-questio.stderr.txt · docs/test-results/v1-vs-v2-20260206-231338/v1/
- 1-prompting-techniques-for-chatgpt-for-legal-questio.txt · docs/test-results/v1-vs-v2-20260206-231338/v1/
- analysis.md · docs/test-results/v1-vs-v2-quick/
- v1-SKILL.md · docs/test-results/v1-vs-v2-quick/
- 1-kanye-west.txt · docs/test-results/v1-vs-v2-quick/v1/
- 3-open-claw.txt · docs/test-results/v1-vs-v2-quick/v1/
- 4-nano-banana-pro-prompting.txt · docs/test-results/v1-vs-v2-quick/v1/
- 5-how-to-best-setup-clawdbot.txt · docs/test-results/v1-vs-v2-quick/v1/
- v2-SKILL.md · docs/test-results/v1-vs-v2-quick/
- 1-kanye-west.txt · docs/test-results/v1-vs-v2-quick/v2/
- v2.1-launch-copy.md · docs/
- v2.5-launch-tweets.md · docs/
- models_openai_sample.json · fixtures/
- models_xai_sample.json · fixtures/
- openai_sample.json · fixtures/
- reddit_thread_sample.json · fixtures/
- tiktok_search.json · fixtures/
- xai_sample.json · fixtures/
- gemini-extension.json
- hooks.json · hooks/
- check-config.sh · hooks/scripts/
- feat-add-websearch-source.md · plans/
- fix-strict-date-filtering.md · plans/
- pyproject.toml
- release-notes.md
- briefing.py · scripts/
- compare.sh · scripts/
- evaluate_search_quality.py · scripts/
- last30days.py · scripts/
- __init__.py · scripts/lib/
- bird_x.py · scripts/lib/
- bluesky.py · scripts/lib/
- chrome_cookies.py · scripts/lib/
- cluster.py · scripts/lib/
- cookie_extract.py · scripts/lib/
- …and 140 more
SKILL.md (first lines)
# last30days v2.9.5: Research Any Topic from the Last 30 Days
> **Permissions overview:** Reads public web/platform data and optionally saves research briefings to `~/Documents/Last30Days/`. X/Twitter search uses optional user-provided tokens (AUTH_TOKEN/CT0 env vars). Bluesky search uses optional app password (BSKY_HANDLE/BSKY_APP_PASSWORD env vars - create at bsky.app/settings/app-passwords). All credential usage and data writes are documented in the [Security & Permissions](#security--permissions) section.
Research ANY topic across Reddit, X, YouTube, and other sources. Surface what people are actually discussing, recommending, betting on, and debating right now.
## Runtime Preflight
Before running any `last30days.py` command in this skill, resolve a Python 3.12+ interpreter once and keep it in `LAST30DAYS_PYTHON`:
```bash
for py in python3.14 python3.13 python3.12 python3; do
command -v "$py" >/dev/null 2>&1 || continue
"$py" -c 'import sys; raise SystemExit(0 if sys.version_info >= (3, 12) else 1)' || continue
LAST30DAYS_PYTHON="$py"
break
done
if [ -z "${LAST30DAYS_PYTHON:-}" ]; then
echo "ERROR: last30days v3 requires Python 3.12+. Install python3.12 or python3.13 and rerun." >&2
exit 1
fi
```
## Step 0: First-Run Setup Wizard
**CRITICAL: ALWAYS execute Step 0 BEFORE Step 1, even if the user provided a topic.** If the user typed `/last30days Mercer Island`, you MUST check for FIRST_RUN and present the wizard BEFORE running research. The topic "Mercer Island" is preserved — research runs immediately after the wizard completes. Do NOT skip the wizard because a topic was provided. The wizard takes 10 seconds and only runs once ever.
To detect first run: check if `~/.config/last30days/.env` exists. If it does NOT exist, this is a first run. **Do NOT run any Bash commands or show any command output to detect this — just check the file existence silently.** If the file exists and contains `SETUP_COMPLETE=true`, skip this section **silently** and proceed to Step 1. **Do NOT say "Setup is complete" or any other status message — just move on.** The user doesn't need to be told setup is done every time they run the skill.
**When first run is detected, detect your platform first:**
**If you do NOT have WebSearch capability (OpenClaw, Codex, raw CLI):** Run the OpenClaw setup flow below.
**If you DO have WebSearch (Claude Code):** Run the standard setup flow below.
---
### OpenClaw / Non-WebSearch Setup Flow
Run environment detection first:
```bash
"${LAST30DAYS_PYTHON}" "${SKILL_ROOT}/scripts/last30days.py" setup --openclaw
```
Read the JSON output. It tells you what's already configured. Display a status summary:
```
👋 Welcome to /last30days!
Detected:
{✅ or ❌} yt-dlp (YouTube search)
{✅ or ❌} X/Twitter ({method} configured)
{✅ or ❌} ScrapeCreators (TikTok, Instagram, Reddit backup)
{✅ or ❌} Web search ({backend} configured)
```
Then for each missing item, offer setup in priority order:
1. **ScrapeCreators** (if not configured): "ScrapeCreators adds TikTok and Instagram search (plus a Reddit backup if public Reddit gets rate-limited). 10,000 free calls, no credit card. (No referrals, no kickbacks - we don't get a cut.)"
- Option A: "ScrapeCreators via GitHub (recommended)" -- Check if `gh` CLI was detected in the environment detection output above. If gh IS detected: description should say "Registers directly via GitHub CLI in ~2 seconds - no browser needed". Before running the command, display: "Registering via GitHub CLI..." If gh is NOT detected: description should say "Copies a one-time code to your clipboard and opens GitHub to authorize". Before running the command, display: "I'll copy a one-time code to your clipboard and open GitHub. When GitHub asks for a device code, just paste (Cmd+V / Ctrl+V)." Then run `"${LAST30DAYS_PYTHON}" "${SKILL_ROOT}/scripts/last30days.py" setup --github`, parse JSON output. Tries PAT first (if `gh` is installed), falls back to device flow which copies a one-time code to your clipboard and opens your browser. If `status` is `success`, write `SCRAPECREATORS_API_KEY={api_key}` to .env.
- Option B: "I have a key" -- accept paste, write to .env
- Option C: "Skip for now"
2. **X/Twitter** (if not configured): "X search finds tweets and conversations. To unlock X: add FROM_BROWSER=auto (reads browser cookies, free), XAI_API_KEY (no browser access, api.x.ai), or AUTH_TOKEN+CT0 (manual cookies)."
- Option A: "I have an xAI API key" (recommended for servers -- persistent, no expiry). Write XAI_API_KEY to .env.
- Option B: "I have AUTH_TOKEN + CT0 from my browser" -- accept both, write to .env
- Option C: "Skip for now"
3. **YouTube** (if yt-dlp not found): "YouTube search needs yt-dlp. Run: `pip install yt-dlp`"
4. **Web search** (if no Brave/Exa/Serper key): "A web search key enables smarter results. Brave Search is free for 2,000 queries/month at brave.com/search/api"
After setup, write `SETUP_COMPLETE=true` to .env and proceed to research.
**Skip to "END OF FIRST-RUN WIZARD" below after completing the OpenClaw flow.**
---
### Claude Code Setup Flow (Standard)
**You MUST follow these steps IN ORDER. Do NOT skip ahead to the topic picker or research. The sequence is: (1) welcome text -> (2) setup modal -> (3) run setup if chosen -> (4) optional ScrapeCreators modal -> (5) topic picker. You MUST start at step 1.**
**Step 1: Display the following welcome text ONCE as a normal message (not blockquoted). Then IMMEDIATELY call AskUserQuestion - do NOT repeat any of the welcome text inside the AskUserQuestion call.**
Welcome to /last30days!
I research any topic across Reddit, X, YouTube, and other sources - synthesizing what people are actually saying right now.
Auto setup gives you 5 core sources for free in 30 seconds:
- X/Twitter - reads your x.com browser cookies to authenticate (not saved to disk). Chrome on macOS will prompt for Keychain access.
- Reddit with comments - public JSON, no API key needed
- YouTube search + transcripts - installs yt-dlp (open source, 190K+ GitHub stars)
- Hacker News + Polymarket + GitHub (if `gh` CLI installed) - always on, zero config
Want TikTok and Instagram too? ScrapeCreators adds those (10,000 free calls, scrapecreators.com). No kickbacks, no affiliation.
**Then call AskUserQuestion with ONLY this question and these options - no additional text:**
Question: "How would you like to set up?"
Options:
- "Auto setup (~30 seconds) - scans browser cookies for X + installs yt-dlp for YouTube"
- "Manual setup - show me what to configure"
- "Skip for now - Reddit (with comments), HN, Polymarket, GitHub (if gh installed), Web"
**If the user picks 1 (Auto setup):**
**Before running the setup command, get cookie consent:**
Check if `BROWSER_CONSENT=true` already exists in `~/.config/last30days/.env`. If it does, skip the consent prompt and run setup directly.
If `BROWSER_CONSENT=true` is NOT present, **call AskUserQuestion:**
Question: "Auto setup will scan your browser for x.com cookies to authenticate X search. Cookies are read live, not saved to disk. Chrome on macOS will prompt for Keychain access. OK to proceed?"
Options:
- "Yes, scan my cookies for X" - Run setup as normal. Append `BROWSER_CONSENT=true` to .env after setup completes.
- "Skip X, just set up YouTube" - Run setup with YouTube only (install yt-dlp). Do not scan cookies.
- "I have an xAI API key instead" - Ask them to paste it, write XAI_API_KEY to .env. Then install yt-dlp.
Run the setup subcommand:
```bashFrom bobvarkey/diabetes-buddy, MIT.
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 24, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/bobvarkey/diabetes-buddy
- Website
- diabetes-buddy.vercel.app
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from bobvarkey
- 0.450score
frontend-design
bobvarkey
Create distinctive, production-grade frontend interfaces with high design quality.
SkillCFreshness: CClaude Code +9 - 0.423score
Baidu Wenku AIPPT
bobvarkey
Generate PPT with Baidu Wenku AI.
SkillDFreshness: D★ 1Claude Code +9 - 0.421score
last30days
bobvarkey
Multi-query social search with intelligent planning.
SkillDFreshness: D★ 1Claude Code - 0.407score
frontend-design
bobvarkey
Create distinctive, production-grade frontend interfaces with high design quality.
SkillDFreshness: D★ 1Claude Code +9
Cite this page
last30days skill. Agent Mart. https://agentmart.dev/skills/bobvarkey-last30days-a9a6f0 (last updated 2026-10-24)