[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-e40d2474-a56b-4dc6-8078-8e64af970440":3,"$fem_Mm120s6JyJ8i0AL1Orp2X6yFJJxxNyS2wbLs8azk":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"e40d2474-a56b-4dc6-8078-8e64af970440","last30days","研究Reddit + X + 网络上过去30天内的话题，成为专家，并为用户的靶工具编写可复制粘贴的提示。","cat_life_career","mod_other","sickn33,other","---\nname: last30days\ndescription: \"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.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# last30days: Research Any Topic from the Last 30 Days\n\nResearch ANY topic across Reddit, X, and the web. Surface what people are actually discussing, recommending, and debating right now.\n\nUse cases:\n\n- **Prompting**: \"photorealistic people in Nano Banana Pro\", \"Midjourney prompts\", \"ChatGPT image generation\" → learn techniques, get copy-paste prompts\n- **Recommendations**: \"best Claude Code skills\", \"top AI tools\" → get a LIST of specific things people mention\n- **News**: \"what's happening with OpenAI\", \"latest AI announcements\" → current events and updates\n- **General**: any topic you're curious about → understand what the community is saying\n\n## CRITICAL: Parse User Intent\n\nBefore doing anything, parse the user's input for:\n\n1. **TOPIC**: What they want to learn about (e.g., \"web app mockups\", \"Claude Code skills\", \"image generation\")\n2. **TARGET TOOL** (if specified): Where they'll use the prompts (e.g., \"Nano Banana Pro\", \"ChatGPT\", \"Midjourney\")\n3. **QUERY TYPE**: What kind of research they want:\n   - **PROMPTING** - \"X prompts\", \"prompting for X\", \"X best practices\" → User wants to learn techniques and get copy-paste prompts\n   - **RECOMMENDATIONS** - \"best X\", \"top X\", \"what X should I use\", \"recommended X\" → User wants a LIST of specific things\n   - **NEWS** - \"what's happening with X\", \"X news\", \"latest on X\" → User wants current events\u002Fupdates\n   - **GENERAL** - anything else → User wants broad understanding of the topic\n\nCommon patterns:\n\n- `[topic] for [tool]` → \"web mockups for Nano Banana Pro\" → TOOL IS SPECIFIED\n- `[topic] prompts for [tool]` → \"UI design prompts for Midjourney\" → TOOL IS SPECIFIED\n- Just `[topic]` → \"iOS design mockups\" → TOOL NOT SPECIFIED, that's OK\n- \"best [topic]\" or \"top [topic]\" → QUERY_TYPE = RECOMMENDATIONS\n- \"what are the best [topic]\" → QUERY_TYPE = RECOMMENDATIONS\n\n**IMPORTANT: Do NOT ask about target tool before research.**\n\n- If tool is specified in the query, use it\n- If tool is NOT specified, run research first, then ask AFTER showing results\n\n**Store these variables:**\n\n- `TOPIC = [extracted topic]`\n- `TARGET_TOOL = [extracted tool, or \"unknown\" if not specified]`\n- `QUERY_TYPE = [RECOMMENDATIONS | NEWS | HOW-TO | GENERAL]`\n\n---\n\n## Setup Check\n\nThe skill works in three modes based on available API keys:\n\n1. **Full Mode** (both keys): Reddit + X + WebSearch - best results with engagement metrics\n2. **Partial Mode** (one key): Reddit-only or X-only + WebSearch\n3. **Web-Only Mode** (no keys): WebSearch only - still useful, but no engagement metrics\n\n**API keys are OPTIONAL.** The skill will work without them using WebSearch fallback.\n\n### First-Time Setup (Optional but Recommended)\n\nIf the user wants to add API keys for better results:\n\n```bash\nmkdir -p ~\u002F.config\u002Flast30days\ncat > ~\u002F.config\u002Flast30days\u002F.env \u003C\u003C 'ENVEOF'\n# last30days API Configuration\n# Both keys are optional - skill works with WebSearch fallback\n\n# For Reddit research (uses OpenAI's web_search tool)\nOPENAI_API_KEY=\n\n# For X\u002FTwitter research (uses xAI's x_search tool)\nXAI_API_KEY=\nENVEOF\n\nchmod 600 ~\u002F.config\u002Flast30days\u002F.env\necho \"Config created at ~\u002F.config\u002Flast30days\u002F.env\"\necho \"Edit to add your API keys for enhanced research.\"\n```\n\n**DO NOT stop if no keys are configured.** Proceed with web-only mode.\n\n---\n\n## Research Execution\n\n**IMPORTANT: The script handles API key detection automatically.** Run it and check the output to determine mode.\n\n**Step 1: Run the research script**\n\n```bash\nTOPIC_FILE=\"$(mktemp)\"\ntrap 'rm -f \"$TOPIC_FILE\"' EXIT\ncat \u003C\u003C'LAST30DAYS_TOPIC' > \"$TOPIC_FILE\"\n$ARGUMENTS\nLAST30DAYS_TOPIC\npython3 ~\u002F.claude\u002Fskills\u002Flast30days\u002Fscripts\u002Flast30days.py \"$(cat \"$TOPIC_FILE\")\" --emit=compact 2>&1\n```\n\nThe script will automatically:\n\n- Detect available API keys\n- Show a promo banner if keys are missing (this is intentional marketing)\n- Run Reddit\u002FX searches if keys exist\n- Signal if WebSearch is needed\n\n**Step 2: Check the output mode**\n\nThe script output will indicate the mode:\n\n- **\"Mode: both\"** or **\"Mode: reddit-only\"** or **\"Mode: x-only\"**: Script found results, WebSearch is supplementary\n- **\"Mode: web-only\"**: No API keys, Claude must do ALL research via WebSearch\n\n**Step 3: Do WebSearch**\n\nFor **ALL modes**, do WebSearch to supplement (or provide all data in web-only mode).\n\nChoose search queries based on QUERY_TYPE:\n\n**If RECOMMENDATIONS** (\"best X\", \"top X\", \"what X should I use\"):\n\n- Search for: `best {TOPIC} recommendations`\n- Search for: `{TOPIC} list examples`\n- Search for: `most popular {TOPIC}`\n- Goal: Find SPECIFIC NAMES of things, not generic advice\n\n**If NEWS** (\"what's happening with X\", \"X news\"):\n\n- Search for: `{TOPIC} news 2026`\n- Search for: `{TOPIC} announcement update`\n- Goal: Find current events and recent developments\n\n**If PROMPTING** (\"X prompts\", \"prompting for X\"):\n\n- Search for: `{TOPIC} prompts examples 2026`\n- Search for: `{TOPIC} techniques tips`\n- Goal: Find prompting techniques and examples to create copy-paste prompts\n\n**If GENERAL** (default):\n\n- Search for: `{TOPIC} 2026`\n- Search for: `{TOPIC} discussion`\n- Goal: Find what people are actually saying\n\nFor ALL query types:\n\n- **USE THE USER'S EXACT TERMINOLOGY** - don't substitute or add tech names based on your knowledge\n  - If user says \"ChatGPT image prompting\", search for \"ChatGPT image prompting\"\n  - Do NOT add \"DALL-E\", \"GPT-4o\", or other terms you think are related\n  - Your knowledge may be outdated - trust the user's terminology\n- EXCLUDE reddit.com, x.com, twitter.com (covered by script)\n- INCLUDE: blogs, tutorials, docs, news, GitHub repos\n- **DO NOT output \"Sources:\" list** - this is noise, we'll show stats at the end\n\n**Step 3: Wait for background script to complete**\nUse TaskOutput to get the script results before proceeding to synthesis.\n\n**Depth options** (passed through from user's command):\n\n- `--quick` → Faster, fewer sources (8-12 each)\n- (default) → Balanced (20-30 each)\n- `--deep` → Comprehensive (50-70 Reddit, 40-60 X)\n\n---\n\n## Judge Agent: Synthesize All Sources\n\n**After all searches complete, internally synthesize (don't display stats yet):**\n\nThe Judge Agent must:\n\n1. Weight Reddit\u002FX sources HIGHER (they have engagement signals: upvotes, likes)\n2. Weight WebSearch sources LOWER (no engagement data)\n3. Identify patterns that appear across ALL three sources (strongest signals)\n4. Note any contradictions between sources\n5. Extract the top 3-5 actionable insights\n\n**Do NOT display stats here - they come at the end, right before the invitation.**\n\n---\n\n## FIRST: Internalize the Research\n\n**CRITICAL: Ground your synthesis in the ACTUAL research content, not your pre-existing knowledge.**\n\nRead the research output carefully. Pay attention to:\n\n- **Exact product\u002Ftool names** mentioned (e.g., if research mentions \"ClawdBot\" or \"@clawdbot\", that's a DIFFERENT product than \"Claude Code\" - don't conflate them)\n- **Specific quotes and insights** from the sources - use THESE, not generic knowledge\n- **What the sources actually say**, not what you assume the topic is about\n\n**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.\n\n### If QUERY_TYPE = RECOMMENDATIONS\n\n**CRITICAL: Extract SPECIFIC NAMES, not generic patterns.**\n\nWhen user asks \"best X\" or \"top X\", they want a LIST of specific things:\n\n- Scan research for specific product names, tool names, project names, skill names, etc.\n- Count how many times each is mentioned\n- Note which sources recommend each (Reddit thread, X post, blog)\n- List them by popularity\u002Fmention count\n\n**BAD synthesis for \"best Claude Code skills\":**\n\n> \"Skills are powerful. Keep them under 500 lines. Use progressive disclosure.\"\n\n**GOOD synthesis for \"best Claude Code skills\":**\n\n> \"Most mentioned skills: \u002Fcommit (5 mentions), remotion skill (4x), git-worktree (3x), \u002Fpr (3x). The Remotion announcement got 16K likes on X.\"\n\n### For all QUERY_TYPEs\n\nIdentify from the ACTUAL RESEARCH OUTPUT:\n\n- **PROMPT FORMAT** - Does research recommend JSON, structured params, natural language, keywords? THIS IS CRITICAL.\n- The top 3-5 patterns\u002Ftechniques that appeared across multiple sources\n- Specific keywords, structures, or approaches mentioned BY THE SOURCES\n- Common pitfalls mentioned BY THE SOURCES\n\n**If research says \"use JSON prompts\" or \"structured prompts\", you MUST deliver prompts in that format later.**\n\n---\n\n## THEN: Show Summary + Invite Vision\n\n**CRITICAL: Do NOT output any \"Sources:\" lists. The final display should be clean.**\n\n**Display in this EXACT sequence:**\n\n**FIRST - What I learned (based on QUERY_TYPE):**\n\n**If RECOMMENDATIONS** - Show specific things mentioned:\n\n```\n🏆 Most mentioned:\n1. [Specific name] - mentioned {n}x (r\u002Fsub, @handle, blog.com)\n2. [Specific name] - mentioned {n}x (sources)\n3. [Specific name] - mentioned {n}x (sources)\n4. [Specific name] - mentioned {n}x (sources)\n5. [Specific name] - mentioned {n}x (sources)\n\nNotable mentions: [other specific things with 1-2 mentions]\n```\n\n**If PROMPTING\u002FNEWS\u002FGENERAL** - Show synthesis and patterns:\n\n```\nWhat I learned:\n\n[2-4 sentences synthesizing key insights FROM THE ACTUAL RESEARCH OUTPUT.]\n\nKEY PATTERNS I'll use:\n1. [Pattern from research]\n2. [Pattern from research]\n3. [Pattern from research]\n```\n\n**THEN - Stats (right before invitation):**\n\nFor **full\u002Fpartial mode** (has API keys):\n\n```\n---\n✅ All agents reported back!\n├─ 🟠 Reddit: {n} threads │ {sum} upvotes │ {sum} comments\n├─ 🔵 X: {n} posts │ {sum} likes │ {sum} reposts\n├─ 🌐 Web: {n} pages │ {domains}\n└─ Top voices: r\u002F{sub1}, r\u002F{sub2} │ @{handle1}, @{handle2} │ {web_author} on {site}\n```\n\nFor **web-only mode** (no API keys):\n\n```\n---\n✅ Research complete!\n├─ 🌐 Web: {n} pages │ {domains}\n└─ Top sources: {author1} on {site1}, {author2} on {site2}\n\n💡 Want engagement metrics? Add API keys to ~\u002F.config\u002Flast30days\u002F.env\n   - OPENAI_API_KEY → Reddit (real upvotes & comments)\n   - XAI_API_KEY → X\u002FTwitter (real likes & reposts)\n```\n\n**LAST - Invitation:**\n\n```\n---\nShare your vision for what you want to create and I'll write a thoughtful prompt you can copy-paste directly into {TARGET_TOOL}.\n```\n\n**Use real numbers from the research output.** The patterns should be actual insights from the research, not generic advice.\n\n**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.\n\n**IF TARGET_TOOL is still unknown after showing results**, ask NOW (not before research):\n\n```\nWhat tool will you use these prompts with?\n\nOptions:\n1. [Most relevant tool based on research - e.g., if research mentioned Figma\u002FSketch, offer those]\n2. Nano Banana Pro (image generation)\n3. ChatGPT \u002F Claude (text\u002Fcode)\n4. Other (tell me)\n```\n\n**IMPORTANT**: After displaying this, WAIT for the user to respond. Don't dump generic prompts.\n\n---\n\n## WAIT FOR USER'S VISION\n\nAfter showing the stats summary with your invitation, **STOP and wait** for the user to tell you what they want to create.\n\nWhen they respond with their vision (e.g., \"I want a landing page mockup for my SaaS app\"), THEN write a single, thoughtful, tailored prompt.\n\n---\n\n## WHEN USER SHARES THEIR VISION: Write ONE Perfect Prompt\n\nBased on what they want to create, write a **single, highly-tailored prompt** using your research expertise.\n\n### CRITICAL: Match the FORMAT the research recommends\n\n**If research says to use a specific prompt FORMAT, YOU MUST USE THAT FORMAT:**\n\n- Research says \"JSON prompts\" → Write the prompt AS JSON\n- Research says \"structured parameters\" → Use structured key: value format\n- Research says \"natural language\" → Use conversational prose\n- Research says \"keyword lists\" → Use comma-separated keywords\n\n**ANTI-PATTERN**: Research says \"use JSON prompts with device specs\" but you write plain prose. This defeats the entire purpose of the research.\n\n### Output Format:\n\n```\nHere's your prompt for {TARGET_TOOL}:\n\n---\n\n[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.]\n\n---\n\nThis uses [brief 1-line explanation of what research insight you applied].\n```\n\n### Quality Checklist:\n\n- [ ] **FORMAT MATCHES RESEARCH** - If research said JSON\u002Fstructured\u002Fetc, prompt IS that format\n- [ ] Directly addresses what the user said they want to create\n- [ ] Uses specific patterns\u002Fkeywords discovered in research\n- [ ] Ready to paste with zero edits (or minimal [PLACEHOLDERS] clearly marked)\n- [ ] Appropriate length and style for TARGET_TOOL\n\n---\n\n## IF USER ASKS FOR MORE OPTIONS\n\nOnly if they ask for alternatives or more prompts, provide 2-3 variations. Don't dump a prompt pack unless requested.\n\n---\n\n## AFTER EACH PROMPT: Stay in Expert Mode\n\nAfter delivering a prompt, offer to write more:\n\n> Want another prompt? Just tell me what you're creating next.\n\n---\n\n## CONTEXT MEMORY\n\nFor the rest of this conversation, remember:\n\n- **TOPIC**: {topic}\n- **TARGET_TOOL**: {tool}\n- **KEY PATTERNS**: {list the top 3-5 patterns you learned}\n- **RESEARCH FINDINGS**: The key facts and insights from the research\n\n**CRITICAL: After research is complete, you are now an EXPERT on this topic.**\n\nWhen the user asks follow-up questions:\n\n- **DO NOT run new WebSearches** - you already have the research\n- **Answer from what you learned** - cite the Reddit threads, X posts, and web sources\n- **If they ask for a prompt** - write one using your expertise\n- **If they ask a question** - answer it from your research findings\n\nOnly do new research if the user explicitly asks about a DIFFERENT topic.\n\n---\n\n## Output Summary Footer (After Each Prompt)\n\nAfter delivering a prompt, end with:\n\nFor **full\u002Fpartial mode**:\n\n```\n---\n📚 Expert in: {TOPIC} for {TARGET_TOOL}\n📊 Based on: {n} Reddit threads ({sum} upvotes) + {n} X posts ({sum} likes) + {n} web pages\n\nWant another prompt? Just tell me what you're creating next.\n```\n\nFor **web-only mode**:\n\n```\n---\n📚 Expert in: {TOPIC} for {TARGET_TOOL}\n📊 Based on: {n} web pages from {domains}\n\nWant another prompt? Just tell me what you're creating next.\n\n💡 Unlock Reddit & X data: Add API keys to ~\u002F.config\u002Flast30days\u002F.env\n```\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,223,940,"2026-05-16 13:25:38",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"其他","other","mdi-page-next-outline","其他类型Skill",5,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"职场发展","career","mdi-briefcase-outline","面试准备、简历优化、职业规划",4,575,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"1e2c8ffb-67aa-4d56-95d1-fe3cdbb83ee3","1.0.0","last30days.zip",14419108,"uploads\u002Fskills\u002Fe40d2474-a56b-4dc6-8078-8e64af970440\u002Flast30days.zip","9b3bda05d7d60f408c6e843690ee59e24fb215e0cb4444e2f5ec2394b0cf71f2","[{\"path\":\"README.md\",\"isDirectory\":false,\"size\":34135},{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":15247},{\"path\":\"SPEC.md\",\"isDirectory\":false,\"size\":3140},{\"path\":\"TASKS.md\",\"isDirectory\":false,\"size\":1475},{\"path\":\"assets\u002Faging-portrait.jpeg\",\"isDirectory\":false,\"size\":2817207},{\"path\":\"assets\u002Fclaude-code-rap.mp3\",\"isDirectory\":false,\"size\":2354231},{\"path\":\"assets\u002Fdog-as-human.png\",\"isDirectory\":false,\"size\":2460679},{\"path\":\"assets\u002Fdog-original.jpeg\",\"isDirectory\":false,\"size\":4014063},{\"path\":\"assets\u002Fswimmom-mockup.jpeg\",\"isDirectory\":false,\"size\":2764821},{\"path\":\"fixtures\u002Fmodels_openai_sample.json\",\"isDirectory\":false,\"size\":745},{\"path\":\"fixtures\u002Fmodels_xai_sample.json\",\"isDirectory\":false,\"size\":385},{\"path\":\"fixtures\u002Fopenai_sample.json\",\"isDirectory\":false,\"size\":2303},{\"path\":\"fixtures\u002Freddit_thread_sample.json\",\"isDirectory\":false,\"size\":3934},{\"path\":\"fixtures\u002Fxai_sample.json\",\"isDirectory\":false,\"size\":2577},{\"path\":\"plans\u002Ffeat-add-websearch-source.md\",\"isDirectory\":false,\"size\":14539},{\"path\":\"plans\u002Ffix-strict-date-filtering.md\",\"isDirectory\":false,\"size\":11294},{\"path\":\"scripts\u002Flast30days.py\",\"isDirectory\":false,\"size\":16044},{\"path\":\"scripts\u002Flib\u002F__init__.py\",\"isDirectory\":false,\"size\":29},{\"path\":\"scripts\u002Flib\u002Fcache.py\",\"isDirectory\":false,\"size\":4149},{\"path\":\"scripts\u002Flib\u002Fdates.py\",\"isDirectory\":false,\"size\":3253},{\"path\":\"scripts\u002Flib\u002Fdedupe.py\",\"isDirectory\":false,\"size\":3237},{\"path\":\"scripts\u002Flib\u002Fenv.py\",\"isDirectory\":false,\"size\":4949},{\"path\":\"scripts\u002Flib\u002Fhttp.py\",\"isDirectory\":false,\"size\":4806},{\"path\":\"scripts\u002Flib\u002Fmodels.py\",\"isDirectory\":false,\"size\":4631},{\"path\":\"scripts\u002Flib\u002Fnormalize.py\",\"isDirectory\":false,\"size\":4767},{\"path\":\"scripts\u002Flib\u002Fopenai_reddit.py\",\"isDirectory\":false,\"size\":7328},{\"path\":\"scripts\u002Flib\u002Freddit_enrich.py\",\"isDirectory\":false,\"size\":6750},{\"path\":\"scripts\u002Flib\u002Frender.py\",\"isDirectory\":false,\"size\":13781},{\"path\":\"scripts\u002Flib\u002Fschema.py\",\"isDirectory\":false,\"size\":10861},{\"path\":\"scripts\u002Flib\u002Fscore.py\",\"isDirectory\":false,\"size\":9177},{\"path\":\"scripts\u002Flib\u002Fui.py\",\"isDirectory\":false,\"size\":13268},{\"path\":\"scripts\u002Flib\u002Fwebsearch.py\",\"isDirectory\":false,\"size\":11644},{\"path\":\"scripts\u002Flib\u002Fxai_x.py\",\"isDirectory\":false,\"size\":6646},{\"path\":\"tests\u002F__init__.py\",\"isDirectory\":false,\"size\":19},{\"path\":\"tests\u002Ftest_cache.py\",\"isDirectory\":false,\"size\":1984},{\"path\":\"tests\u002Ftest_dates.py\",\"isDirectory\":false,\"size\":3684},{\"path\":\"tests\u002Ftest_dedupe.py\",\"isDirectory\":false,\"size\":3852},{\"path\":\"tests\u002Ftest_models.py\",\"isDirectory\":false,\"size\":4148},{\"path\":\"tests\u002Ftest_normalize.py\",\"isDirectory\":false,\"size\":4227},{\"path\":\"tests\u002Ftest_render.py\",\"isDirectory\":false,\"size\":3355},{\"path\":\"tests\u002Ftest_score.py\",\"isDirectory\":false,\"size\":5299}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]