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.

Compare on GitHub

View on GitHubAdd to my skills

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>/
271GitHub stars
-1star in 7 days
1skill in this repository
0commits in 30 days

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

Oct 25, 2026Nov 3, 2026272

30-day change not yet available: not enough history.

Individual skills in this repository

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 tokens

Always available to the agent

SKILL.md

5,068 tokens

When the skill is activated

Reference documents

14,946 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. CRITICAL: Parse User Intent
  2. Research Execution
  3. STEP 2: DO WEBSEARCH AFTER SCRIPT COMPLETES
  4. Judge Agent: Synthesize All Sources
  5. FIRST: Internalize the Research
  6. THEN: Show Summary + Invite Vision
  7. WAIT FOR USER'S RESPONSE
  8. WHEN USER RESPONDS
  9. IF USER ASKS FOR MORE OPTIONS
  10. AFTER EACH PROMPT: Stay in Expert Mode
  11. CONTEXT MEMORY
  12. Output Summary Footer (After Each Prompt)
  13. Security & Permissions

Scripts executed separately

  • scripts/briefing.py
  • scripts/last30days.py
  • scripts/lib/__init__.py
  • scripts/lib/bird_x.py
  • scripts/lib/brave_search.py
  • scripts/lib/cache.py
  • scripts/lib/dates.py
  • scripts/lib/dedupe.py
  • scripts/lib/entity_extract.py
  • scripts/lib/env.py
  • scripts/lib/http.py
  • scripts/lib/models.py
  • scripts/lib/normalize.py
  • scripts/lib/openai_reddit.py
  • scripts/lib/openrouter_search.py
  • scripts/lib/parallel_search.py
  • scripts/lib/reddit_enrich.py
  • scripts/lib/render.py
  • scripts/lib/schema.py
  • scripts/lib/score.py
  • scripts/lib/ui.py
  • scripts/lib/vendor/bird-search/LICENSE
  • scripts/lib/vendor/bird-search/bird-search.mjs
  • scripts/lib/vendor/bird-search/lib/cookies.js
  • scripts/lib/vendor/bird-search/lib/paginate-cursor.js
  • scripts/lib/vendor/bird-search/lib/runtime-features.js
  • scripts/lib/vendor/bird-search/lib/runtime-query-ids.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-base.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-constants.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-features.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-search.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-types.js
  • scripts/lib/vendor/bird-search/lib/twitter-client-utils.js
  • scripts/lib/vendor/bird-search/package.json
  • scripts/lib/websearch.py
  • scripts/lib/xai_x.py
  • scripts/lib/youtube_yt.py
  • scripts/store.py
  • scripts/sync.sh
  • scripts/watchlist.py
  • tests/__init__.py
  • tests/test_cache.py
  • tests/test_dates.py
  • tests/test_dedupe.py
  • tests/test_models.py
  • tests/test_normalize.py
  • tests/test_openai_reddit.py
  • tests/test_render.py
  • tests/test_score.py

Files

  • CHANGELOG.mddoc3,651 bytes
  • README.mddoc54,128 bytes
  • SKILL.mdcore20,078 bytes
  • SKILL.mdcore20,078 bytes
  • SKILL.mdcore20,078 bytes
  • SKILL.mdcore20,078 bytes
  • SKILL.mdcore20,078 bytes
  • SPEC.mddoc3,140 bytes
  • agents/openai.yamlasset448 bytes
  • fixtures/models_openai_sample.jsonasset745 bytes
  • fixtures/models_xai_sample.jsonasset385 bytes
  • fixtures/openai_sample.jsonasset2,303 bytes
  • fixtures/reddit_thread_sample.jsonasset3,934 bytes
  • fixtures/xai_sample.jsonasset2,577 bytes
  • scripts/briefing.pyruns8,178 bytes
  • scripts/last30days.pyruns42,686 bytes
  • scripts/lib/__init__.pyruns29 bytes
  • scripts/lib/bird_x.pyruns14,617 bytes
  • scripts/lib/brave_search.pyruns6,019 bytes
  • scripts/lib/cache.pyruns4,762 bytes
  • scripts/lib/dates.pyruns3,253 bytes
  • scripts/lib/dedupe.pyruns3,547 bytes
  • scripts/lib/entity_extract.pyruns4,205 bytes
  • scripts/lib/env.pyruns8,746 bytes
  • scripts/lib/http.pyruns5,715 bytes
  • scripts/lib/models.pyruns4,706 bytes
  • scripts/lib/normalize.pyruns6,083 bytes
  • scripts/lib/openai_reddit.pyruns12,587 bytes
  • scripts/lib/openrouter_search.pyruns6,632 bytes
  • scripts/lib/parallel_search.pyruns4,016 bytes
  • scripts/lib/reddit_enrich.pyruns7,630 bytes
  • scripts/lib/render.pyruns17,796 bytes
  • scripts/lib/schema.pyruns13,245 bytes
  • scripts/lib/score.pyruns11,041 bytes
  • scripts/lib/ui.pyruns19,845 bytes
  • scripts/lib/vendor/bird-search/LICENSEruns1,074 bytes
  • scripts/lib/vendor/bird-search/bird-search.mjsruns3,750 bytes
  • scripts/lib/vendor/bird-search/lib/cookies.jsruns6,266 bytes
  • scripts/lib/vendor/bird-search/lib/features.jsonasset523 bytes
  • scripts/lib/vendor/bird-search/lib/paginate-cursor.jsruns1,225 bytes
  • scripts/lib/vendor/bird-search/lib/query-ids.jsonasset815 bytes
  • scripts/lib/vendor/bird-search/lib/runtime-features.jsruns5,036 bytes
  • scripts/lib/vendor/bird-search/lib/runtime-query-ids.jsruns9,424 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-base.jsruns4,853 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-constants.jsruns2,535 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-features.jsruns18,400 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-search.jsruns7,310 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-types.jsruns59 bytes
  • scripts/lib/vendor/bird-search/lib/twitter-client-utils.jsruns19,169 bytes
  • scripts/lib/vendor/bird-search/package.jsonruns331 bytes
  • scripts/lib/websearch.pyruns11,688 bytes
  • scripts/lib/xai_x.pyruns6,646 bytes
  • scripts/lib/youtube_yt.pyruns11,580 bytes
  • scripts/store.pyruns20,353 bytes
  • scripts/sync.shruns1,255 bytes
  • scripts/watchlist.pyruns9,283 bytes
  • tests/__init__.pyruns19 bytes
  • tests/test_cache.pyruns1,984 bytes
  • tests/test_dates.pyruns3,684 bytes
  • tests/test_dedupe.pyruns3,852 bytes
  • tests/test_models.pyruns4,148 bytes
  • tests/test_normalize.pyruns4,227 bytes
  • tests/test_openai_reddit.pyruns2,760 bytes
  • tests/test_render.pyruns3,355 bytes
  • tests/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/updates
View the complete source on GitHub

Skills 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 shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/last30days/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/last30days/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/last30days/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 20
    [Credential-related source omitted]

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

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 80
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 124
    [Credential-related source omitted]
  • Access to secretsline 125
    [Credential-related source omitted]

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

  • Executable scriptline 1
    Executable file
  • Network accessline 41
    id="R1",                     title="Test Thread",                     url="https://reddit.com/r/test/1",
  • Network accessline 42
    title="Test Thread",                     url="https://reddit.com/r/test/1",                     subreddit="test",
  • Network accessline 43
    url="https://reddit.com/r/test/1",

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
Signal confidence: 313 facts

and 263 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativePath .claude/commands/.gitkeep.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/last30days/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/last30days/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/last30days/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/last30days/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.