Skip to content
Development
Skill

/github-trending-analyzer

Crawl GitHub trending repositories, analyze with LLM for Chinese insights, categorize by themes, compute diffs against history, and generate Markdown reports. Default brief mode stops at trend analysis; optional detailed mode appends per-project analysis. Supports incremental

From plugin
dskills
6416 skills
Install
$ npx -y skills add Dianel555/DSkills --skill github-trending-analyzer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/github-trending-analyzer

Context preview

The summary Claude sees to decide when to auto-load this skill.

Crawl GitHub trending repositories, analyze with LLM for Chinese insights, categorize by themes, compute diffs against history, and generate Markdown reports. Default brief mode stops at trend analysis; optional detailed mode appends per-project analysis. Supports incremental

SKILL.md

github-trending-analyzer.SKILL.md
name: github-trending-analyzer
description: Crawl GitHub trending repositories, analyze with LLM for Chinese insights, categorize by themes, compute diffs against history, and generate Markdown reports. Default brief mode stops at trend analysis; optional detailed mode appends per-project analysis. Supports incremental gap-filling and selective re-analysis with caching.

GitHub Trending Analyzer

A workflow protocol for tracking GitHub trending repositories with LLM-powered analysis. Fetches trending projects, enriches each with structured Chinese insights (what/analogy/help/who), classifies by themes, compares against historical snapshots, and generates reports in two modes — a compact brief (default) or a detailed report with per-project analysis (opt-in).

Trigger Signals

  • GitHub trending analysis
  • Weekly tech trend report
  • Repository discovery automation
  • Incremental analysis refresh
  • Theme-based repo categorization

Preconditions

  • HTTP access to github.com/trending (no auth required for public trending)
  • LLM backend capable of JSON-structured output (for the 4-field analysis schema)
  • File system access for memory cache and report output
  • HTML parsing capability (regex or DOM parser)

Strategy

Run the five-step pipeline in order.

Step 1: Fetch trending HTML

Construct the URL with time range and optional language filter:

https://github.com/trending[/{language}]?since={daily|weekly|monthly}

Fetch with a browser User-Agent to avoid bot detection. Parse the HTML to extract:

  • `name` (org/repo)
  • `url` (full GitHub link)
  • `desc` (one-line description from the page)
  • `lang` (primary language)
  • `stars` (total stargazers count)
  • `today_stars` (increment for this period)

**Regex patterns** (reference from source):

  • Project name: `<h2[^>]*>.*?<a href="/([^"]+)"`
  • Description: `<p class="[^"]*col-9[^"]*"[^>]*>\s*(.*?)\s*</p>`
  • Language: `<span itemprop="programmingLanguage">([^<]+)</span>`
  • Stars: parse from `/stargazers` link text after stripping HTML tags
  • Today increment: `([\d,]+)\s*stars?\s*(?:this|today)` (case-insensitive)

Step 2: Batch LLM analysis

For each batch of 5 projects (to avoid token limits), send this prompt to your LLM:

Analyze the following {N} GitHub Trending projects. Output strict JSON array.
Each project needs 4 fields:
- what: What it is (≤30 Chinese characters)
- analogy: Life analogy (one sentence)
- help: What it helps you do (2 items, each ≤40 chars, array)
- who: Who needs it (one sentence, ≤30 chars)

Project list:
1. org/repo (Language) — description...
2. ...

Output ONLY the JSON array, no other text. Example:
[{"name":"org/repo","what":"...","analogy":"...","help":["...","..."],"who":"..."}]

**Parse the response**: 1. Strip markdown code fences (` ```json ` / ` ``` `) 2. Clean trailing commas: `,\s*([\]}])` → `\1` 3. Extract the JSON array via regex: `\[.*\]` (DOTALL) 4. Decode with `json.loads()` or equivalent 5. Match results back to projects by name suffix (case-insensitive)

**Fallback**: If array parsing fails, extract individual objects via bracket-counting and parse one by one.

**Deep mode** (optional): Use longer limits (what ≤50 chars, help 3 items) for richer analysis.

Step 3: Theme classification

Load the bundled `theme_rules.json`. For each project: 1. Concatenate `name + " " + desc` and lowercase 2. Iterate themes by priority order 3. Check if any keyword from the theme appears in the text 4. Assign to first matching theme 5. Default to "🌐 其他" if no match

Result: `{theme_name: [projects...]}` dictionary.

Step 4: Compute diff (optional)

Load `memory.json` from the workspace root (see Output Protocol). Schema:

[
  {
    "date": "2026-06-19",
    "since": "weekly",
    "lang": "python",
    "repos": [{"name":"...", "url":"...", "desc":"...", "lang":"...", "stars":..., "today_stars":..., "analysis":{...}}]
  }
]

Compare current repos against the latest entry with the same `since` (and same `lang` filter):

  • **new**: projects in current but not in last
  • **hot**: projects in both
  • **dropped**: projects in last but not in current
  • **last_date**: baseline timestamp

Step 5: Generate reports

Two report modes, driven by the bundled templates:

  • **Brief (default)**: `report_template_brief.md` — stops at "💡 Trend Analysis". Always emitted.
  • **Detailed (opt-in)**: `report_template_detailed.md` — the brief content plus a per-project "📋 Project Details" section with the 4-field analysis. Emitted only when the user asks for detail (or when `deep` analysis was run).

**Trend insight prompt** (used in the "Trend Analysis" section of both modes):

基于以下GitHub Trending项目摘要,用3-5句话分析当前最强技术趋势和驱动力:
{list of "name: what" for all projects}

Save under `reports/YYYY-MM-DD/` with a `{since}` suffix (`daily` / `weekly` / `monthly`), e.g. `trending_briefing_weekly.md`. Same-day re-runs of the same `since`+`lang` overwrite that report.

**Empty tables**: when a section (new/hot/dropped) has no rows, render the table header followed by a single `*none*` row; keep "Theme Breakdown" and "Trend Analysis" only if there are classified projects. On a first run (no memory baseline), omit the "Dropped Off" section rather than showing it empty.

Constraints

Core rules

1. **Batch size = 5** for LLM calls to avoid truncation. For 20 repos, make 4 separate calls. 2. **JSON-only LLM output**. The prompt explicitly forbids explanatory text. Parse defensively (strip fences, clean commas). 3. **Name matching is fuzzy**. Match by suffix (`org/repo` vs `repo`) and case-insensitive substring. 4. **Theme priority matters**. A project matching both "AI" and "Dev Tools" gets classified as "AI" (priority 1 < 4). 5. **Memory and daily repo JSON are upserted, not blindly overwritten or appended.** Key is `(date, since, lang)`. Same-key re-runs merge; other keys are added. Retain the 30 most recent distinct dates.

Incremental modes (optional)

  • **Gap-fill mode**: Load the m
Read more
Ships withdskills

CLI tools skills for AI coding assistants (Claude Code, Codex, Antigravity CLI).

Get the whole plugin
Stats
64
Stars
7
Forks
Active
Maintenance
Python
Language
MIT
License
2d ago
Last commit
7mo ago
Created

Repo: Dianel555/DSkills

Other skills on dskills.