feat(taxonomy): expand CATEGORIES from 15 to 32 axes (C-CAT) - #3174
Open
0motionguy wants to merge 1 commit into
Open
0motionguy wants to merge 1 commit into
0motionguy wants to merge 1 commit into
Conversation
Add 17 new categories to close the discovery-surface gap vs OSSInsight, whose 102 hand-curated collections give them strong SEO + topical discovery that 15 categories can't match. New axes (each with a distinct Lucide icon + hue-spread color): - Game Development, IoT & Edge, Education & Learning, Robotics, AR/VR/3D, Bio & Healthcare, Productivity & No-Code, Open Models & Datasets, Networking & Protocols, Observability, Compilers & Runtimes, Testing & QA, Documentation, Embedded Systems, Media & Streaming, Cryptography, Privacy & Surveillance Resistance. Picked by mapping the OSSInsight collection taxonomy (deep-crawl evidence cited below) onto distinct dev-tool clusters TrendingRepo already surfaces in repo metadata but doesn't yet surface as filter chips. Existing 15 categories left untouched so SEO + bookmarks stay valid; new IDs use kebab-case to match the convention. Files: - src/lib/constants.ts: append 17 new entries to CATEGORIES. - src/lib/category-icons.ts: import + register the 17 new Lucide icons in CATEGORY_ICON_MAP so getCategoryIcon() returns a valid component for every entry (was hardcoded to 10). A follow-up `scripts/classify-categories.ts` (deferred — separate PR) will batch-classify the top-1000 derived repos against the new taxonomy via NanoGPT so the new chips have real repo populations on day one rather than reading "0". Evidence: deep-crawl deltas.md → https://ossinsight.io/collections (102 hand-curated collections vs our 15 — strong SEO + discovery advantage). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Jun 15, 2026
0motionguy
added a commit
that referenced
this pull request
Jun 15, 2026
Closes part of the v3 deep-crawl deltas finding that no competitor has any API/RSS/webhook surface (defensibility 3.0). 32 categories × 1 RSS feed gives 32 SEO + agent-readable surfaces; the per-category llms.txt section makes the feeds discoverable to AI agents that follow the convention. Files: - src/app/feeds/[slug].xml/route.ts (new) — dynamic [slug] = one of the 32 category ids from src/lib/constants.ts. Returns RSS 2.0 XML with proper content-type + Cache-Control: s-maxage=900, swr=3600. Falls back to an "indexing in progress" item when the classifier (PR #3185) hasn't populated repo-categories yet. - src/app/feeds/route.ts (new) — index page listing all 32 feed URLs as JSON for agent discovery. - src/app/llms.txt/route.ts (modified) — adds "Per-category RSS feeds" section generated from CATEGORIES so the file scales when the taxonomy changes again. - src/app/categories/[slug]/page.tsx (modified) — adds <link rel="alternate" type="application/rss+xml"> so feed readers can auto-discover the matching feed. - src/lib/pipeline/__tests__/feeds-routes.test.ts — RSS XML escaping (&, <, >), content-type, and at-least-one <item> shape assertions. - scripts/check-production-topology-docs.mjs — adds a llms.txt topology phrase requirement so the HOSTUP section stays accurate. No publicly stale batches: when consensus-trending is past 4h, the feed emits an "indexing in progress" item instead of stale items. Companion PRs: C-CAT #3174 (taxonomy), classify #3185 (per-repo assignments), per-category-pages #3181 (HTML landing), Toolbox #241 (ULTRA harness with the deltas evidence). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Jun 15, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add 17 new categories to
CATEGORIES(15 → 32) to close the discovery-surface gap vs OSSInsight, whose 102 hand-curated collections give them an SEO + topical-discovery advantage that 15 categories cannot match.Evidence (deep-crawl deltas)
From the ULTRA improvement plan crawl (1188 cells across OSSInsight + TrendShift + TrendingRepo):
New categories
Game Development · IoT & Edge · Education & Learning · Robotics · AR/VR/3D · Bio & Healthcare · Productivity & No-Code · Open Models & Datasets · Networking & Protocols · Observability · Compilers & Runtimes · Testing & QA · Documentation · Embedded Systems · Media & Streaming · Cryptography · Privacy & Surveillance Resistance.
Each entry follows the existing palette + icon convention. Colors hue-spread across Tailwind 400-700; icons distinct so no two adjacent chips collide. Existing 15 entries left untouched so prior SEO + bookmarks still resolve.
Files
src/lib/constants.ts— append 17 entries toCATEGORIES.src/lib/category-icons.ts— import + register the 17 new Lucide icons inCATEGORY_ICON_MAP. Without thisgetCategoryIcon()would return null and the new chips would render iconless.Deferred follow-up (separate PR)
scripts/classify-categories.ts— batch-classify the top-1000 derived repos against the new taxonomy via NanoGPT (Kimi-K2-Instruct) so the new chips have real repo populations on day one rather than reading "0". Tracked as a follow-up so this PR stays scoped to the taxonomy surface itself.Test plan
pnpm tsc --noEmitclean (existing.next/typeserrors unrelated)/categories— all 32 chips render with distinct icon + color/categories/game-dev) — page renders the identity card with the right Lucide icon, no console errorCompanion PRs
🤖 Generated with Claude Code