--- layout: tap site_name: github tap_name: trending description: "GitHub repos created in the last N days with ≥ min_stars, filtered to AI/SaaS/devtool niches via topic+description keyword match. Supply-side signal for solo builder category emergence." intent: read columns: - slug - description - stars - language - topics - created_at - url args: - name: days type: int default: 7 description: "Lookback window in days" - name: min_stars type: int default: 5 description: "Minimum stars to include" - name: per_page type: int default: 50 description: "Max results from API" args_json: | {"days":{"type":"int","default":7,"description":"Lookback window in days"},"min_stars":{"type":"int","default":5,"description":"Minimum stars to include"},"per_page":{"type":"int","default":50,"description":"Max results from API"}} health_json: | {"min_rows":1,"non_empty":["slug"]} example_args: "" source_url: https://github.com/LeonTing1010/tap-skills/blob/main/showcase/github/trending.plan.json license: MIT ---

## What it does

GitHub repos created in the last N days with ≥ min_stars, filtered to AI/SaaS/devtool niches via topic+description keyword match. Supply-side signal for solo builder category emergence.

## Install Taprun once

Taprun ships as a single MCP server exposing a catalog of compiled taps. One-time setup on macOS / Linux:

    brew install LeonTing1010/tap/taprun
    tap mcp connect

Or drop this into your `claude_desktop_config.json` (works identically in Claude Code, Cursor, Cline, Windsurf — any MCP host):

    {
      "mcpServers": {
        "tap": {
          "command": "tap",
          "args": ["mcp", "start"]
        }
      }
    }

## Call `github/trending`

Terminal, once installed:

    tap run github/trending

From the MCP host — exact same compiled plan, deterministic replay, zero LLM tokens:

    tap.run({ site: "github", name: "trending" })

## Why compile it once

This plan was forged once — the AI read `github`, picked stable structural addresses (JSON-LD, ARIA, RSS, or declared API endpoints, in that priority order), and saved them to a `.plan.json`. Every replay since then has used zero LLM tokens. When `github` ships a site change that breaks the extraction, `tap verify` surfaces it before your data goes stale — not after your pipeline silently writes garbage for a week.

## Related github taps

tap | description
--- | ---
`github/create-issue` | Create a GitHub issue via API