Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bobvarkey-last30days
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
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/last30days
Tools it pre-approves 5
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash,Read,Write,AskUserQuestion,WebSearch
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/openclaw-workspace, MIT.
More from bobvarkey/openclaw-workspace
- 0.423score
Baidu Wenku AIPPT
bobvarkey
Generate PPT with Baidu Wenku AI.
SkillDFreshness: D★ 1Claude Code +9 - 0.423score
seo
web-quality-skills
Optimize for search engine visibility and ranking.
SkillDFreshness: D★ 1Claude Code +9 - 0.407score
frontend-design
bobvarkey
Create distinctive, production-grade frontend interfaces with high design quality.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-gemini-stock-market
bobvarkey
Stock market data ingestion and quick analytics for Gemini or compatible feeds.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-himalaya
bobvarkey
Domain-specific research aggregator and synthesis capability.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-ai-ppt-generator
bobvarkey
Generate presentation slides from text/data with AI assistance.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-cli-docs
bobvarkey
A CLI wrapper and docs companion for gateway, channels, models, automation, and workflows.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-ontology-summarise
bobvarkey
Summarizes ontologies and semantic relations from structured APIs for quick ingestion.
SkillDFreshness: D★ 1Claude Code +9 - 0.235score
clawhub-nano-banana
bobvarkey
Lightweight data-pipeline primitives for quick utility tasks and data handling.
SkillDFreshness: D★ 1Claude Code +9 - 0.233score
clawhub-auto-updater
bobvarkey
Self-update hooks for OpenClaw components and skills.
SkillDFreshness: D★ 1Claude Code +9 - 0.233score
clawhub-memory-manager
bobvarkey
Memory indexing, deduplication, and fast recall utilities.
SkillDFreshness: D★ 1Claude Code +9 - 0.233score
clawhub-calDAV-calendar
bobvarkey
Integrates Caldav calendar access and event summarization into OpenClaw workflows.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 16, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/bobvarkey/openclaw-workspace
- 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.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 (last updated 2026-10-24)