Skip to content

feat: list_categories() — a domain map of the registry#58

Merged
noahhyden merged 1 commit into
mainfrom
feat/list-categories
Jul 20, 2026
Merged

feat: list_categories() — a domain map of the registry#58
noahhyden merged 1 commit into
mainfrom
feat/list-categories

Conversation

@noahhyden

Copy link
Copy Markdown
Owner

Completes the queriability trio started in #55/#56: list_recipes (browse) / search_recipes (find) / list_categories (map).

What

A read-only tool returning every category that has recipes, its count, and a few example ids, sorted by count descending:

{"count": 27, "categories": [
  {"category": "languages", "count": 40, "examples": ["asdf","bpython","bun",...]},
  {"category": "data",      "count": 43, "examples": ["biome","csvkit",...]},
  ...
]}

An agent sees what erbina covers at a glance, then drills in with search_recipes(category=…). Categories partition the registry (one per recipe), so counts sum to the total.

Quality

  • Tool surface → 13 (test_tools EXPECTED_TOOLS + ci.yml python-floor count).
  • +6 tests: shape, count-partition (sums to total), non-empty & unique rows, count-descending sort, agreement with search_recipes filter counts, examples-belong-to-category.
  • README tools table updated. Full suite 3573 passed; ruff clean; live-verified through the MCP client.

Note: list_categories makes a few pre-existing inference mislabels visible (e.g. bat→git because its blurb says "Git integration"). A curation round-2 PR will follow to fix those.

🤖 Generated with Claude Code

Adds a read-only tool that returns every category with a recipe, its count, and
a few example ids, sorted by count. An agent can see what erbina COVERS at a
glance ("kubernetes: 26, languages: 40, git: 29") and then drill in with
search_recipes(category=...). Categories partition the registry (one per
recipe), so counts sum to the total.

Completes the queriability trio: list_recipes (browse) / search_recipes (find) /
list_categories (map).

- Bumps the tool surface to 13 (test_tools EXPECTED_TOOLS + ci.yml python-floor).
- +6 tests: shape, count partition, non-empty/unique, count-desc sort,
  agreement with search_recipes filter, examples belong to their category.
- README tools table updated. Full suite 3573 passed; ruff clean; live-verified.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@noahhyden
noahhyden merged commit 7a0c045 into main Jul 20, 2026
5 checks passed
noahhyden added a commit that referenced this pull request Jul 20, 2026
…hip tools (#59)

`list_categories` (#58) made a class of inference mislabels visible: the `git`
and `media` buckets over-captured tools whose blurbs mention "Git integration",
"color", or "graph" in passing. Author the correct category for 10 flagship
tools:

  bat, eza, lsd, yazi   -> files       (ls/cat replacements, not git tools)
  typos, icdiff         -> text        (spell-checker / diff, not git)
  htop                  -> monitoring  (not media)
  concurrently          -> devtools    ("color-coded output")
  webpack               -> build       (dependency "graph")
  mdcat                 -> docs         (markdown renderer)

The `git` bucket is now 25 genuinely-git tools (was 29). 8 via the reviewable
_CATEGORY_OVERRIDES block; bat/eza are hand-written (edited in place). Curation
lock in test_recipe_categories.py extended to cover all 10. Full suite 3573
passed; all 520 lint-valid; ruff clean; live-verified.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant