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

pi-everything

v0.1.0

Published

Instant machine-wide file search for the pi coding agent on Windows — native tools (search, content grep, folder size, syntax reference, status) backed by the Everything index via es.exe

Readme

pi-everything (pi extension)

Instant, machine-wide file search for the pi coding agent on Windows, backed by the Everything index.

Everything is a Windows desktop search utility that indexes file and folder names in real time — a filename search across the whole computer returns results in milliseconds, with no directory walk and no waiting on a disk scan. This extension recreates the CodingRookie98/everything-search skill (MIT) as native pi tools wired directly to the index via es.exe.

Tools

| Tool | Purpose | |---|---| | everything_search | Machine-wide instant file search (name/path/extension/size/date/content). Params: query, limit, offset, sort, order, details, count_only, total_size, columns, regex, case_sensitive, whole_word, match_path, diacritics. | | everything_grep | Content search without the directory walk: query selects candidate files from the index (same syntax as everything_search; defaults to the current project, excluding node_modules/.git), then an in-process scan. Params: pattern, query, ignoreCase, literal, context, limit, summary. Output is hashline-anchored (LINE:HASH|content) — byte-compatible with the grep tool, feeds the edit tool. | | everything_folder_size | Recursive folder size from the index (instant, no disk scan). Param: path. | | everything_syntax | Returns the bundled full query-syntax reference (syntax.md) — agents call it when they need syntax beyond basics. Optional include_columns: true also returns the full 55-name property-column allowlist. | | everything_status | Diagnostics: es.exe presence/version/path, service reachability, indexed item count, index freshness (stale-index warning). |

everything_grep output budget. Output is capped at 20 KB and the scan stops as soon as the budget (or limit) is full — candidate files after that are not read, and the marker says so: [everything_grep: output budget (20 KB) reached after N matches in M files. K candidate files not scanned. …]. Match lines over 500 chars render as first 500 + ... [truncated] (parity with the builtin grep tool, plus a footer when any line was cut); the anchor hash is always of the full line, so edits still operate on complete content. Per-file cap: once the running match total passes 50, each file renders at most 10 matches + a ... +K more matches note. summary: true returns per-file counts only (the scan always completes; the budget bounds the file list).

How agents learn the syntax

Three layers, so the agent never has to guess:

  1. Always visible — the query parameter description carries a compact syntax cheat sheet (operators, wildcards, size:/dm:/parent:/content:, type macros, examples) in every tool schema.
  2. On demand — everything_syntax returns the full reference (bundled syntax.md); pass include_columns: true and it also appends the 55-name property-column list.
  3. Self-diagnosis — everything_status + error messages tell the agent exactly what to do when something is off (es missing, service down, stale index).

How agents are steered to prefer it

  • Tool description opens with an explicit "PREFER THIS OVER find/ls/glob OR bash directory scans".
  • promptSnippet puts a one-liner in the system prompt's Available-tools section.
  • promptGuidelines adds a persistent Guidelines bullet to the system prompt of every session (including subagent sessions) that has the tool active: use everything_search first for any file discovery; grep only for contents.

Prerequisites (Windows)

  • Everything — installer
  • es.exe (Everything CLI) in PATH — CLI download
  • Everything service running (start Everything.exe)
  • Recommended Everything options (index folder size, USN journal, IPC enabled) — reference screenshots in docs/options-screenshots/
  • Tested against the Everything 1.5.0.1423 beta + es.exe 1.1.0.37; 1.4-era es.exe also works (automatic CSV fallback in details mode)

Install

The easiest way — from npm (pi.dev gallery):

pi install npm:pi-everything

(Windows only — Everything is a Windows file index. See Prerequisites below.)

The manual deploy below still works if you prefer clone-and-copy.

Deploy

Copy the extension files into pi's global extensions directory as its own folder:

~/.pi/agent/extensions/everything-search/
├── index.ts
├── grep-core.ts
├── syntax.md
└── README.md

Auto-discovered (~/.pi/agent/extensions/*/index.ts); hot-reloadable with /reload. No package.json/node_modules needed — typebox, @earendil-works/pi-ai, and @earendil-works/pi-coding-agent resolve from pi's own install via jiti.

Implementation notes (verified against es 1.1.0.37 + Everything 1.5.0.1423, 2026-09-10 UTC)

  • UTF-8 via export files: es.exe stdout uses the environment OEM codepage (é→0x8A in cp850, CJK→? — lossy). Results are always captured with -export-txt / -export-tsv (verified UTF-8), read as UTF-8, temp file deleted after.
  • Sort quirk: direction must be hyphen-joined (-sort size-descending); space-separated (-sort size descending) silently treats the direction as a second search term and returns nothing. The extension always passes an explicit hyphen-joined direction.
  • Pagination: -n N fetches N; -viewport-offset only skips within that fetch. The extension fetches offset+limit (capped at 2000) and slices locally.
  • Counts: total matches come from -get-result-count (parallel with the results call, both ~50 ms).
  • Details: -full-path-and-name -size -date-modified -date-format 1 -no-header -export-tsv gives path<TAB>size-bytes<TAB>ISO-date.
  • 1.4 fallback: -export-tsv is unknown to es.exe from the Everything 1.4 era (exit code 6). Details mode then retries with -export-csv (also UTF-8) and converts quoted CSV lines to tab shape, so the extension works with both 1.4-era and 1.5-era es.exe.
  • Total size: -get-total-size (parallel, ~50 ms). The 1.5 beta returns 2⁶⁴−1 for zero-result queries; totalSizeOf() maps that sentinel to 0.
  • Property columns: -add-columns accepts 55 verified property names (allow-listed in index.ts; es.exe rejects unknown names with Error 4: Unknown column). The full list is in the "Property column names" section below; the curated schema/syntax.md text deliberately omits it so agents don't request useless columns — everything_syntax with include_columns: true returns it on demand. Extra columns imply details mode.
  • Broken 1.5 search functions: depth:, child-count:, count:, max-threads:, unique:, distinct:, dupe-min/max/count:, len:, to-number:, hex:, size-on-disk:, si:, and &sp: entities parse but return 0 via es.exe on this build. syntax.md documents them under "Do NOT use with this es.exe build" so agents never try them.
  • Multi-term AND contract: space-separated terms are ANDed — but only as SEPARATE es.exe command-line arguments; ONE argument containing spaces is a phrase (literal substring). splitQueryTerms() in index.ts passes query terms as separate arguments (double quotes group a term, e.g. a phrase). No query rewriting is performed.
  • Index freshness: everything_status checks the newest file date-modified present in the index (not date-recently-changed, which is unreliable post-rebuild). If nothing has been modified in 24h it warns the index may be stale (USN monitoring off) — on the reference install USN live updates were verified working (2026-09-09) after a forced rebuild (new files indexed within seconds).

Property column names (all 55, verified)

-add-columns accepts exactly these names (es.exe rejects anything else with Error 4: Unknown column). The tool's columns parameter description lists only nine common examples by design; this list is the complete reference. Media/document columns (width, height, length, date-taken, artist, ...) are empty for items that lack the property.

attributes, audio-bitrate, audio-bits-per-sample, audio-channels, audio-sample-rate, aspect-ratio, author, last-author, album, artist, bit-depth, camera-maker, camera-model, comment, company, content-type, date-acquired, date-accessed, date-changed, date-created, date-run, date-recently-changed, date-taken, extension, file-signature, f-stop, frame-rate, genre, hard-link-count, height, iso-speed, kind, latitude, length, line-count, lens-model, longitude, page-count, parent-name, people, product-name, product-version, run-count, slide-count, software, tags, title, track, total-bitrate, video-bitrate, version, volume-label, width, word-count, year

Source attribution

Query syntax reference adapted from CodingRookie98/everything-search (MIT License). Not affiliated with voidtools.