npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@taiters/ferret

v0.2.0

Published

Semantic codebase search for LLMs — index once, query every conversation

Readme

@taiters/ferret

Semantic codebase search for Claude Code. Index your codebase once, query it during every conversation — no more pasting code into context.

What it does:

  • Parses Python, JS, TS by function/class (long methods windowed with overlap)
  • Builds a call graph so Claude understands code flow
  • Embeds everything locally (free, offline, ~25MB model)
  • Stores vectors in LanceDB for fast semantic search

Prerequisites

  • Node.js 18+

Setup

1. Install the CLI

npm install -g @taiters/ferret

This makes ferret available globally in your terminal.

2. Enable the plugin

Install the plugin via the Claude Code plugin manager:

claude plugin add @taiters/ferret

Or load it for a single session:

claude --plugin-dir $(npm root -g)/@taiters/ferret

Usage

Index a codebase

ferret index /path/to/your/project

Takes 1-5 minutes depending on codebase size. The embedding model downloads once (~25MB) on first run.

Options:

ferret index . --verbose         # show skipped files

Search

ferret search "authentication middleware"
ferret search "how does payment work" --graph   # include call graph
ferret search "recent changes" -k 10            # more results

Call graph

ferret graph "validateToken"
ferret graph "processPayment" --depth 3

Stats

ferret stats

How Claude Code uses it

Once the plugin is enabled, Claude Code automatically uses ferret search before answering questions about your code.

Example conversation:

You:    "How does the auth system work?"
Claude: [runs: ferret search "authentication flow" --graph]
Claude: "Based on your codebase, auth works as follows:
         login() in src/auth/login.py:12-45 calls validateToken()
         which calls checkPermissions()..."

Claude grounds answers in your actual code without you needing to paste anything.


Architecture

@taiters/ferret/
├── .claude-plugin/plugin.json       ← plugin manifest
├── skills/
│   ├── search/SKILL.md              ← ferret:search skill
│   └── graph/SKILL.md               ← ferret:graph skill
└── src/
    ├── ferret.ts                     ← CLI entry point
    ├── indexer/                      ← orchestrates indexing
    ├── search/                       ← semantic search pipeline
    ├── embedding/                    ← local transformers.js embeddings
    ├── store/                        ← LanceDB interface
    └── ingestion/                    ← tree-sitter parsers (py/js/ts)

LanceDB (local, file-based):
  - Vectors stored in chunks table with HNSW index
  - Call graph stored in graph table as adjacency list
  - DB stored at <project>/.ferret/db

Re-indexing

Re-index any time you want to refresh (full re-index, clears previous):

ferret index /path/to/project

Takes the same time as initial indexing. Recommended after large refactors or when Claude seems to have stale context.


Troubleshooting

ferret: command not found Run npm install -g @taiters/ferret and make sure your npm global bin directory is on your PATH.

No results found

  • Check ferret stats — if total is 0, index first
  • Try broader search terms
  • Lower similarity threshold is 30% — very specific queries may not match

Slow first search

  • Normal — embedding model loads into memory on first call (~3s)
  • Subsequent searches are fast (<500ms)