mvanhorn/last30days-skillPublic

AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary

AI summary: An AI agent-led search engine skill that searches people and social signals over the last 30 days.

Stars
63.4K
+178 today
Forks
5.5K
Watchers
215
Open issues
79
Open PRs
57
Contributors
~137
Commits
1.3K
Branches
76

PythonMITCreated Jan 23, 2026Last push 3d agoLatest release v3.25.0+632 stars this week+2.4K this month

Quick answers

What is last30days-skill?
An AI agent-led search engine skill that searches people and social signals over the last 30 days.
What does last30days-skill do?
last30days is an AI agent skill that functions as a specialized search engine for recent, socially-validated content. Instead of relying on traditional editorial ranking, it scores and surfaces information based on upvotes, likes, and financial backing over the past 30 days. It is designed to be integrated into AI coding assistants and agent frameworks like Claude Code, Cursor, and Copilot. By providing a curated feed of trending repositories, discussions, and tools, it helps developers discover what the community actually values right now. The skill operates as a high-fidelity recency engine, systematically bypassing the static knowledge cutoffs inherent to large language models. It aggressively normalizes and deduplicates information across platforms to construct a highly reliable, up-to-the-minute view of reality.
Who is last30days-skill for?
Developers and researchers who want to discover high-signal, community-validated technical content from the recent past using AI assistants.
How do I get started with last30days-skill?
Install via Claude Code with `/plugin install last30days` or globally via `npx skills add mvanhorn/last30days-skill -g`.
How popular is last30days-skill on GitHub?
mvanhorn/last30days-skill has 63,378 stars and 5,514 forks on GitHub, and gained 632 stars in the last 7 days.
What license does last30days-skill use?
mvanhorn/last30days-skill is released under the MIT license.

Star history

since Jul 28, 2026
020K40K60KJul 2026Aug 2026Sep 2026Oct 2026
63.4K stars as of Oct 2, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 24 commits2026-01-24: 22 commits2026-01-25: 9 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 2 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 28 commits2026-02-04: 0 commits2026-02-05: 1 commit2026-02-06: 9 commits2026-02-07: 21 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 8 commits2026-02-15: 12 commits2026-02-16: 0 commits2026-02-17: 1 commit2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 1 commit2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 3 commits2026-02-25: 12 commits2026-02-26: 4 commits2026-02-27: 1 commit2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 5 commits2026-03-03: 13 commits2026-03-04: 2 commits2026-03-05: 11 commits2026-03-06: 8 commits2026-03-07: 1 commit2026-03-08: 4 commits2026-03-09: 11 commits2026-03-10: 1 commit2026-03-11: 20 commits2026-03-12: 2 commits2026-03-13: 5 commits2026-03-14: 4 commits2026-03-15: 2 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 2 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 3 commits2026-03-30: 2 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 7 commits2026-04-09: 23 commits2026-04-10: 3 commits2026-04-11: 9 commits2026-04-12: 2 commits2026-04-13: 5 commits2026-04-14: 17 commits2026-04-15: 10 commits2026-04-16: 0 commits2026-04-17: 3 commits2026-04-18: 5 commits2026-04-19: 8 commits2026-04-20: 1 commit2026-04-21: 3 commits2026-04-22: 6 commits2026-04-23: 1 commit2026-04-24: 8 commits2026-04-25: 5 commits2026-04-26: 2 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 1 commit2026-04-30: 2 commits2026-05-01: 0 commits2026-05-02: 6 commits2026-05-03: 1 commit2026-05-04: 0 commits2026-05-05: 8 commits2026-05-06: 8 commits2026-05-07: 0 commits2026-05-08: 6 commits2026-05-09: 6 commits2026-05-10: 3 commits2026-05-11: 0 commits2026-05-12: 4 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 16 commits2026-05-16: 27 commits2026-05-17: 50 commits2026-05-18: 3 commits2026-05-19: 2 commits2026-05-20: 1 commit2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 1 commit2026-05-30: 5 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 2 commits2026-06-07: 0 commits2026-06-08: 2 commits2026-06-09: 6 commits2026-06-10: 0 commits2026-06-11: 1 commit2026-06-12: 1 commit2026-06-13: 1 commit2026-06-14: 0 commits2026-06-15: 4 commits2026-06-16: 2 commits2026-06-17: 69 commits2026-06-18: 31 commits2026-06-19: 2 commits2026-06-20: 10 commits2026-06-21: 8 commits2026-06-22: 19 commits2026-06-23: 3 commits2026-06-24: 37 commits2026-06-25: 16 commits2026-06-26: 7 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 5 commits2026-07-01: 1 commit2026-07-02: 0 commits2026-07-03: 16 commits2026-07-04: 4 commits2026-07-05: 4 commits2026-07-06: 0 commits2026-07-07: 4 commits2026-07-08: 1 commit2026-07-09: 13 commits2026-07-10: 1 commit2026-07-11: 1 commit2026-07-12: 24 commits2026-07-13: 0 commits2026-07-14: 12 commits2026-07-15: 5 commits2026-07-16: 11 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 10 commits2026-07-20: 2 commits2026-07-21: 8 commits2026-07-22: 0 commits2026-07-23: 2 commits2026-07-24: 41 commits2026-07-25: 2 commits2026-07-26: 5 commits2026-07-27: 0 commits2026-07-28: 3 commits2026-07-29: 0 commits2026-07-30: 4 commits2026-07-31: 6 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 6 commits2026-08-08: 3 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 1 commit2026-08-14: 11 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 2 commits2026-08-19: 0 commits2026-08-20: 5 commits2026-08-21: 1 commit2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 1 commit2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 3 commits2026-09-01: 9 commits2026-09-02: 1 commit2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 8 commits2026-09-08: 10 commits2026-09-09: 1 commit2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 20 commits2026-09-13: 5 commits2026-09-14: 0 commits2026-09-15: 1 commit2026-09-16: 6 commits2026-09-17: 6 commits2026-09-18: 3 commits2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 4 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 1 commit2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
1,038 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    63,378 stars

  • Very active

    1,038 commits in 52 weeks

  • Community-driven

    ~137 contributors

  • Outside contributions

    70% of recent commits from the community

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    29 trending appearances

What last30days-skill does

last30days is an AI agent skill that functions as a specialized search engine for recent, socially-validated content. Instead of relying on traditional editorial ranking, it scores and surfaces information based on upvotes, likes, and financial backing over the past 30 days. It is designed to be integrated into AI coding assistants and agent frameworks like Claude Code, Cursor, and Copilot. By providing a curated feed of trending repositories, discussions, and tools, it helps developers discover what the community actually values right now. The skill operates as a high-fidelity recency engine, systematically bypassing the static knowledge cutoffs inherent to large language models. It aggressively normalizes and deduplicates information across platforms to construct a highly reliable, up-to-the-minute view of reality.

Developers and researchers who want to discover high-signal, community-validated technical content from the recent past using AI assistants.

  • Socially validated search: Ranks results based on community engagement metrics rather than SEO.
  • Agent integration: Designed to be installed as a skill in AI assistants like Claude, Cursor, and Copilot.
  • Recent focus: Strictly limits search scope to activity from the last 30 days to ensure relevance.
  • Cross-platform compatibility: Supports installation via npx, Claude marketplace, and OpenClaw.
  • Pipeline architecture: Uses a v3 pipeline for data ingestion and a defined SKILL.md specification for runtime behavior.
  • Information Normalization: Cross-references data from diverse platforms to build a cohesive narrative
  • Static Cutoff Mitigation: Bypasses the fundamental training limitations of models by dynamically injecting recent context

Where teams use it

Discovering trending tools

Developers ask their AI assistant to find the most popular new repositories from the last month.

Evaluating community consensus

Engineers use the search engine to see which frameworks or libraries have gained the most traction recently.

Enhancing AI assistant context

Users install the skill to give their local LLM access to real-time, community-vetted information.

Agentic automation

Autonomous coding agents use the skill to research the best tools before starting a new project.

Sentiment Tracking

Aggregating the immediate public reaction to a brand's recent product launch across social channels.

Cryptocurrency Analysis

Summarizing the latest technical and social developments for a specific token over the past month.

Getting started: Install via Claude Code with `/plugin install last30days` or globally via `npx skills add mvanhorn/last30days-skill -g`.

README

main branch

/last30days

English | Français | Deutsch | Español | Português (Brasil) | 日本語 | 简体中文

last30days - an AI agent-led search engine that searches people, not editors

GitHub Trending #1 Repository Of The Day
mvanhorn/last30days-skill | Trendshift
Validate status

An AI agent-led search engine scored by upvotes, likes, and real money - not editors.

This README tracks the current v3 pipeline. The runtime skill spec lives in skills/last30days/SKILL.md, which is the source of truth for the latest command and setup behavior.

Claude Code (recommended — auto-updates via marketplace):

/plugin marketplace add mvanhorn/last30days-skill
/plugin install last30days

Codex, Cursor, Copilot, Gemini CLI, or any of 50+ Agent Skills hosts:

npx skills add mvanhorn/last30days-skill -g

(-g installs globally for your user, available across all projects. Drop it to scope per-project.)

More install options (claude.ai web, OpenClaw, manual) in the Install section below.

Zero config. Reddit, HN, Polymarket, and GitHub work immediately. Run it once and the setup wizard unlocks X, YouTube, TikTok, arXiv, Techmeme, and more in 30 seconds.


Reddit upvotes. X likes. YouTube transcripts. TikTok engagement. Polymarket odds backed by real money and insider information. That's millions of people voting with their attention and their wallets every day. /last30days searches all of it in parallel, scores it by what real people actually engage with, and an AI agent judge synthesizes it into one brief.

Google aggregates editors. /last30days searches people.

You can't get this search anywhere else because no single AI has access to all of it. Google search doesn't touch Reddit comments or X posts. ChatGPT has a deal with Reddit but can't search X or TikTok. Gemini has YouTube but not Reddit. Claude has none of them natively. Each platform is a walled garden with its own API, its own tokens, its own auth. But you can bring your own keys and browser sessions, and suddenly an AI agent can search all of them at once, score them against each other, and tell you what actually matters.

That's the unlock. Not one better search engine. A dozen disconnected platforms, bridged by an agent.

/last30days Peter Steinberger

You have a meeting tomorrow. You Google them. You get their LinkedIn from 2023. /last30days gives you what they're actually doing this month: joined OpenAI to work on Codex, fighting Anthropic's ban on third-party agents, shipping 23 PRs at 85% merge rate, building "LobsterOS" for cross-device agent control, and r/ClaudeCode hit 569 upvotes debating whether he's a hero or "insufferable." Scattered across X posts, Reddit threads, YouTube transcripts, and GitHub commits. None of it was on Google.

Why this exists

I built it to keep up in AI. Everything changes every day and the Reddit and X nerds are always on top of it first. I needed better prompts, and the training data was always months behind what the community had already figured out.

But it turned into something bigger. Now I run it before a sales call to know the last 30 days truth about a business. Before a meeting to read someone's recent tweets and podcast transcripts. Before a Disney World trip to know which rides are closed and what the community says about Genie+. Before I build anything to know what problems people are actually hitting.

If you're meeting with a CEO, have you read all their tweets and YouTube transcripts from the last 30 days? I have.

Sources, scored by the people

Source What the people tell you
Reddit The unfiltered take. Top comments with real upvote counts, free, no API key. The real opinions that Google buries.
X / Twitter The hot take, the expert thread, the breaking reaction. First to know, first to argue.
YouTube The 45-minute deep dive. Full transcripts searched for the 5 quotable sentences that matter.
TikTok The creator reaching 3.6M people with a take you'll never find on Google.
Instagram Reels The influencer perspective with spoken-word transcripts. The visual culture signal.
Hacker News The developer consensus. 825 points, 899 comments. Where technical people actually argue.
Polymarket Not opinions. Odds. Backed by real money. 96% confidence on album sales. 4% on an acquisition.
GitHub For people: PR velocity, top repos by stars, release notes. For topics: issues and discussions.
Digg Curated story clusters from Digg's AI 1000 leaderboard (~1000 high-signal AI accounts on X), with attributable inline quotes (no X auth required). Auto-enabled when digg-pp-cli is on PATH.
arXiv The papers behind the hype. New research in the window, free, no API key. Auto-enabled when arxiv-pp-cli is on PATH (first-run setup installs it).
Techmeme The tech-news editorial layer, date-windowed to your 30 days. Free, no API key. Auto-enabled when techmeme-pp-cli is on PATH (first-run setup installs it).
LinkedIn The professional signal. Posts and articles, with articles weighted as high signal.
Meta Ads What a brand is paying to say. Live Meta ad creatives launched this month, with copy, promo codes, and spoken transcripts.
StockTwits Trader sentiment. Auto-activates when your topic is a ticker or crypto.
Threads The post-Twitter text layer. Conversations from creators and brands.
Pinterest Visual discovery. Pins, saves, and comments on products and ideas.
Xiaohongshu (RED) Chinese lifestyle, product, and creator signals. Requested explicitly with --search xhs when a logged-in x-mcp browser plugin or xiaohongshu-mcp service is running locally.
Bluesky The decentralized social layer. AT Protocol posts from the post-Twitter migration.
Perplexity Controlled Agent API synthesis, OpenRouter Sonar fallback, raw Search API rows, and explicit Deep Research.
Web The editorial coverage, the blog comparisons. One signal of many, not the only one.

Community contributors keep adding more. Truth Social and other niche sources are in the engine with more on the way.

A Reddit thread with 1,500 upvotes is a stronger signal than a blog post nobody read. A TikTok with 3.6M views tells you more about what's culturally relevant than a press release. Polymarket odds backed by $66K in volume are harder to argue with than a pundit's guess.

The synthesis ranks by what real people actually engaged with. Social relevancy, not SEO relevancy.

What people actually use it for

Before a meeting. /last30days Peter Steinberger - joined OpenAI's Codex team, fighting Anthropic's ban on third-party agents, 23 PRs merged at 85% merge rate on GitHub, building LobsterOS for cross-device agent control. r/ClaudeCode: "Ever since OpenClaw released, it was widely known that if you run it through anything other than the API, you were gonna get banned eventually" (227 upvotes). That's not on LinkedIn.

To read hiring signals. /last30days Listen Labs --hiring-signals - current jobs and careers pages become cited evidence for focus shifts: hiring into enterprise security, customer success, infrastructure, or product expansion. The report says what the hiring appears to signal, not what the roadmap will ship.

To find the topic before it peaks. Ask /last30days what's exploding in AI agents? and the skill switches to discovery mode: the engine sweeps Reddit category listings, Hacker News front/best stories, Digg's AI 1000 feed, and X when authenticated; your agent judges the nominations (names, junk filtering, content-worthiness) and writes podcast / X-article angles; then you get 5-10 velocity-ranked topics. Every result includes cross-source numbers, a momentum label, and a ready-to-run /last30days "<topic>" follow-up.

When something drops. /last30days Kanye West - UK blocked his visa, Wireless Festival canceled, sponsors fled. But BULLY debuted #2 on Billboard. Fantano came back from his "Yay sabbatical" to review it (653K views). SoFi Homecoming brought out Lauryn Hill and Travis Scott for 44 songs. Polymarket: "Will Kanye tweet again?" 86% Yes. 23 Reddit threads, 17 YouTube videos, 86K upvotes.

To compare tools. /last30days OpenClaw vs Hermes vs Paperclip - "These aren't competitors, they're layers." OpenClaw is the executor (351K GitHub stars, live), Hermes is the self-improving brain (31K stars), Paperclip is the org chart (49K stars). Star counts pulled live from the GitHub API, not stale blog posts. Side-by-side table with architecture, memory, security, best-for. Per @IMJustinBrooke: "OpenClaw = Charmander, Hermes = Charizard."

To understand the world. /last30days Iran vs USA - Day 38 of the war. Trump's Tuesday deadline for Iran to reopen the Strait of Hormuz. Two US warplanes downed. Oil at $126/barrel. The IEA called it "the largest supply disruption in the history of the global oil market." Polymarket: ceasefire by Dec 31 at 74%. 27 X posts, 10 YouTube videos, 20 prediction markets.

Before a trip. /last30days Universal Epic Universe - Expansion already under construction. "Project 680" permit filed. Fireworks show confirmed by infrastructure but unannounced. Wait times: Mine-Cart Madness averaging 148 minutes. No annual pass yet, and locals are frustrated. Stardust Racers down for refurbishment through April 5.

To learn something fast. /last30days Nano Banana Pro prompting - JSON-structured prompts are replacing tag soup. @pictsbyai's nested format prevents "concept bleeding." Edit-first workflow beats regeneration. Then it writes you a production prompt using exactly what the community said works.

What's new

Since the v3.3 announcement in May, as of v3.11.1 (July 2026): 175 merged PRs - 122 of them from 52 community contributors - across 15 releases. This is what landed.

First-class on OpenAI Codex

/last30days is now a native Codex plugin with guided setup - not a port, a first-class citizen. Renderer-aware citations mean Codex output reads like a brief instead of URL soup (#694), and the same engine runs on Claude Code, Cursor, Copilot, Gemini CLI, Claude Desktop, OpenClaw, and 50+ Agent Skills hosts. Codex plugin manifest by @rfoust (#686), Codex auth fix by @tmchow (#698).

arXiv, Techmeme, and Digg - free, no API keys

arXiv brings the papers behind the hype and Techmeme brings the editorial tech-news layer - free, zero keys, and first-run setup installs their CLIs so they activate automatically (#709). Digg's AI 1000 story clusters arrive without X auth the same way - setup installs the free Digg CLI for you (#590). Trustpilot ships opt-in for consumer-brand research.

Free Reddit grew real scores and top comments

Reddit's public .json API died; the free path came back stronger. Keyless RSS + shreddit scraping (#457), dedicated-subreddit discovery with real upvote counts via arctic-shift (#696), and a relevance floor so a viral off-topic post can't hijack your brief (#488, thanks @rzachsmith). No API key. Real scores. Top comments included.

The best comments in every brief

Comments are now a default-on layer across sources: Instagram comments with rank-based diversity so five hot takes don't all come from one post (#751), YouTube comments plus a ScrapeCreators transcript backup for when yt-dlp strikes out (#637), and crowd-voted comments weighted into Best Takes so the community's funniest lines survive scoring (#592, #608).

One doctor command

Ask for a health check and the doctor runs every source, then prescribes exact fixes - which key is missing, which CLI is off PATH, which cookie expired (#753). No more guessing why X came back thin.

X search, rebuilt

The X pipeline got a ground-up overhaul: FROM and ABOUT lanes so a person's own posts and the conversation about them both rank (#610), person-aware subquery disambiguation (#611), first-party authorship grounding with interaction-signal ranking (#613), and a single X source with automatic backend failover (#622). Plus an honest --diagnose that actually probes auth (#609).

More sources joined

LinkedIn via ScrapeCreators, with articles as high signal (@ravstr, #702). StockTwits auto-activates for ticker and crypto topics (@wtiwana, #658). Perplexity grew direct API modes and async Deep Research (@sk-holmes, #629).

Hardened by the community

The security wave was almost entirely community work: stored-XSS fixes in the HTML renderer (@iliaal, @aaronjmars), locked-down cookie temp files, supply-chain-hardened CI with OpenSSF Scorecard and build provenance attestation (@shaanmajid, @hammadxcm, @aniruddh909), Semgrep and OSV-Scanner scans plus a PR dependency-review gate (@23241a6749), a test-coverage floor introduced at 60% and since raised to 84% (@gourab5139014), and a Hermes security scan cleared of every CRITICAL finding (#768).

Reaches further

Hebrew and non-Latin languages (@dudyme). CJK-aware tokenization for Chinese sources (@An-idd). A Windows compatibility wave. Cookie extraction across the full Chromium family - Brave, Edge, Vivaldi, Opera, Arc (@andrey-esipov) - plus macOS Keychain and Linux pass(1) credential sources. --as-of historical lookback (@chiyi-creator). Auto-provisioned Python 3.12 via uv (@buntysomroy). --hiring-signals for reading a company's job pages. Watchlist deltas between runs.

Still in the box from v3

The v3 foundations are all still here: the pre-research brain that resolves the right handles, subreddits, and hashtags before a single API call fires (built by @j-sperling); Best Takes scoring for humor and virality alongside relevance; cross-source cluster merging; single-pass comparisons ("CLI vs MCP" in 3 minutes, not 12); auto-discovered --competitors comparisons; GitHub person-mode (--github-user=steipete); ELI5 mode ("eli5 on" after any run); and shareable, self-contained HTML briefs (--emit=html). Configuration knobs live in CONFIGURATION.md.

Install

Surface Install Updates
Claude Code (recommended) /plugin marketplace add mvanhorn/last30days-skill Auto via marketplace, or claude plugin update last30days@last30days-skill
Grok (xAI Build CLI) grok plugin marketplace add mvanhorn/last30days-skill then grok plugin install last30days grok plugin update last30days
Codex, Cursor, Copilot, Gemini CLI, or any of 50+ Agent Skills hosts npx skills add mvanhorn/last30days-skill -g npx skills update last30days -g
claude.ai (web) Download last30days.skill and upload via claude.ai > Customize > Skills > + > Create skill > Upload a skill Re-download and re-upload
Claude Desktop Download the .mcpb for your platform and drag into Settings > Extensions Re-download and drag the new bundle in
OpenClaw clawhub install last30days-official clawhub update last30days-official

Claude Code (recommended)

/plugin marketplace add mvanhorn/last30days-skill

Recommended because the Claude Code marketplace handles updates for you — the plugin cache is versioned and auto-refreshes when a new release publishes. Run claude plugin update last30days@last30days-skill to force a check.

If you'd rather use the agent-skills install path on Claude Code, that's also supported:

npx skills add mvanhorn/last30days-skill -g -a claude-code

Quick Try-Link

Try Last30Days Research Skill in Telegram or WhatsApp

The native plugin and the npx skills install can coexist. Note that Claude Code does not dedupe across install methods: if you have both the marketplace plugin and the npx skills copy active, /last30days will show two entries. Use one install method per machine.

Grok (xAI Build CLI)

Grok Build (grok) installs last30days as a native plugin. Direct install tracks the repository:

grok plugin install mvanhorn/last30days-skill

Or add this repo as a marketplace source, then install by plugin name:

grok plugin marketplace add mvanhorn/last30days-skill
grok plugin install last30days

Add --trust to skip the install confirmation. Update with grok plugin update last30days. Grok also reads the Claude Code manifests for compatibility; the native .grok-plugin/ pair is the first-class lane (and what an official xAI marketplace listing points at). npx skills add remains a valid cross-host fallback. On Grok Bot, X search runs through the bot's X connector, with the official X API (X_BEARER_TOKEN) as backup.

Codex, Cursor, Copilot, Gemini CLI, and other Agent Skills hosts

Install via the open Agent Skills CLI — supports 50+ harnesses including codex, cursor, github-copilot, gemini-cli, claude-code, windsurf, cline, continue, roo, aider-desk, opencode, goose, and more (full list on the vercel-labs/skills repo).

npx skills add mvanhorn/last30days-skill -g

The -g (global) flag installs to your user directory so the skill is available across all projects. Without -g, npx skills installs project-locally into ./.skills/ (committed with the repo). For a research-the-world tool, global is what you want.

Codex desktop and other folder-mode hosts can work in ordinary folders as well as Git repos. To inspect what a run would read and write without starting research, run the bundled scripts/last30days.py --preflight from the loaded skill directory; in a source checkout, the equivalent command is python3 skills/last30days/scripts/last30days.py --preflight. It shows the config source, browser-cookie plan, planned writes, optional commands, and ignored project config without reading cookies, writing files, or running research. First-run setup does not require it.

By default this installs for whichever harness npx skills detects. To target a specific one (or multiple):

npx skills add mvanhorn/last30days-skill -g -a codex
npx skills add mvanhorn/last30days-skill -g -a cursor
npx skills add mvanhorn/last30days-skill -g -a gemini-cli
npx skills add mvanhorn/last30days-skill -g -a codex -a cursor

Update later with:

npx skills update last30days -g

Or update everything you've installed globally via npx skills:

npx skills update -g

List and remove with npx skills list -g and npx skills remove last30days -g.

claude.ai (web)

  1. Download last30days.skill from the latest release
  2. Go to claude.ai > Customize > Skills
  3. Click the + button in the Skills panel > click on Create skill > Upload a skill and browse/drop the file in

Enable "Code execution and file creation" under Capabilities first — skills won't run without it.

Claude Desktop

Claude Desktop installs /last30days as an MCP server via a .mcpb bundle (a one-click Model Context Protocol package).

  1. Go to the latest release and download the .mcpb for your platform:
    • macOS Apple Silicon: last30days-pp-mcp-darwin-arm64.mcpb
    • macOS Intel: last30days-pp-mcp-darwin-amd64.mcpb
    • Linux x86_64: last30days-pp-mcp-linux-amd64.mcpb
  2. Open Claude Desktop, go to Settings > Extensions, and drag the file in.
  3. When prompted, paste API keys for the sources you want to enable. Every field is optional — the engine degrades to web-only mode if you skip them all. Keys are stored in your OS keychain.
  4. Restart Claude Desktop. Ask Claude to "research Peter Steinberger" or any topic and it will call the research tool.

Host requirement: Python 3.12+ on PATH. The bundle ships the engine source but uses your local Python interpreter. Install from python.org on Windows; macOS and most Linux distros ship a compatible version.

Keys don't sync with the Code skill. Claude Desktop and Claude Code maintain separate credential stores by design. If you already configured ~/.config/last30days/.env for the Code skill, you'll re-enter the same keys here once.

Windows support is deferred until per-platform manifest entry points are sorted out; track in a follow-up issue.

OpenClaw

clawhub install last30days-official

For X/Twitter action workflows outside /last30days research, such as posting tweets or replies, follower export, media handling, monitors, and giveaway draws, use TweetClaw as the companion OpenClaw plugin. TweetClaw is maintained by Xquik-dev and is listed only as an optional companion path, not a last30days dependency or endorsement.

Manual (developer)

git clone https://github.com/mvanhorn/last30days-skill.git
ln -s "$(pwd)/last30days-skill/skills/last30days" ~/.claude/skills/last30days

The symlink keeps the install in sync with your working tree as you edit — no re-copy needed. For claude.ai, build the .skill file from source: bash skills/last30days/scripts/build-skill.sh produces dist/last30days.skill.

Reddit (with comments), Hacker News, Polymarket, and GitHub work immediately. Zero configuration. Run /last30days once and the setup wizard unlocks more sources in 30 seconds, including the free arXiv and Techmeme CLIs.

Bring your own keys

These platforms don't have relationships with each other. X doesn't know what Reddit thinks. YouTube doesn't see TikTok. But you can bring your own API keys and browser tokens, and suddenly you have access to all of them at once.

Sources What you need Cost
Reddit (with comments) + HN + Polymarket + GitHub + StockTwits Nothing Free
arXiv + Techmeme Free CLIs, auto-installed by first-run setup Free
X / Twitter Set X_BEARER_TOKEN for the official X API (recent posts, about the last week, unless your X developer project has full-archive access; the default on Grok Bot, opt-in elsewhere with LAST30DAYS_X_BACKEND=xapi), or log into x.com in any browser, or set XQUIK_API_KEY / XAI_API_KEY X API credits come from your X developer project; browser cookies are free; other keys are provider-specific
YouTube brew install yt-dlp Free
Bluesky App password from bsky.app Free
TikTok + Instagram + Threads + Pinterest + LinkedIn + YouTube comments ScrapeCreators key 10,000 free calls, then PAYG
Xiaohongshu (RED) Run a logged-in x-mcp browser plugin or xiaohongshu-mcp service and opt in with --search xhs per run or INCLUDE_SOURCES=xiaohongshu in .env; last30days auto-probes http://localhost:18060 then http://host.docker.internal:18060, or use XIAOHONGSHU_API_BASE for a custom URL No last30days API key; depends on your local browser-session service
DripStack (premium financial newsletters) Opt-in: --search dripstack per run, or INCLUDE_SOURCES=dripstack in .env No key; free public search API
Perplexity Agent API / Search API / Deep Research Perplexity key, or OpenRouter key as Sonar fallback Pay as you go; a direct key enables Agent API and background Deep Research
Web search Brave Search key 2,000 free queries/month

macOS Keychain (optional)

On macOS you can store keys in the system Keychain instead of a .env file. The skill picks them up automatically as the lowest-priority source — .env files and process environment still win on collision.

# Interactive setup — prompts for each known key, skip with empty input
skills/last30days/scripts/setup-keychain.sh

# Or store a single key by hand
security add-generic-password -a "$USER" -s last30days-XAI_API_KEY -w "xai-..."

# Inspect / clean up
skills/last30days/scripts/setup-keychain.sh --list
skills/last30days/scripts/setup-keychain.sh --delete XAI_API_KEY

Items are stored under service name last30days-<KEY> for the current user. On non-Darwin platforms the loader is a no-op, so there is no behaviour change for Linux/Windows users.

Already have keys under different Keychain service names? Set the non-secret LAST30DAYS_KEYCHAIN_ALIASES mapping described in CONFIGURATION.md instead of copying secrets.

See CONFIGURATION.md for the full per-source key matrix, reasoning provider priority, and web-search backend priority.

Configuration

Two things you'll likely want to know on day one:

Where research files are saved. LAST30DAYS_MEMORY_DIR defaults to ~/Documents/Last30Days/ (Windows: C:\Users\<you>\Documents\Last30Days\). Override by setting that env var to any path in your shell, or --save-dir <path> per run. Use --output <file> when you need the rendered result at an exact path, using the format selected by --emit. Use --save-suffix=<name> to keep multiple variations of the same topic separate (e.g. per client). Each --save-dir run produces <slug>-raw[-suffix].md. Optionally run python3 skills/last30days/scripts/last30days.py --preflight to review planned writes without starting research.

Structured output for agents and workflows. Ask /last30days for machine-readable JSON to receive the stable, versioned agent profile. For direct engine use in scripts or development, run python3 skills/last30days/scripts/last30days.py "AI coding agents" --emit=json; add --json-profile=raw only when you need the unversioned internal Report dump. See the JSON export field reference and versioning policy.

Topic-less discovery. Ask /last30days what's trending in AI agents? to get a ranked discovery brief instead of researching a topic you already know - on an agent host this runs the three-command host-judged protocol (the model names topics, filters junk, scores worthiness, and writes the content angles). For direct engine use in scripts or cron, run python3 skills/last30days/scripts/last30days.py --discover "AI agents" (one-shot: deterministic topic names, no angles); add --emit=json for the versioned discovery contract. Discovery is mutually exclusive with a positional topic and --drill.

Trend monitoring across runs. The default mode produces a fresh markdown snapshot per run. To accumulate findings over time, add --store to persist into a SQLite database, then use scripts/watchlist.py for scheduled runs (with optional Slack / webhook delivery on new findings) and scripts/briefing.py for daily / weekly digests. The full cadence pattern is in CONFIGURATION.md.

A subscribable research library. Ask /last30days to build your library feed, or use python3 skills/last30days/scripts/last30days.py library feed directly for scripting and development. It turns saved briefs into index.html, a local Atom feed.xml, and readable brief pages. Add --publish only when you want the HTML index and brief pages hosted; publishing is explicit opt-in and public by default. To make the Atom feed subscribable, host the generated output directory on a static host such as GitHub Pages.

Search everything you've researched. Ask /last30days search my library for MCP servers or /last30days have I researched MCP servers before?. For direct engine use, run python3 skills/last30days/scripts/last30days.py library search "MCP servers". Search is offline and deterministic: it incrementally indexes the same saved briefs used by the library feed, merges matching per-run store sightings, and groups results by topic and date. Fresh runs also surface a compact From your library section when prior research overlaps the current topic; set LAST30DAYS_LIBRARY_CONTEXT=off to disable that passive context.

Per-client wrapper scripts, custom category-peer subreddits, and the experimental beta channel for in-progress customizations are also documented in CONFIGURATION.md.

Showcase: community research feeds

Published a recurring AI update, market watch, or wonderfully narrow obsession with last30days? Share the public library URL—or the Atom URL after hosting feed.xml on a static host—in the community showcase thread. Community feeds will be linked here as their owners submit them; the thread is the collection point in the meantime.

How it works

  1. You type a topic. Person, company, product, technology, "X vs Y." Anything.
  2. The agent resolves who matters. Finds X handles (including founders), GitHub repos, subreddits, TikTok hashtags, YouTube channels. For "Kanye West" it knows r/hiphopheads, @kanyewest, and "bully review" on YouTube. For "OpenClaw" it resolves openclaw/openclaw on GitHub and fetches live star counts.
  3. All sources searched in parallel. Multi-query expansion. Results scored by engagement, relevance, freshness.
  4. The depth nobody else has. Full YouTube transcripts from reaction videos. Top Reddit comments with upvote counts. TikTok captions. Polymarket odds. Not just titles and links.
  5. Same story, merged. Wireless Festival announced on Reddit, discussed on X, ticket prices on TikTok = one cluster, not three separate items.
  6. Synthesized into one brief. Grounded in specific data. Cited by source. Ranked by what people actually engage with. Not "here's what I found." It's "here's what matters."
  7. Then it becomes your expert. After one run, your Claude session knows everything the community knows. Ask follow-up questions. Have it write prompts, draft emails, plan trips, architect systems - all grounded in what's real right now.

What people are saying

"I found a Claude Code skill that researches any topic across Reddit, X, YouTube, and HN from the last 30 days. Then writes the prompts for you. I've been manually searching Reddit and X for research before every piece of content I write. Tab by tab. Thread by thread. That's the part that takes 90 minutes. This eliminates it." -@itsjasonai

"This one skill replaced my entire research workflow. You give it a topic, it scrapes Reddit, X, and the web for what people are actually talking about. Not old blog posts. Real conversations from the last 30 days." -@itswilsoncharles

"5 of the 10 trending repos on GitHub today are Claude tools. #1: mvanhorn/last30days-skill" -@yieldhunter95

Open source

MIT license. No tracking. No analytics. Your research stays on your machine. 2,700+ tests.

Built with Python 3.12+, yt-dlp, Node.js (vendored Bird client for X search), and ScrapeCreators API. v3 engine architecture by @j-sperling.

See CONTRIBUTING.md to open a PR, CONTRIBUTORS.md for the full list of community contributors, and CHANGELOG.md for version history.

Star History

Star History Chart

@slashlast30days · github.com/mvanhorn/last30days-skill

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

46 total
  1. v3.25.0v3.25.0Sep 18, 2026780 downloads

    ## What's Changed * fix(env): treat unsubstituted config templates as unconfigured by @SomSamantray in https://github.com/mvanhorn/last30days-skill/pull/1126 * test(backends): isolate the grok off-PATH probe from the real filesystem by @iliaal in https://github.com/mvanhorn/last30days-skill/pull/1123 * fix(release): bring mcp/manifest.json into the version lockstep by @iliaal in https://github.com/mvanhorn/last30days-skill/pull/1122 * fix(env): strip trailing inline comments from unquoted .env values by @iliaal in https://github.com/mvanhorn/last30days-skill/pull/1121 * Added: Docs option: quick first run for /last30days by @Nikhil433-dell in https://github.com/mvanhorn/last30days-skill/pull/832 * fix: entity-miss demotion is inert on topics without a distinctive entity by @terry-li-hm in https://github.com/mvanhorn/last30days-skill/pull/888 * fix: accept an API root in *_BASE_URL overrides by @Opgeek-1 in https://github.com/mvanhorn/last30days-skill/pull/918 * fix(setup): surface ScrapeCreators /profile 5xx instead of already-linked by @arimu1 in https://github.com/mvanhorn/last30days-skill/pull/925 * LinkedIn source: honor the date window, follow the cursor, and signal partial re

  2. v3.24.0v3.24.0Sep 9, 2026498 downloads

    ## What's Changed * X search over the official X API, plus the Grok Bot X connector by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1124 * chore(release): bump version to 3.24.0 by @github-actions[bot] in https://github.com/mvanhorn/last30days-skill/pull/1125 **Full Changelog**: https://github.com/mvanhorn/last30days-skill/compare/v3.23.1...v3.24.0

  3. v3.23.1v3.23.1Sep 8, 202697 downloads

    ## v3.23.1 — reliability and security fixes This maintenance release brings together the reviewed PR cleanup. No new research sources or authentication defaults are introduced. ### Highlights - **More reliable research:** Bluesky refreshes expired sessions correctly, explicit research plans retain their selected sources, and named Instagram/TikTok creators retain first-party provenance in results. - **Safer execution:** cross-origin redirects strip credential headers, the Claude Code hook no longer falls back to the current directory, and automatically discovered MCP Python interpreters must resolve to absolute paths. - **Quieter Keychain checks:** setup and listing check whether entries exist without requesting plaintext passwords. The existing credential writer is unchanged; this is not a complete fix for command-line credential exposure. - **Maintenance:** clearer hookless-install guidance, portable Amazon test dates, citation handling for Cursor agent chat, and security-tool updates. Codex authentication and momentum analysis remain future proposals, not features shipped in this release. Thanks to @Comradery64 for the original Keychain contribution in [#1061](https://githu

  4. v3.23.0v3.23.0Sep 1, 2026403 downloads

    ## What's Changed * feat(x): extra bird cookie lookups on Linux and Mac mini (MacBook unchanged; grok pin-only) by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1087 * docs(x): stop listing ScrapeCreators as an X backend by @khsaurabh in https://github.com/mvanhorn/last30days-skill/pull/1070 * fix(cookies): parse Windows Firefox profiles.ini as UTF-16 by @khsaurabh in https://github.com/mvanhorn/last30days-skill/pull/1068 * fix(youtube): keep transcribed videos when the date window is empty by @khsaurabh in https://github.com/mvanhorn/last30days-skill/pull/1076 * fix(youtube): default yt-dlp player_client=android (port of #1075 onto current main) by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1088 * fix(bird): pass only the vendored client's env surface to the subprocess by @SomSamantray in https://github.com/mvanhorn/last30days-skill/pull/1072 * fix: continue research after optional X skip (rewrite of #1077 onto extras-host main) by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1089 * fix(env): add LAST30DAYS_SKIP_KEYCHAIN so tests can seal the Keychain source (keychain-only port of #1050) by @mvanhorn in https://github.com/mvan

  5. v3.22.0v3.22.0Aug 31, 2026117 downloads

    ## What's Changed * chore(deps): bump actions/attest from 4.2.0 to 4.2.2 by @dependabot[bot] in https://github.com/mvanhorn/last30days-skill/pull/1013 * chore(deps): bump google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml from 2.3.8 to 2.5.0 by @dependabot[bot] in https://github.com/mvanhorn/last30days-skill/pull/1012 * chore(deps): bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.6 by @dependabot[bot] in https://github.com/mvanhorn/last30days-skill/pull/1014 * fix(docs): fix broken star history chart by @Dessalines39394 in https://github.com/mvanhorn/last30days-skill/pull/1023 * chore(deps): bump zizmorcore/zizmor-action from 0.6.1 to 0.6.2 by @dependabot[bot] in https://github.com/mvanhorn/last30days-skill/pull/974 * feat(telegram): add opt-in Telegram public channel source by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1035 * feat: add opt-in Parallel Search MCP backend by @georgeatparallel in https://github.com/mvanhorn/last30days-skill/pull/1058 * fix(reddit): restore the keyless Reddit lane (comments, ranking, pacing) by @mvanhorn in https://github.com/mvanhorn/last30days-skill/pull/1083 * docs: compound the fusion dedupe learnin

Code frequency

additions and deletions
+54K-54KWeek of 2026-01-18: +7,201 linesWeek of 2026-01-18: -623 linesWeek of 2026-01-25: +782 linesWeek of 2026-01-25: -232 linesWeek of 2026-02-01: +10,247 linesWeek of 2026-02-01: -1,174 linesWeek of 2026-02-08: +4,319 linesWeek of 2026-02-08: -108 linesWeek of 2026-02-15: +1,340 linesWeek of 2026-02-15: -383 linesWeek of 2026-02-22: +23,128 linesWeek of 2026-02-22: -363 linesWeek of 2026-03-01: +8,084 linesWeek of 2026-03-01: -716 linesWeek of 2026-03-08: +7,837 linesWeek of 2026-03-08: -1,418 linesWeek of 2026-03-15: +59 linesWeek of 2026-03-15: -11 linesWeek of 2026-03-22: +101 linesWeek of 2026-03-22: -11 linesWeek of 2026-03-29: +6,762 linesWeek of 2026-03-29: -311 linesWeek of 2026-04-05: +24,763 linesWeek of 2026-04-05: -53,980 linesWeek of 2026-04-12: +4,612 linesWeek of 2026-04-12: -14,038 linesWeek of 2026-04-19: +33,720 linesWeek of 2026-04-19: -26,575 linesWeek of 2026-04-26: +2,062 linesWeek of 2026-04-26: -34 linesWeek of 2026-05-03: +2,940 linesWeek of 2026-05-03: -140 linesWeek of 2026-05-10: +2,725 linesWeek of 2026-05-10: -1,307 linesWeek of 2026-05-17: +3,115 linesWeek of 2026-05-17: -1,018 linesWeek of 2026-05-24: +1,966 linesWeek of 2026-05-24: -581 linesWeek of 2026-05-31: +163 linesWeek of 2026-05-31: -3,663 linesWeek of 2026-06-07: +557 linesWeek of 2026-06-07: -129 linesWeek of 2026-06-14: +13,738 linesWeek of 2026-06-14: -1,388 linesWeek of 2026-06-21: +7,601 linesWeek of 2026-06-21: -1,493 linesWeek of 2026-06-28: +6,002 linesWeek of 2026-06-28: -405 linesWeek of 2026-07-05: +6,511 linesWeek of 2026-07-05: -313 linesWeek of 2026-07-12: +20,748 linesWeek of 2026-07-12: -840 linesWeek of 2026-07-19: +14,955 linesWeek of 2026-07-19: -2,215 linesWeek of 2026-07-26: +6,831 linesWeek of 2026-07-26: -1,253 linesWeek of 2026-08-02: +301 linesWeek of 2026-08-02: -14 linesWeek of 2026-08-09: +11,158 linesWeek of 2026-08-09: -513 linesWeek of 2026-08-16: +3,636 linesWeek of 2026-08-16: -877 linesWeek of 2026-08-23: +511 linesWeek of 2026-08-23: -8 linesWeek of 2026-08-30: +5,256 linesWeek of 2026-08-30: -330 linesWeek of 2026-09-06: +9,148 linesWeek of 2026-09-06: -454 linesJan 18, 2026Sep 6, 2026
+252.9K lines added, -116.9K removed over the last year.

Commits per week

last 52 weeks
1180Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 46 commitsWeek of 2026-01-25: 11 commitsWeek of 2026-02-01: 59 commitsWeek of 2026-02-08: 8 commitsWeek of 2026-02-15: 14 commitsWeek of 2026-02-22: 20 commitsWeek of 2026-03-01: 40 commitsWeek of 2026-03-08: 47 commitsWeek of 2026-03-15: 2 commitsWeek of 2026-03-22: 2 commitsWeek of 2026-03-29: 5 commitsWeek of 2026-04-05: 42 commitsWeek of 2026-04-12: 42 commitsWeek of 2026-04-19: 32 commitsWeek of 2026-04-26: 11 commitsWeek of 2026-05-03: 29 commitsWeek of 2026-05-10: 50 commitsWeek of 2026-05-17: 56 commitsWeek of 2026-05-24: 6 commitsWeek of 2026-05-31: 3 commitsWeek of 2026-06-07: 11 commitsWeek of 2026-06-14: 118 commitsWeek of 2026-06-21: 90 commitsWeek of 2026-06-28: 26 commitsWeek of 2026-07-05: 24 commitsWeek of 2026-07-12: 52 commitsWeek of 2026-07-19: 65 commitsWeek of 2026-07-26: 18 commitsWeek of 2026-08-02: 9 commitsWeek of 2026-08-09: 12 commitsWeek of 2026-08-16: 8 commitsWeek of 2026-08-23: 1 commitsWeek of 2026-08-30: 13 commitsWeek of 2026-09-06: 39 commitsWeek of 2026-09-13: 22 commitsWeek of 2026-09-20: 4 commitsWeek of 2026-09-27: 1 commitsOct 4, 2025Sep 27, 2026
1K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 35 commitsSun 1:00 — 14 commitsSun 2:00 — 3 commitsSun 3:00 — 0 commitsSun 4:00 — 1 commitsSun 5:00 — 0 commitsSun 6:00 — 5 commitsSun 7:00 — 16 commitsSun 8:00 — 4 commitsSun 9:00 — 15 commitsSun 10:00 — 8 commitsSun 11:00 — 1 commitsSun 12:00 — 1 commitsSun 13:00 — 3 commitsSun 14:00 — 1 commitsSun 15:00 — 3 commitsSun 16:00 — 4 commitsSun 17:00 — 2 commitsSun 18:00 — 10 commitsSun 19:00 — 7 commitsSun 20:00 — 10 commitsSun 21:00 — 1 commitsSun 22:00 — 4 commitsSun 23:00 — 4 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 4 commitsMon 8:00 — 1 commitsMon 9:00 — 4 commitsMon 10:00 — 0 commitsMon 11:00 — 4 commitsMon 12:00 — 3 commitsMon 13:00 — 2 commitsMon 14:00 — 0 commitsMon 15:00 — 0 commitsMon 16:00 — 5 commitsMon 17:00 — 11 commitsMon 18:00 — 8 commitsMon 19:00 — 5 commitsMon 20:00 — 3 commitsMon 21:00 — 3 commitsMon 22:00 — 3 commitsMon 23:00 — 10 commitsTue 0:00 — 3 commitsTue 1:00 — 1 commitsTue 2:00 — 1 commitsTue 3:00 — 0 commitsTue 4:00 — 3 commitsTue 5:00 — 1 commitsTue 6:00 — 14 commitsTue 7:00 — 8 commitsTue 8:00 — 6 commitsTue 9:00 — 3 commitsTue 10:00 — 11 commitsTue 11:00 — 12 commitsTue 12:00 — 15 commitsTue 13:00 — 8 commitsTue 14:00 — 9 commitsTue 15:00 — 4 commitsTue 16:00 — 6 commitsTue 17:00 — 8 commitsTue 18:00 — 2 commitsTue 19:00 — 4 commitsTue 20:00 — 16 commitsTue 21:00 — 7 commitsTue 22:00 — 6 commitsTue 23:00 — 2 commitsWed 0:00 — 1 commitsWed 1:00 — 0 commitsWed 2:00 — 1 commitsWed 3:00 — 1 commitsWed 4:00 — 0 commitsWed 5:00 — 1 commitsWed 6:00 — 2 commitsWed 7:00 — 2 commitsWed 8:00 — 10 commitsWed 9:00 — 2 commitsWed 10:00 — 6 commitsWed 11:00 — 3 commitsWed 12:00 — 17 commitsWed 13:00 — 2 commitsWed 14:00 — 7 commitsWed 15:00 — 33 commitsWed 16:00 — 10 commitsWed 17:00 — 16 commitsWed 18:00 — 28 commitsWed 19:00 — 7 commitsWed 20:00 — 10 commitsWed 21:00 — 22 commitsWed 22:00 — 4 commitsWed 23:00 — 6 commitsThu 0:00 — 13 commitsThu 1:00 — 13 commitsThu 2:00 — 0 commitsThu 3:00 — 6 commitsThu 4:00 — 1 commitsThu 5:00 — 9 commitsThu 6:00 — 8 commitsThu 7:00 — 4 commitsThu 8:00 — 6 commitsThu 9:00 — 5 commitsThu 10:00 — 12 commitsThu 11:00 — 1 commitsThu 12:00 — 9 commitsThu 13:00 — 4 commitsThu 14:00 — 1 commitsThu 15:00 — 3 commitsThu 16:00 — 1 commitsThu 17:00 — 4 commitsThu 18:00 — 4 commitsThu 19:00 — 7 commitsThu 20:00 — 6 commitsThu 21:00 — 6 commitsThu 22:00 — 4 commitsThu 23:00 — 7 commitsFri 0:00 — 8 commitsFri 1:00 — 5 commitsFri 2:00 — 2 commitsFri 3:00 — 1 commitsFri 4:00 — 3 commitsFri 5:00 — 4 commitsFri 6:00 — 0 commitsFri 7:00 — 2 commitsFri 8:00 — 6 commitsFri 9:00 — 3 commitsFri 10:00 — 13 commitsFri 11:00 — 2 commitsFri 12:00 — 4 commitsFri 13:00 — 6 commitsFri 14:00 — 13 commitsFri 15:00 — 14 commitsFri 16:00 — 14 commitsFri 17:00 — 23 commitsFri 18:00 — 8 commitsFri 19:00 — 12 commitsFri 20:00 — 8 commitsFri 21:00 — 8 commitsFri 22:00 — 10 commitsFri 23:00 — 11 commitsSat 0:00 — 7 commitsSat 1:00 — 1 commitsSat 2:00 — 1 commitsSat 3:00 — 4 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 4 commitsSat 8:00 — 4 commitsSat 9:00 — 16 commitsSat 10:00 — 17 commitsSat 11:00 — 16 commitsSat 12:00 — 12 commitsSat 13:00 — 7 commitsSat 14:00 — 2 commitsSat 15:00 — 4 commitsSat 16:00 — 6 commitsSat 17:00 — 8 commitsSat 18:00 — 7 commitsSat 19:00 — 10 commitsSat 20:00 — 6 commitsSat 21:00 — 8 commitsSat 22:00 — 8 commitsSat 23:00 — 14 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits378 (30%)
Community commits890 (70%)

1,268 commits in total over the last year.

DateListRankStars gained
Aug 31, 2026daily#5+272
Aug 30, 2026daily#5+272
Aug 4, 2026daily#9+206
Aug 3, 2026daily#9+206
Aug 2, 2026daily#3+658
Aug 1, 2026daily#3+658
Jul 31, 2026daily#7+378
Jul 29, 2026daily#11+240
Jul 28, 2026daily#11+240
Jun 16, 2026daily#13+18
Jun 15, 2026daily#19+21
Jun 14, 2026daily#13+44
Jun 13, 2026daily#7+53
Jun 12, 2026daily#14+23
Jun 11, 2026daily#20+21