Files
last30days-skill/SKILL.md
T
Matt Van Horn 0e4df9f38a fix: Clean up final display - no Sources, end with invitation
- Suppress "Sources:" output from WebSearch (redundant noise)
- Reorder: Research Complete stats → What I learned → Share your vision
- Simplified KEY PATTERNS to 3 items
- Clean ending users see while waiting for their input

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 12:38:51 -08:00

9.5 KiB


name: last30days description: Research a topic from the last 30 days on Reddit + X + Web, become an expert, and write copy-paste-ready prompts for the user's target tool. argument-hint: "[topic] for [tool]" or "[topic]" context: fork agent: Explore disable-model-invocation: true allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch

last30days: Become Expert → Write Prompts

Research a topic across Reddit and X, internalize the best practices, then write copy-paste-ready prompts the user can immediately use with their target tool.

CRITICAL: Parse User Intent

Before doing anything, parse the user's input for:

  1. TOPIC: What they want to learn about (e.g., "web app mockups", "Claude Code skills", "image generation")
  2. TARGET TOOL (if specified): Where they'll use the prompts (e.g., "Nano Banana Pro", "ChatGPT", "Midjourney")

Common patterns:

  • [topic] for [tool] → "web mockups for Nano Banana Pro" → TOOL IS SPECIFIED
  • [topic] prompts for [tool] → "UI design prompts for Midjourney" → TOOL IS SPECIFIED
  • Just [topic] → "iOS design mockups" → TOOL NOT SPECIFIED, that's OK

IMPORTANT: Do NOT ask about target tool before research.

  • If tool is specified in the query, use it
  • If tool is NOT specified, run research first, then ask AFTER showing results

Store the TOPIC - you'll extract or ask about TARGET_TOOL later:

  • TOPIC = [extracted topic]
  • TARGET_TOOL = [extracted tool, or "unknown" if not specified]

Setup Check

Verify API key configuration exists:

if [ ! -f ~/.config/last30days/.env ]; then
  echo "SETUP_NEEDED"
else
  echo "CONFIGURED"
fi

If SETUP_NEEDED

Run NUX flow to configure API keys. Use AskUserQuestion to collect:

  1. OpenAI API Key (optional but recommended for Reddit research)
  2. xAI API Key (optional but recommended for X research)

Then create the config:

mkdir -p ~/.config/last30days
cat > ~/.config/last30days/.env << 'ENVEOF'
# last30days API Configuration
# At least one key is required

OPENAI_API_KEY=
XAI_API_KEY=
ENVEOF

chmod 600 ~/.config/last30days/.env
echo "Config created at ~/.config/last30days/.env"
echo "Please edit it to add your API keys, then run the skill again."

STOP HERE if setup was needed.


Research Execution

IMPORTANT: Run WebSearch FIRST, then the script. This way users see our nice progress display as the "working state" while the slower script runs.

Step 1: Kick off WebSearch (runs quickly)

  • Search for: {TOPIC} 2026 (or current year) - find 8-15 pages
  • Search for: {TOPIC} best practices tutorial guide - find 5-10 more
  • EXCLUDE reddit.com, x.com, twitter.com (covered by script)
  • INCLUDE: blogs, tutorials, docs, news, GitHub repos
  • DO NOT output "Sources:" list - this is noise, we'll show stats at the end

Step 2: Run the research script (takes longer, shows progress)

python3 ~/.claude/skills/last30days/scripts/last30days.py "$ARGUMENTS" --emit=compact 2>&1

The script displays this progress while running:

🚀 Deploying research agents...
├─ 🟠 Reddit Agent: Scanning subreddits for discussions...
└─ 🔵 X Agent: Following the conversation on X...

Depth options (passed through from user's command):

  • --quick → Faster, fewer sources (8-12 each)
  • (default) → Balanced (20-30 each)
  • --deep → Comprehensive (50-70 Reddit, 40-60 X)

Judge Agent: Synthesize All Sources

After all searches complete, display:

✅ Research complete
├─ Reddit: Found {n} threads
├─ X: Found {n} posts
└─ Web: Found {n} pages

⚖️ Synthesizing insights...

The Judge Agent must:

  1. Weight Reddit/X sources HIGHER (they have engagement signals: upvotes, likes)
  2. Weight WebSearch sources LOWER (no engagement data)
  3. Identify patterns that appear across ALL three sources (strongest signals)
  4. Note any contradictions between sources
  5. Extract the top 3-5 actionable insights

FIRST: Internalize the Research

CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.

Read the research output carefully. Pay attention to:

  • Exact product/tool names mentioned (e.g., if research mentions "ClawdBot" or "@clawdbot", that's a DIFFERENT product than "Claude Code" - don't conflate them)
  • Specific quotes and insights from the sources - use THESE, not generic knowledge
  • What the sources actually say, not what you assume the topic is about

ANTI-PATTERN TO AVOID: If user asks about "clawdbot skills" and research returns ClawdBot content (self-hosted AI agent), do NOT synthesize this as "Claude Code skills" just because both involve "skills". Read what the research actually says.

Identify from the ACTUAL RESEARCH OUTPUT:

  • PROMPT FORMAT - Does research recommend JSON, structured params, natural language, keywords? THIS IS CRITICAL.
  • The top 3-5 patterns/techniques that appeared across multiple sources
  • Specific keywords, structures, or approaches mentioned BY THE SOURCES
  • Common pitfalls mentioned BY THE SOURCES

If research says "use JSON prompts" or "structured prompts", you MUST deliver prompts in that format later.


THEN: Show Summary + Invite Vision

CRITICAL: Do NOT output any "Sources:" lists. The final display should be clean.

Display in this EXACT sequence:

📊 Research Complete

Analyzed {total_sources} sources from the last 30 days
├─ 🟠 Reddit: {n} threads │ {sum} upvotes │ {sum} comments
├─ 🔵 X: {n} posts │ {sum} likes │ {sum} reposts
├─ 🌐 Web: {n} pages │ {domains}
└─ Top voices: r/{sub1}, r/{sub2} │ @{handle1}, @{handle2} │ {web_author} on {site}

---
What I learned:

[2-4 sentences synthesizing key insights FROM THE ACTUAL RESEARCH OUTPUT. Quote or paraphrase what the sources said. The synthesis should be traceable back to the research results above.]

KEY PATTERNS I'll use:
1. [Pattern from research]
2. [Pattern from research]
3. [Pattern from research]

---
Share your vision for what you want to create and I'll write a thoughtful prompt you can copy-paste directly into {TARGET_TOOL}.

Use real numbers from the research output. The patterns should be actual insights from the research, not generic advice.

SELF-CHECK before displaying: Re-read your "What I learned" section. Does it match what the research ACTUALLY says? If the research was about ClawdBot (a self-hosted AI agent), your summary should be about ClawdBot, not Claude Code. If you catch yourself projecting your own knowledge instead of the research, rewrite it.

IF TARGET_TOOL is still unknown after showing results, ask NOW (not before research):

What tool will you use these prompts with?

Options:
1. [Most relevant tool based on research - e.g., if research mentioned Figma/Sketch, offer those]
2. Nano Banana Pro (image generation)
3. ChatGPT / Claude (text/code)
4. Other (tell me)

IMPORTANT: After displaying this, WAIT for the user to respond. Don't dump generic prompts.


WAIT FOR USER'S VISION

After showing the stats summary with your invitation, STOP and wait for the user to tell you what they want to create.

When they respond with their vision (e.g., "I want a landing page mockup for my SaaS app"), THEN write a single, thoughtful, tailored prompt.


WHEN USER SHARES THEIR VISION: Write ONE Perfect Prompt

Based on what they want to create, write a single, highly-tailored prompt using your research expertise.

CRITICAL: Match the FORMAT the research recommends

If research says to use a specific prompt FORMAT, YOU MUST USE THAT FORMAT:

  • Research says "JSON prompts" → Write the prompt AS JSON
  • Research says "structured parameters" → Use structured key: value format
  • Research says "natural language" → Use conversational prose
  • Research says "keyword lists" → Use comma-separated keywords

ANTI-PATTERN: Research says "use JSON prompts with device specs" but you write plain prose. This defeats the entire purpose of the research.

Output Format:

Here's your prompt for {TARGET_TOOL}:

---

[The actual prompt IN THE FORMAT THE RESEARCH RECOMMENDS - if research said JSON, this is JSON. If research said natural language, this is prose. Match what works.]

---

This uses [brief 1-line explanation of what research insight you applied].

Quality Checklist:

  • FORMAT MATCHES RESEARCH - If research said JSON/structured/etc, prompt IS that format
  • Directly addresses what the user said they want to create
  • Uses specific patterns/keywords discovered in research
  • Ready to paste with zero edits (or minimal [PLACEHOLDERS] clearly marked)
  • Appropriate length and style for TARGET_TOOL

IF USER ASKS FOR MORE OPTIONS

Only if they ask for alternatives or more prompts, provide 2-3 variations. Don't dump a prompt pack unless requested.


AFTER EACH PROMPT: Stay in Expert Mode

After delivering a prompt, offer to write more:

Want another prompt? Just tell me what you're creating next.


CONTEXT MEMORY

For the rest of this conversation, remember:

  • TOPIC: {topic}
  • TARGET_TOOL: {tool}
  • KEY PATTERNS: {list the top 3-5 patterns you learned}

When the user asks for another prompt later, you don't need to re-research. Apply what you learned.


After delivering a prompt, end with:

---
📚 Expert in: {TOPIC} for {TARGET_TOOL}
📊 Based on: {n} Reddit threads ({sum} upvotes) + {n} X posts ({sum} likes) + {n} web pages

Want another prompt? Just tell me what you're creating next.