Not in the top 1,000 by GitHub stars
charlesdove977/goviralbro
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/last30days/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d9b477ae7642
No earlier version was observed for comparison.
Verified commit d9b477ae7642543732f1d1f7f98e95235ea03d52
git clone --filter=blob:none --no-checkout https://github.com/charlesdove977/goviralbro.git .hotskills/charlesdove977-goviralbro && git -C .hotskills/charlesdove977-goviralbro checkout --detach d9b477ae7642543732f1d1f7f98e95235ea03d52
# Copy each selected skill directory from .hotskills/charlesdove977-goviralbro into .claude/skills/<skill-name>/Heat
0.2- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- last30days
skills/last30days
How it works
last30days
When your agent uses it
Research a topic from the last 30 days. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Become an expert and write copy-paste-ready prompts.
What it loads into context
Frontmatter
220 tokensAlways available to the agent
SKILL.md
5,068 tokensWhen the skill is activated
Reference documents
14,946 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- CRITICAL: Parse User Intent
- Research Execution
- STEP 2: DO WEBSEARCH AFTER SCRIPT COMPLETES
- Judge Agent: Synthesize All Sources
- FIRST: Internalize the Research
- THEN: Show Summary + Invite Vision
- WAIT FOR USER'S RESPONSE
- WHEN USER RESPONDS
- IF USER ASKS FOR MORE OPTIONS
- AFTER EACH PROMPT: Stay in Expert Mode
- CONTEXT MEMORY
- Output Summary Footer (After Each Prompt)
- Security & Permissions
Scripts executed separately
scripts/briefing.pyscripts/last30days.pyscripts/lib/__init__.pyscripts/lib/bird_x.pyscripts/lib/brave_search.pyscripts/lib/cache.pyscripts/lib/dates.pyscripts/lib/dedupe.pyscripts/lib/entity_extract.pyscripts/lib/env.pyscripts/lib/http.pyscripts/lib/models.pyscripts/lib/normalize.pyscripts/lib/openai_reddit.pyscripts/lib/openrouter_search.pyscripts/lib/parallel_search.pyscripts/lib/reddit_enrich.pyscripts/lib/render.pyscripts/lib/schema.pyscripts/lib/score.pyscripts/lib/ui.pyscripts/lib/vendor/bird-search/LICENSEscripts/lib/vendor/bird-search/bird-search.mjsscripts/lib/vendor/bird-search/lib/cookies.jsscripts/lib/vendor/bird-search/lib/paginate-cursor.jsscripts/lib/vendor/bird-search/lib/runtime-features.jsscripts/lib/vendor/bird-search/lib/runtime-query-ids.jsscripts/lib/vendor/bird-search/lib/twitter-client-base.jsscripts/lib/vendor/bird-search/lib/twitter-client-constants.jsscripts/lib/vendor/bird-search/lib/twitter-client-features.jsscripts/lib/vendor/bird-search/lib/twitter-client-search.jsscripts/lib/vendor/bird-search/lib/twitter-client-types.jsscripts/lib/vendor/bird-search/lib/twitter-client-utils.jsscripts/lib/vendor/bird-search/package.jsonscripts/lib/websearch.pyscripts/lib/xai_x.pyscripts/lib/youtube_yt.pyscripts/store.pyscripts/sync.shscripts/watchlist.pytests/__init__.pytests/test_cache.pytests/test_dates.pytests/test_dedupe.pytests/test_models.pytests/test_normalize.pytests/test_openai_reddit.pytests/test_render.pytests/test_score.py
Files
CHANGELOG.mddoc3,651 bytesREADME.mddoc54,128 bytesSKILL.mdcore20,078 bytesSKILL.mdcore20,078 bytesSKILL.mdcore20,078 bytesSKILL.mdcore20,078 bytesSKILL.mdcore20,078 bytesSPEC.mddoc3,140 bytesagents/openai.yamlasset448 bytesfixtures/models_openai_sample.jsonasset745 bytesfixtures/models_xai_sample.jsonasset385 bytesfixtures/openai_sample.jsonasset2,303 bytesfixtures/reddit_thread_sample.jsonasset3,934 bytesfixtures/xai_sample.jsonasset2,577 bytesscripts/briefing.pyruns8,178 bytesscripts/last30days.pyruns42,686 bytesscripts/lib/__init__.pyruns29 bytesscripts/lib/bird_x.pyruns14,617 bytesscripts/lib/brave_search.pyruns6,019 bytesscripts/lib/cache.pyruns4,762 bytesscripts/lib/dates.pyruns3,253 bytesscripts/lib/dedupe.pyruns3,547 bytesscripts/lib/entity_extract.pyruns4,205 bytesscripts/lib/env.pyruns8,746 bytesscripts/lib/http.pyruns5,715 bytesscripts/lib/models.pyruns4,706 bytesscripts/lib/normalize.pyruns6,083 bytesscripts/lib/openai_reddit.pyruns12,587 bytesscripts/lib/openrouter_search.pyruns6,632 bytesscripts/lib/parallel_search.pyruns4,016 bytesscripts/lib/reddit_enrich.pyruns7,630 bytesscripts/lib/render.pyruns17,796 bytesscripts/lib/schema.pyruns13,245 bytesscripts/lib/score.pyruns11,041 bytesscripts/lib/ui.pyruns19,845 bytesscripts/lib/vendor/bird-search/LICENSEruns1,074 bytesscripts/lib/vendor/bird-search/bird-search.mjsruns3,750 bytesscripts/lib/vendor/bird-search/lib/cookies.jsruns6,266 bytesscripts/lib/vendor/bird-search/lib/features.jsonasset523 bytesscripts/lib/vendor/bird-search/lib/paginate-cursor.jsruns1,225 bytesscripts/lib/vendor/bird-search/lib/query-ids.jsonasset815 bytesscripts/lib/vendor/bird-search/lib/runtime-features.jsruns5,036 bytesscripts/lib/vendor/bird-search/lib/runtime-query-ids.jsruns9,424 bytesscripts/lib/vendor/bird-search/lib/twitter-client-base.jsruns4,853 bytesscripts/lib/vendor/bird-search/lib/twitter-client-constants.jsruns2,535 bytesscripts/lib/vendor/bird-search/lib/twitter-client-features.jsruns18,400 bytesscripts/lib/vendor/bird-search/lib/twitter-client-search.jsruns7,310 bytesscripts/lib/vendor/bird-search/lib/twitter-client-types.jsruns59 bytesscripts/lib/vendor/bird-search/lib/twitter-client-utils.jsruns19,169 bytesscripts/lib/vendor/bird-search/package.jsonruns331 bytesscripts/lib/websearch.pyruns11,688 bytesscripts/lib/xai_x.pyruns6,646 bytesscripts/lib/youtube_yt.pyruns11,580 bytesscripts/store.pyruns20,353 bytesscripts/sync.shruns1,255 bytesscripts/watchlist.pyruns9,283 bytestests/__init__.pyruns19 bytestests/test_cache.pyruns1,984 bytestests/test_dates.pyruns3,684 bytestests/test_dedupe.pyruns3,852 bytestests/test_models.pyruns4,148 bytestests/test_normalize.pyruns4,227 bytestests/test_openai_reddit.pyruns2,760 bytestests/test_render.pyruns3,355 bytestests/test_score.pyruns5,299 bytes
Read SKILL.md
# last30days v2.1: Research Any Topic from the Last 30 Days
Research ANY topic across Reddit, X, YouTube, and the web. Surface what people are actually discussing, recommending, and debating right now.
## 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")
3. **QUERY TYPE**: What kind of research they want:
- **PROMPTING** - "X prompts", "prompting for X", "X best practices" → User wants to learn techniques and get copy-paste prompts
- **RECOMMENDATIONS** - "best X", "top X", "what X should I use", "recommended X" → User wants a LIST of specific things
- **NEWS** - "what's happening with X", "X news", "latest on X" → User wants current events/updatesView the complete source on GitHubSkills included
- last30days
Repository facts
- License
- MIT
- Created
- Mar 5, 2026
- Last pushed
- Mar 26, 2026
- Forks
- 53
- Open issues
- 0
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 4 notes
skills/last30days/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/last30days/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/last30days/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/last30days/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 1 broad permissionin 1 file: last30days/SKILL.md:1
- No dangerous shell commands
- 146 network referencesin 23 files: last30days/tests/test_normalize.py:17 last30days/README.md:7 last30days/CHANGELOG.md:5 and 20 more
- No hidden or obfuscated text
- No instruction overrides
- 49 executable scriptsin 49 files: last30days/scripts/briefing.py:1 last30days/scripts/last30days.py:1 last30days/scripts/lib/__init__.py:1 and 46 more
- 124 references to secretsin 20 files: last30days/scripts/lib/env.py:11 last30days/scripts/last30days.py:149 last30days/README.md:27 and 17 more
- No requests to vote in Hot
Show all 320 signals by file
skills/last30days/CHANGELOG.md
- Network accessline 5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), - Network accessline 6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Network accessline 30
- Engagement-weighted scoring: relevance 45%, recency 25%, engagement 30% (log1p dampening) - Model auto-selection with 7-day cache and fallback chain (gpt-4.1 -> gpt-4o -> gpt-4o-mini) - `--days=N` configurable lookback flag (thanks @jonth - Network accessline 31
- Model auto-selection with 7-day cache and fallback chain (gpt-4.1 -> gpt-4o -> gpt-4o-mini) - `--days=N` configurable lookback flag (thanks @jonthebeef, [#18](https://github.com/mvanhorn/last30days-skill/pull/18)) - Model fallback for unv - Network accessline 32
- `--days=N` configurable lookback flag (thanks @jonthebeef, [#18](https://github.com/mvanhorn/last30days-skill/pull/18)) - Network accessline 33
- Model fallback for unverified orgs (thanks @levineam, [#16](https://github.com/mvanhorn/last30days-skill/pull/16)) - Network accessline 34
- Marketplace plugin support via `.claude-plugin/plugin.json` (inspired by @galligan, [#1](https://github.com/mvanhorn/last30days-skill/pull/1)) - Network accessline 41
- Reddit future timeout (same pattern as YouTube timeout bug) - Process cleanup on timeout/kill -- tracks child PIDs for clean shutdown - Windows Unicode fix for cp1252 emoji crash (thanks @JosephOIbrahim, [#17](https://github.com/mvanhorn/ - Network accessline 42
- Process cleanup on timeout/kill -- tracks child PIDs for clean shutdown - Windows Unicode fix for cp1252 emoji crash (thanks @JosephOIbrahim, [#17](https://github.com/mvanhorn/last30days-skill/pull/17)) - X search returning 0 results on p - Network accessline 43
- Windows Unicode fix for cp1252 emoji crash (thanks @JosephOIbrahim, [#17](https://github.com/mvanhorn/last30days-skill/pull/17)) - Network accessline 48
- @JosephOIbrahim -- Windows Unicode fix ([#17](https://github.com/mvanhorn/last30days-skill/pull/17)) - Network accessline 49
- @levineam -- Model fallback for unverified orgs ([#16](https://github.com/mvanhorn/last30days-skill/pull/16)) - Network accessline 50
- @jonthebeef -- `--days=N` configurable lookback ([#18](https://github.com/mvanhorn/last30days-skill/pull/18)) - Network accessline 62
[2.1.0]: https://github.com/mvanhorn/last30days-skill/compare/v1.0.0...v2.1.0 - Network accessline 63
[1.0.0]: https://github.com/mvanhorn/last30days-skill/releases/tag/v1.0.0
skills/last30days/README.md
- Network accessline 7
1. **Open-class skill with watchlists.** Add any topic to a watchlist - your competitors, specific people, emerging technologies - and /last30days re-researches it on demand or via cron. Designed for always-on environments like [Open Claw - Network accessline 8
2. **YouTube transcripts as a 4th source.** When yt-dlp is installed, /last30days automatically searches YouTube, grabs view counts, and extracts auto-generated transcripts from the top videos. A 20-minute review contains 10x the signal of - Network accessline 13
**The tradeoff:** V2 finds way more content but takes longer - typically 2-8 minutes depending on how niche your topic is. The old V1 was faster but regularly missed results (like returning 0 X posts on trending topics). We think the depth - Network accessline 22
# Clone the repo git clone https://github.com/mvanhorn/last30days-skill.git ~/.claude/skills/last30days - Network accessline 23
git clone https://github.com/mvanhorn/last30days-skill.git ~/.claude/skills/last30days - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 62
git clone https://github.com/mvanhorn/last30days-skill.git ~/.agents/skills/last30days - Network accessline 69
**Designed for [Open Claw](https://github.com/openclaw/openclaw) and similar always-on AI environments.** Add your competitors, specific people, or any topic to a watchlist. When paired with a cron job or always-on bot, /last30days re-resea - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Network accessline 386
# Clone and setup git clone https://github.com/clawdbot/clawdbot.git - Network accessline 387
git clone https://github.com/clawdbot/clawdbot.git - Access to secretsline 398
[Credential-related source omitted] - Access to secretsline 856
[Credential-related source omitted] - Network accessline 906
**Designed for [Open Claw](https://github.com/openclaw/openclaw) and similar always-on environments.** The watchlist stores schedules as metadata - you need cron, launchd, or a persistent bot to actually trigger runs. In Claude Code you ca - Network accessline 914
Inspired by [Peter Steinberger](https://x.com/steipete)'s yt-dlp + [summarize](https://github.com/steipete/summarize) toolchain. Peter's approach of combining yt-dlp for search/metadata with transcript extraction for content analysis was th - Network accessline 934
**Marketplace plugin support** - Ships with `.claude-plugin/plugin.json` for Claude Code marketplace compatibility. (Inspired by [@galligan](https://github.com/galligan)'s PR) - Network accessline 940
- [@JosephOIbrahim](https://github.com/JosephOIbrahim) - Windows Unicode fix - Network accessline 941
- [@levineam](https://github.com/levineam) - Model fallback for unverified orgs - Network accessline 942
- [@jonthebeef](https://github.com/jonthebeef) - `--days=N` configurable lookback - Access to secretsline 952
[Credential-related source omitted] - Access to secretsline 954
[Credential-related source omitted] - Access to secretsline 956
[Credential-related source omitted] - Access to secretsline 957
[Credential-related source omitted] - Access to secretsline 958
[Credential-related source omitted] - Access to secretsline 970
[Credential-related source omitted] - Network accessline 976
*Pair with [Open Claw](https://github.com/openclaw/openclaw) for automated watchlists and briefings. Reddit. X. YouTube. Web. - All synthesized into expert answers and copy-paste prompts.*
skills/last30days/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, AskUserQuestion, WebSearch - Network accessline 5
argument-hint: 'last30 AI video tools, last30 best project management tools' allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch homepage: https://github.com/mvanhorn/last30days-skill - Network accessline 6
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch homepage: https://github.com/mvanhorn/last30days-skill user-invocable: true - Network accessline 7
homepage: https://github.com/mvanhorn/last30days-skill - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Network accessline 20
files: - "scripts/*" homepage: https://github.com/mvanhorn/last30days-skill - Network accessline 21
- "scripts/*" homepage: https://github.com/mvanhorn/last30days-skill tags: - Network accessline 22
homepage: https://github.com/mvanhorn/last30days-skill - Network accessline 261
URL FORMATTING: NEVER paste raw URLs in the output. - **BAD:** "per https://www.rollingstone.com/music/music-news/kanye-west-bully-1235506094/" - Network accessline 262
- **BAD:** "per https://www.rollingstone.com/music/music-news/kanye-west-bully-1235506094/" - Access to secretsline 485
[Credential-related source omitted]
skills/last30days/fixtures/openai_sample.json
- Network accessline 10
{ "type": "output_text", "text": "{\n \"items\": [\n {\n \"title\": \"Best practices for Claude Code skills - comprehensive guide\",\n \"url\": \"https://reddit.com/r/ClaudeAI/comments/abc123/best_practices - Network accessline 11
"type": "output_text", "text": "{\n \"items\": [\n {\n \"title\": \"Best practices for Claude Code skills - comprehensive guide\",\n \"url\": \"https://reddit.com/r/ClaudeAI/comments/abc123/best_practices_for_claude_ - Network accessline 12
"text": "{\n \"items\": [\n {\n \"title\": \"Best practices for Claude Code skills - comprehensive guide\",\n \"url\": \"https://reddit.com/r/ClaudeAI/comments/abc123/best_practices_for_claude_code_skills\",\n \"subreddit
skills/last30days/fixtures/reddit_thread_sample.json
- Access to secretsline 81
[Credential-related source omitted]
skills/last30days/fixtures/xai_sample.json
- Network accessline 10
{ "type": "output_text", "text": "{\n \"items\": [\n {\n \"text\": \"Just shipped my first Claude Code skill! The SKILL.md format is incredibly intuitive. Pro tip: use context: fork for resource-intensive operat - Network accessline 11
"type": "output_text", "text": "{\n \"items\": [\n {\n \"text\": \"Just shipped my first Claude Code skill! The SKILL.md format is incredibly intuitive. Pro tip: use context: fork for resource-intensive operations.\",\n - Network accessline 12
"text": "{\n \"items\": [\n {\n \"text\": \"Just shipped my first Claude Code skill! The SKILL.md format is incredibly intuitive. Pro tip: use context: fork for resource-intensive operations.\",\n \"url\": \"https://x.com/devu
skills/last30days/scripts/briefing.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/last30days/scripts/last30days.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 149
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Access to secretsline 192
[Credential-related source omitted] - Access to secretsline 259
[Credential-related source omitted] - Access to secretsline 333
[Credential-related source omitted] - Access to secretsline 337
[Credential-related source omitted] - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 839
[Credential-related source omitted] - Access to secretsline 874
[Credential-related source omitted] - Access to secretsline 875
[Credential-related source omitted] - Access to secretsline 882
[Credential-related source omitted] - Access to secretsline 883
[Credential-related source omitted] - Access to secretsline 884
[Credential-related source omitted] - Access to secretsline 901
[Credential-related source omitted] - Access to secretsline 902
[Credential-related source omitted] - Access to secretsline 956
[Credential-related source omitted] - Access to secretsline 957
[Credential-related source omitted] - Access to secretsline 1078
[Credential-related source omitted] - Access to secretsline 1079
[Credential-related source omitted] - Access to secretsline 1084
[Credential-related source omitted] - Access to secretsline 1088
[Credential-related source omitted]
skills/last30days/scripts/lib/__init__.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/bird_x.py
- Executable scriptline 1
Executable file - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 157
[Credential-related source omitted] - Network accessline 380
screen_name = author.get("username") or author.get("screen_name", "") if screen_name: url = f"https://x.com/{screen_name}/status/{tweet['id']}" - Network accessline 382
url = f"https://x.com/{screen_name}/status/{tweet['id']}"
skills/last30days/scripts/lib/brave_search.py
- Executable scriptline 1
Executable file - Network accessline 6
API docs: https://api-dashboard.search.brave.com/app/documentation/web-search/get-started - Network accessline 18
ENDPOINT = "https://api.search.brave.com/res/v1/web/search" - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted]
skills/last30days/scripts/lib/cache.py
skills/last30days/scripts/lib/dates.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/dedupe.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/entity_extract.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/env.py
- Executable scriptline 1
Executable file - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 110
[Credential-related source omitted] - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 124
[Credential-related source omitted] - Access to secretsline 125
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 224
[Credential-related source omitted] - Access to secretsline 237
[Credential-related source omitted] - Access to secretsline 259
[Credential-related source omitted]
skills/last30days/scripts/lib/http.py
- Executable scriptline 1
Executable file - Access to secretsline 13
[Credential-related source omitted] - Network accessline 66
req = urllib.request.Request(url, data=data, headers=headers, method=method) - Network accessline 73
for attempt in range(retries): try: with urllib.request.urlopen(req, timeout=timeout) as response: - Network accessline 74
try: with urllib.request.urlopen(req, timeout=timeout) as response: body = response.read().decode('utf-8') - Network accessline 75
with urllib.request.urlopen(req, timeout=timeout) as response: - Network accessline 160
url = f"https://www.reddit.com{path}?raw_json=1"
skills/last30days/scripts/lib/models.py
- Executable scriptline 1
Executable file - Network accessline 9
OPENAI_MODELS_URL = "https://api.openai.com/v1/models" - Network accessline 13
XAI_MODELS_URL = "https://api.x.ai/v1/models" - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 111
[Credential-related source omitted] - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 161
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted]
skills/last30days/scripts/lib/normalize.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/openai_reddit.py
- Executable scriptline 1
Executable file - Network accessline 44
OPENAI_RESPONSES_URL = "https://api.openai.com/v1/responses" - Network accessline 85
{{ "title": "Thread title", "url": "https://www.reddit.com/r/sub/comments/xyz/title/", - Network accessline 86
"title": "Thread title", "url": "https://www.reddit.com/r/sub/comments/xyz/title/", "subreddit": "subreddit_name", - Network accessline 87
"url": "https://www.reddit.com/r/sub/comments/xyz/title/", - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Network accessline 231
sub = sub.lstrip("r/") try: url = f"https://www.reddit.com/r/{sub}/search/.json" - Network accessline 232
try: url = f"https://www.reddit.com/r/{sub}/search/.json" params = f"q={_url_encode(core)}&restrict_sr=on&sort=new&limit={count_per}&raw_json=1" - Network accessline 233
url = f"https://www.reddit.com/r/{sub}/search/.json" - Network accessline 255
"id": f"RS{len(all_items)+1}", "title": str(post.get("title", "")).strip(), "url": f"https://www.reddit.com{permalink}", - Network accessline 256
"title": str(post.get("title", "")).strip(), "url": f"https://www.reddit.com{permalink}", "subreddit": str(post.get("subreddit", sub)).strip(), - Network accessline 257
"url": f"https://www.reddit.com{permalink}",
skills/last30days/scripts/lib/openrouter_search.py
- Executable scriptline 1
Executable file - Network accessline 7
API docs: https://openrouter.ai/docs/quickstart - Network accessline 18
ENDPOINT = "https://openrouter.ai/api/v1/chat/completions" - Access to secretsline 32
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 72
[Credential-related source omitted] - Network accessline 73
[Credential-related source omitted] - Access to secretsline 73
[Credential-related source omitted] - Network accessline 74
"HTTP-Referer": "https://github.com/mvanhorn/last30days-openclaw",
skills/last30days/scripts/lib/parallel_search.py
- Executable scriptline 1
Executable file - Network accessline 7
API docs: https://docs.parallel.ai/search-api/search-quickstart - Network accessline 17
ENDPOINT = "https://api.parallel.ai/v1beta/search" - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted]
skills/last30days/scripts/lib/reddit_enrich.py
- Executable scriptline 1
Executable file - Network accessline 242
for c in top_comments: permalink = c.get("permalink", "") comment_url = f"https://reddit.com{permalink}" if permalink else "" - Network accessline 243
permalink = c.get("permalink", "") comment_url = f"https://reddit.com{permalink}" if permalink else "" item["top_comments"].append({ - Network accessline 244
comment_url = f"https://reddit.com{permalink}" if permalink else ""
skills/last30days/scripts/lib/render.py
- Executable scriptline 1
Executable file - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 278
[Credential-related source omitted]
skills/last30days/scripts/lib/schema.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/score.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/ui.py
- Executable scriptline 1
Executable file - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 368
[Credential-related source omitted] - Access to secretsline 370
[Credential-related source omitted] - Access to secretsline 371
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted] - Access to secretsline 411
[Credential-related source omitted] - Access to secretsline 413
[Credential-related source omitted] - Access to secretsline 414
[Credential-related source omitted] - Access to secretsline 419
[Credential-related source omitted] - Access to secretsline 437
[Credential-related source omitted]
skills/last30days/scripts/lib/vendor/bird-search/LICENSE
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/bird-search.mjs
skills/last30days/scripts/lib/vendor/bird-search/lib/cookies.js
- Executable scriptline 1
Executable file - Access to secretsline 2
[Credential-related source omitted] - Network accessline 5
import { getCookies } from '@steipete/sweet-cookie'; const TWITTER_COOKIE_NAMES = ['auth_token', 'ct0']; const TWITTER_URL = 'https://x.com/'; - Network accessline 6
[Credential-related source omitted] - Access to secretsline 6
[Credential-related source omitted] - Network accessline 7
const TWITTER_URL = 'https://x.com/'; - Network accessline 8
const TWITTER_ORIGINS = ['https://x.com/', 'https://twitter.com/']; - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted]
skills/last30days/scripts/lib/vendor/bird-search/lib/paginate-cursor.js
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/lib/runtime-features.js
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/lib/runtime-query-ids.js
- Executable scriptline 1
Executable file - Network accessline 5
const DEFAULT_TTL_MS = 24 * 60 * 60 * 1000; const DISCOVERY_PAGES = [ 'https://x.com/?lang=en', - Network accessline 6
const DISCOVERY_PAGES = [ 'https://x.com/?lang=en', 'https://x.com/explore', - Network accessline 7
'https://x.com/?lang=en', - Network accessline 8
'https://x.com/explore', - Network accessline 9
'https://x.com/notifications', - Network accessline 10
'https://x.com/settings/profile',
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-base.js
- Executable scriptline 1
Executable file - Access to secretsline 21
[Credential-related source omitted] - Network accessline 65
async fetchWithTimeout(url, init) { if (!this.timeoutMs || this.timeoutMs <= 0) { return fetch(url, init); - Network accessline 66
if (!this.timeoutMs || this.timeoutMs <= 0) { return fetch(url, init); } - Network accessline 67
return fetch(url, init); - Network accessline 70
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs); try { return await fetch(url, { ...init, signal: controller.signal }); - Network accessline 71
try { return await fetch(url, { ...init, signal: controller.signal }); } - Network accessline 72
return await fetch(url, { ...init, signal: controller.signal }); - Network accessline 96
cookie: this.cookieHeader, 'user-agent': this.userAgent, origin: 'https://x.com', - Network accessline 97
'user-agent': this.userAgent, origin: 'https://x.com', referer: 'https://x.com/', - Network accessline 98
origin: 'https://x.com', - Network accessline 99
referer: 'https://x.com/',
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-constants.js
- Executable scriptline 1
Executable file - Network accessline 2
import queryIds from './query-ids.json' with { type: 'json' }; export const TWITTER_API_BASE = 'https://x.com/i/api/graphql'; - Network accessline 3
export const TWITTER_API_BASE = 'https://x.com/i/api/graphql'; - Network accessline 4
export const TWITTER_GRAPHQL_POST_URL = 'https://x.com/i/api/graphql'; - Network accessline 5
export const TWITTER_UPLOAD_URL = 'https://upload.twitter.com/i/media/upload.json'; - Network accessline 6
export const TWITTER_MEDIA_METADATA_URL = 'https://x.com/i/api/1.1/media/metadata/create.json'; - Network accessline 7
export const TWITTER_STATUS_UPDATE_URL = 'https://x.com/i/api/1.1/statuses/update.json';
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-features.js
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-search.js
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-types.js
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-utils.js
- Executable scriptline 1
Executable file - Network accessline 211
case 'TWEET': if (entity.data.tweetId) { return `[Embedded Tweet: https://x.com/i/status/${entity.data.tweetId}]`; - Network accessline 212
if (entity.data.tweetId) { return `[Embedded Tweet: https://x.com/i/status/${entity.data.tweetId}]`; } - Network accessline 213
return `[Embedded Tweet: https://x.com/i/status/${entity.data.tweetId}]`;
skills/last30days/scripts/lib/vendor/bird-search/package.json
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/websearch.py
- Executable scriptline 1
Executable file
skills/last30days/scripts/lib/xai_x.py
- Executable scriptline 1
Executable file - Network accessline 17
XAI_RESPONSES_URL = "https://api.x.ai/v1/responses" - Network accessline 33
{{ "text": "Post text content (truncated if long)", "url": "https://x.com/user/status/...", - Network accessline 34
"text": "Post text content (truncated if long)", "url": "https://x.com/user/status/...", "author_handle": "username", - Network accessline 35
"url": "https://x.com/user/status/...", - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 87
[Credential-related source omitted]
skills/last30days/scripts/lib/youtube_yt.py
- Executable scriptline 1
Executable file - Network accessline 3
Uses yt-dlp (https://github.com/yt-dlp/yt-dlp) for both YouTube search and - Network accessline 175
"video_id": video_id, "title": video.get("title", ""), "url": f"https://www.youtube.com/watch?v={video_id}", - Network accessline 176
"title": video.get("title", ""), "url": f"https://www.youtube.com/watch?v={video_id}", "channel_name": video.get("channel", video.get("uploader", "")), - Network accessline 177
"url": f"https://www.youtube.com/watch?v={video_id}", - Network accessline 242
"--no-warnings", "-o", f"{temp_dir}/%(id)s", f"https://www.youtube.com/watch?v={video_id}", - Network accessline 243
"-o", f"{temp_dir}/%(id)s", f"https://www.youtube.com/watch?v={video_id}", ] - Network accessline 244
f"https://www.youtube.com/watch?v={video_id}",
skills/last30days/scripts/store.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/last30days/scripts/sync.sh
- Executable scriptline 1
#!/usr/bin/env bash
skills/last30days/scripts/watchlist.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/last30days/tests/__init__.py
- Executable scriptline 1
Executable file
skills/last30days/tests/test_cache.py
- Executable scriptline 1
Executable file
skills/last30days/tests/test_dates.py
- Executable scriptline 1
Executable file
skills/last30days/tests/test_dedupe.py
- Executable scriptline 1
Executable file
skills/last30days/tests/test_models.py
skills/last30days/tests/test_normalize.py
- Executable scriptline 1
Executable file - Network accessline 17
"id": "R1", "title": "Test Thread", "url": "https://reddit.com/r/test/1", - Network accessline 18
"title": "Test Thread", "url": "https://reddit.com/r/test/1", "subreddit": "test", - Network accessline 19
"url": "https://reddit.com/r/test/1", - Network accessline 38
"id": "R1", "title": "Old Thread", "url": "https://reddit.com/r/test/1", - Network accessline 39
"title": "Old Thread", "url": "https://reddit.com/r/test/1", "subreddit": "test", - Network accessline 40
"url": "https://reddit.com/r/test/1", - Network accessline 54
"id": "R1", "title": "Thread with engagement", "url": "https://reddit.com/r/test/1", - Network accessline 55
"title": "Thread with engagement", "url": "https://reddit.com/r/test/1", "subreddit": "test", - Network accessline 56
"url": "https://reddit.com/r/test/1", - Network accessline 78
"id": "X1", "text": "Test post content", "url": "https://x.com/user/status/123", - Network accessline 79
"text": "Test post content", "url": "https://x.com/user/status/123", "author_handle": "testuser", - Network accessline 80
"url": "https://x.com/user/status/123", - Network accessline 98
"id": "X1", "text": "Post with engagement", "url": "https://x.com/user/status/123", - Network accessline 99
"text": "Post with engagement", "url": "https://x.com/user/status/123", "author_handle": "user", - Network accessline 100
"url": "https://x.com/user/status/123", - Network accessline 123
id="R1", title="Test", url="https://reddit.com/r/test/1", - Network accessline 124
title="Test", url="https://reddit.com/r/test/1", subreddit="test", - Network accessline 125
url="https://reddit.com/r/test/1",
skills/last30days/tests/test_openai_reddit.py
- Executable scriptline 1
Executable file
skills/last30days/tests/test_render.py
skills/last30days/tests/test_score.py
- Executable scriptline 1
Executable file - Network accessline 85
id="R1", title="Test", url="https://reddit.com/r/test/1", - Network accessline 86
title="Test", url="https://reddit.com/r/test/1", subreddit="test", - Network accessline 87
url="https://reddit.com/r/test/1", - Network accessline 95
id="R2", title="Test 2", url="https://reddit.com/r/test/2", - Network accessline 96
title="Test 2", url="https://reddit.com/r/test/2", subreddit="test", - Network accessline 97
url="https://reddit.com/r/test/2", - Network accessline 124
id="X1", text="Test post", url="https://x.com/user/1", - Network accessline 125
text="Test post", url="https://x.com/user/1", author_handle="user1", - Network accessline 126
url="https://x.com/user/1",
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 3 facts
- Contacts api.search.brave.com, which SKILL.md, the README and the plugin manifest do not mentionlast30days/scripts/lib/brave_search.py:18High confidence
- Contacts openrouter.ai, which SKILL.md, the README and the plugin manifest do not mentionlast30days/scripts/lib/openrouter_search.py:18High confidence
- Contacts api.parallel.ai, which SKILL.md, the README and the plugin manifest do not mentionlast30days/scripts/lib/parallel_search.py:17High confidence
Signal confidence: 313 facts
- Network access in prose of documentationlast30days/CHANGELOG.md:5Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:6Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:30Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:31Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:32Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:33Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:34Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:41Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:42Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:43Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:48Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:49Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:50Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:62Low confidence
- Network access in prose of documentationlast30days/CHANGELOG.md:63Low confidence
- Network access in prose of documentationlast30days/README.md:7Low confidence
- Network access in prose of documentationlast30days/README.md:8Low confidence
- Network access in prose of documentationlast30days/README.md:13Low confidence
- Network access in code of documentationlast30days/README.md:22Low confidence
- Network access in code of documentationlast30days/README.md:23Low confidence
- Access to secrets in code of documentationlast30days/README.md:27Low confidence
- Access to secrets in code of documentationlast30days/README.md:28Low confidence
- Access to secrets in code of documentationlast30days/README.md:29Low confidence
- Access to secrets in code of documentationlast30days/README.md:31Low confidence
- Access to secrets in prose of documentationlast30days/README.md:36Low confidence
- Access to secrets in prose of documentationlast30days/README.md:40Low confidence
- Access to secrets in prose of documentation: reads a credential storelast30days/README.md:44Low confidence
- Access to secrets in code of documentationlast30days/README.md:46Low confidence
- Network access in code of documentationlast30days/README.md:62Low confidence
- Network access in prose of documentationlast30days/README.md:69Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:101Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:102Low confidence
- Access to secrets in code of documentationlast30days/README.md:103Low confidence
- Network access in code of documentationlast30days/README.md:386Low confidence
- Network access in code of documentationlast30days/README.md:387Low confidence
- Access to secrets in prose of documentationlast30days/README.md:398Low confidence
- Access to secrets in prose of documentationlast30days/README.md:856Low confidence
- Network access in prose of documentationlast30days/README.md:906Low confidence
- Network access in prose of documentationlast30days/README.md:914Low confidence
- Network access in prose of documentationlast30days/README.md:934Low confidence
- Network access in prose of documentationlast30days/README.md:940Low confidence
- Network access in prose of documentationlast30days/README.md:941Low confidence
- Network access in prose of documentationlast30days/README.md:942Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:952Low confidence
- Access to secrets in prose of documentationlast30days/README.md:954Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:956Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:957Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuelast30days/README.md:958Low confidence
- Access to secrets in prose of documentationlast30days/README.md:970Low confidence
- Network access in prose of documentationlast30days/README.md:976Low confidence
and 263 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path .claude/commands/.gitkeep | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/last30days/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/last30days/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/last30days/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/last30days/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/last30days/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.