If your coding agent is wasting context window on raw grep dumps, skimsearch is the patch you need. Released on DEV.to on October 16, 2026, this MIT-licensed Python 3.10+ tool indexes repository trees into compact 'skim cards' stored in a local SQLite file. Instead of pasting dozens of irrelevant hits from vendored dependencies or test files, agents receive a ranked deck of snippets that fits strictly within a token budget, defaulting to 700 tokens.

The Token Bleed Problem

Standard agent workflows suffer from massive inefficiency. When asked a question like "where is the late fee calculated?", agents typically run grep -rn "late fee", receive a flood of matches from code, docs, and noise, and paste the entire dump into their context. This forces the agent to re-read irrelevant lines on every turn, crowding out the actual answer and inflating costs. skimsearch solves this by indexing once and answering with precision.

How Indexing and Search Work

The tool folds code and documentation into individual cards representing a single function, class, or heading. These cards are ranked offline using SQLite FTS5 with BM25 scoring. In lexical mode, the search operates entirely locally without network calls, ensuring privacy and speed. For prose-heavy queries, the --mode semantic flag uses a cheap model to convert natural language into lexical probes, while --mode ask returns a direct answer citing only the relevant cards.

Integration With Cursor and Claude Code

skimsearch exposes itself as an MCP server via skimsearch serve, making it trivial to plug into Cursor or Claude Code. The configuration requires adding a block to .mcp.json or .cursor/mcp.json, pointing to the absolute repo path. Agents gain two tools: skim_search for querying and skim_status for checking index health. The system respects .gitignore and supports a custom .skimignore to skip lockfiles and secrets like .env.

Cost Optimization With AtmoRouter

For semantic features, the default endpoint is AtmoRouter, an OpenAI-compatible gateway that claims prices 83.7% below official rates. It supports 109 models and accepts payment via QRIS and USDC. The default model, atmo/deepseek-v4.1-flash, is chosen specifically because query rewriting should cost significantly less than the coding model it assists. Users can swap providers by setting SKIMSEARCH_BASE_URL or SKIMSEARCH_API_STYLE.

Key Takeaways

  • Indexes repos into SQLite cards, reducing context bloat by filtering out vendored code and tests.
  • Supports MCP integration for seamless use with Cursor and Claude Code via stdio server.
  • Offers lexical (offline) and semantic (API-based) modes to balance privacy and natural language understanding.
  • Defaults to AtmoRouter for cheap model inference, though it supports any OpenAI-compatible endpoint.

The Bottom Line

Stop letting your agents choke on grep output. skimsearch enforces token discipline at the retrieval layer, which is exactly where we need it in 2026. If you are paying for context, you should be paying for answers, not noise.