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:
- [AI Agents & LLM Apps](https://www.gitgenius.co/categories/ai-agents-llm-apps) is the largest category, 2,059 repositories. Applied generative AI: agents, assistants, and apps built on large language models. Agent frameworks, MCP servers, RAG, local inference, and coding agents all live here — and they no longer share a bucket with PyTorch training loops.
- [Web Development](https://www.gitgenius.co/categories/web-development) is next at 1,568, then [Developer Tools](https://www.gitgenius.co/categories/developer-tools) at 1,439. Those two used to leak into each other constantly. A CSS framework is not a CLI, and a test runner is not a frontend.
- [Machine Learning & Deep Learning](https://www.gitgenius.co/categories/machine-learning) (1,002) is model development: frameworks, training, research code, vision, NLP. If the product *is* the model, it belongs here. If the product *uses* a model to do something else, it usually doesn't.
- [Cloud Native & Infrastructure](https://www.gitgenius.co/categories/cloud-native-infrastructure) (868) is running software — Kubernetes, containers, IaC, serverless — kept separate from [DevOps & Observability](https://www.gitgenius.co/categories/devops-observability) (373), which is shipping and operating it.
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:
- one-primary — exactly one primary subcategory. Secondaries only when the repo substantially serves them.
- what-it-does — classify by what the repo is and does for its user. Language is a language facet; library-versus-CLI is a type facet. Neither belongs in the category.
- subject-first — a Kubernetes tutorial goes to Kubernetes, typed as a learning resource. Learning & Resources is only for material that spans many subjects.
- domain-first-ai — an AI pentesting tool is security first, AI second. AI Agents & LLM Apps is primary only when the AI capability itself is the product.
- apps-vs-frameworks — the note-taking app goes to productivity; the toolkit for building note-taking apps goes to the framework subcategory.
- follow-the-product — a MongoDB driver goes with MongoDB, not with "drivers" as a theme.
- trust-order — owner's description, GitHub topics, and README first. The GitGenius summary is secondary evidence and can be wrong.
- none-fit — if nothing fits, pick the closest subcategory, flag it, and suggest a name. Never invent an id. Ten repositories are in that queue right now; they feed the monthly review.
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.
