← Back to posts

Browse GitHub by what a repo actually does

Published: 9/13/2026

GitHub topics are useful until you try to navigate by them. One repo tags itself llm, another generative-ai, a third chatgpt. They are the same neighborhood of software and they will never appear on the same topic page.

So we stopped treating keywords as the map. Every repository GitGenius indexes now gets one primary subcategory from a fixed list, plus up to two more it substantially serves. The list is versioned, the slugs are permanent, and the browse surface is Categories.

19 categories, 9,861 repositories

Categories is the tree: 19 categories, 114 subcategories, taxonomy v1.1.0. A card per category, chips for every subcategory, and a count on each so you can see the shape of what we index before you click.

As of this writing that is 9,861 classified repositories — every repo we track, not a sample. The live coverage, confidence, and size-health numbers live on a separate page, Repository Taxonomy, because the browse page should stay a map and the analytics page should stay an argument.

A few things the map currently shows:

The rest of the tree covers the long tail that topic pages flatten: Security & Privacy, Data Engineering & Analytics, Databases & Storage, Mobile & Desktop, Languages & Runtimes, Systems, Hardware & HPC, Productivity & Business Apps, Self-Hosted & Home, Media, Graphics & Games, Science & Industry, Networking & Communication, Learning & Resources, and Blockchain & Web3.

Counts on category pages are "any" counts. A repository appears under its primary subcategory and under the one or two others it substantially serves. Kong is still allowed to be an API gateway *and* a security product. It is not allowed to pick up a third label because the README mentioned Kubernetes once.

Subject and type are different questions

The taxonomy has a second facet that never appears in the category name: what the repository *is*, rather than what it is about. Library, application, framework, CLI, server, plugin, template, dataset, and so on — twelve types.

That split is the whole point. A Postgres driver, a Postgres GUI, and a blog post titled "How I learned Postgres" are not the same kind of object. They share a subject and they do not share a shelf. Type stays on the analytics page so a category does not turn into "libraries, except when they're apps, except when they're awesome lists."

Repository Taxonomy currently shows libraries and SDKs as the most common type (2,518), then applications (1,859), frameworks (1,159), and CLIs (1,031). That distribution is a property of GitHub, not a preference of ours.

How a repo gets its label

The classifier may only answer with ids from the list. It cannot invent a subcategory, and it cannot file something as "misc." A handful of rules decide which id wins, and they are written down rather than implied:

The model's own certainty, averaged across the index, is 0.91. That is the model's number, not a quality score, and we print it on the taxonomy page so it can be argued with.

The list is locked on purpose

v1.1.0 locked on 2026-09-11. Slugs do not get reused. Renaming changes the display name only. Removing or merging a slug requires a retired entry, a pointer to its replacement, and a minor version bump.

That sounds bureaucratic until you have tried to keep a URL stable. A category page that means something different in six months is a broken link that still returns 200.

Two governance rules keep the buckets from rotting. Split a subcategory whose *primary* count stays above 300. Merge or hide one that stays under 8 for a quarter. Today two subcategories are over the split line — Core & Utility Libraries (322) and MCP Servers, Agent Skills & Prompts (315) — and none are thin. Every subcategory has at least eight repositories.

Free-form keywords are still stored. Search still uses them. Navigation does not. If you want to see the argument in numbers, open Repository Taxonomy. If you want to look at the software, start at Categories and pick the shelf closest to the work you actually do.