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

opencode-betterglob

v0.1.0

Published

Standalone OpenCode plugin that provides an rg-backed glob tool with native-compatible output.

Readme

🔍 opencode-betterglob

opencode-betterglob is a standalone OpenCode plugin that replaces the built-in glob tool with a fast ripgrep-backed file discovery engine.

It keeps the agent-facing behavior simple: return matching file paths, one per line, while adding stronger controls around limits, sorting, hidden files, timeouts, and large workspaces.

✨ Why it is better than the native glob tool

⚡ Faster discovery on large repositories

The plugin uses rg --files as its backend, which is highly optimized for large trees, ignored files, and modern repository layouts.

🎛️ More explicit controls

It supports advanced options that make tool calls more predictable:

  • limit
  • sort_by
  • sort_order
  • hidden
  • follow_symlinks
  • timeout_ms

🧯 Safer defaults

The default result limit is intentionally conservative to avoid flooding the conversation with huge path lists. Heavy searches still work, but they are more controlled.

🧩 Native-compatible output

The output remains plain paths with native-style empty states and timeout notes, so agents can use it as a drop-in replacement for the built-in glob tool.

🧠 Technical highlights

  • Registers as the exact glob tool ID.
  • Uses NUL-delimited parsing where appropriate for safe path handling.
  • Supports ripgrep auto-resolution and managed install behavior.
  • Handles timeout and cancellation without leaving long-running processes behind.
  • Adds render metadata through a lightweight post-execution hook.

📦 Recommended installation (npm)

For normal installs, use npm:

npm install opencode-betterglob

Then register the installed package in your OpenCode config by package name:

{
  "plugin": [
    "opencode-betterglob"
  ]
}

🛠️ Manual installation from source (alternative)

Use the source/file flow if you want to run the plugin from a local checkout or test local unpublished changes.

git clone https://github.com/dhaern/better-opencode-tools.git
cd better-opencode-tools
bun install
bun run build

Add the plugin to your OpenCode config:

{
  "plugin": [
    "file:///path/to/better-opencode-tools/packages/opencode-betterglob"
  ]
}

🧪 Development

bun run typecheck
bun test
bun run build
bun run check

⚠️ Known limitations

  • sort_by: "mtime" depends on ripgrep's modified-time sorting behavior. On very broad searches, ripgrep may not stream useful partial paths before a timeout.
  • First run may need network access if the plugin has to download a managed ripgrep binary.