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

@codewithkenzo/pi-blitz

v0.4.1

Published

Pi extension for Blitz: fast, token-efficient code edits using the Zig Blitz CLI.

Readme

pi-blitz

Fast, token-efficient code edits for Pi.

On a 10k-token function try/catch wrap benchmark, Pi Blitz used 85 provider output tokens instead of 9,640 and finished in 4.6s instead of 61s.

pi-blitz is a Pi Rig extension that gives Pi a set of low-token edit tools powered by the blitz CLI. It is built for the moments when a coding agent needs to change a large function but should not waste time and tokens printing the whole function back.

Why use it

Normal agent edits can get expensive fast: the model reads a big body, rewrites most of it unchanged, then sends that whole replacement through a tool call. Blitz changes that pattern.

Current benchmark snapshot

gpt-5.4-mini, live Pi tool calls, N=1 full matrix plus prior N=5 checks on strong classes:

| Edit class | Core edit | pi-blitz | Result | |---|---:|---:|---| | 10k-token function try/catch wrap | 9,640 output tokens / 61s | 85 output tokens / 4.6s | 99.1% fewer output tokens | | Large structural patch, 3 edits | 9,708 output tokens / failed output | 107 output tokens / correct | 98.9% fewer output tokens vs failed core attempt | | Async try/catch wrapper | 149 arg tokens | 42 arg tokens | 71.8% fewer tool-call arg tokens | | Class method try/catch wrapper | 118 arg tokens | 40 arg tokens | 66.1% fewer tool-call arg tokens | | TSX return replacement | 67 arg tokens | 48 arg tokens | 28.4% fewer tool-call arg tokens |

The big wins are large preserved bodies. Small exact edits should still use Pi core tools.

With pi-blitz, Pi can send a compact operation instead:

  • “wrap fetchUser in try/catch”
  • “replace the last return in computeTotal
  • “insert this line after const normalized = ...
  • “rename this identifier in code, but not in strings/comments”

Blitz handles the file lookup, code location, indentation, parse check, backup, and write.

On a larger three-edit structural patch, Blitz used 107 output tokens where a core edit attempt used 9,708 and failed the expected output. For smaller semantic edits, the savings are smaller but still useful: try/catch wrappers cut tool-call arguments by 66–72%, and return-expression rewrites cut them by 22–28% in the current Pi bench.

That is the point: fewer wasted tokens, faster edits, less agent thrash.

When it helps

Use pi-blitz when the edit is larger than a one-liner but smaller than a full rewrite:

| Good fit | Better with core edit/write | |---|---| | Wrap a large function body | New files | | Change a return expression | Tiny one-line changes | | Insert code near a known statement | Whole-file rewrites | | Several related edits in one file | Unsupported languages | | Rename an identifier safely | Exact oldText/newText patches |

Core edit is still better for small direct changes. pi-blitz is for speed and token efficiency on larger structured edits.

Install

Install from npm:

pi install npm:@codewithkenzo/pi-blitz

pi-blitz depends on @codewithkenzo/blitz, which installs the matching native CLI package when available. No manual Zig build or BLITZ_BIN config is needed for supported platforms.

Copy/paste for an agent:

Install Pi Blitz for fast token-efficient edits.

Run:

```bash
pi install npm:@codewithkenzo/pi-blitz
```

Then restart/open Pi if needed and verify `/help` shows `pi_blitz_*` tools. Run `pi_blitz_doctor` if available.

From source:

pi install /path/to/pi-blitz

If you build Blitz yourself or want a custom binary, point Pi at it:

// ~/.pi/pi-blitz.json
{ "binary": "/abs/path/to/blitz/zig-out/bin/blitz" }

Verify in Pi:

/help

You should see pi_blitz_* tools.

Tools

| Tool | Use for | |---|---| | pi_blitz_read | Inspect a file before editing. | | pi_blitz_wrap_body | Wrap a large body without repeating it. | | pi_blitz_try_catch | Add try/catch around a symbol body. | | pi_blitz_replace_return | Replace a return expression. | | pi_blitz_replace_body_span | Replace a known span inside a body. | | pi_blitz_insert_body_span | Insert text before/after a known body anchor. | | pi_blitz_patch | Compact tuple edits: replace, insert, wrap, return, try/catch. | | pi_blitz_multi_body | Multiple body edits in one file. | | pi_blitz_compose_body | Preserve parts of a body while changing the rest. | | pi_blitz_edit | Symbol-anchored replacement/insertion. | | pi_blitz_batch | Batch several symbol edits. | | pi_blitz_apply | Full structured JSON edit API. | | pi_blitz_rename | Rename identifiers while skipping strings/comments. | | pi_blitz_undo | Undo the last Blitz edit for a file. | | pi_blitz_doctor | Check Blitz binary, grammars, and cache. |

Examples

Add try/catch without repeating a huge body

Use:

pi_blitz_try_catch
file: src/api/users.ts
symbol: fetchUser
catchBody: console.error(error); throw error;

Pi sends a small tool call. Blitz keeps the existing function body and wraps it.

Replace a return expression

Use:

pi_blitz_replace_return
file: src/pricing.ts
symbol: computeTotal
expr: subtotal + tax
occurrence: last

Rename code safely

Use:

pi_blitz_rename
file: src/utils.ts
old_name: processData
new_name: transformPayload

Strings and comments are skipped.

MCP alternative

If you want the same Blitz tools outside Pi, use the MCP server included in codewithkenzo/blitz:

BLITZ_BIN=/abs/path/to/blitz/zig-out/bin/blitz \
BLITZ_WORKSPACE=/abs/path/to/project \
bun /abs/path/to/blitz/mcp/blitz-mcp.ts

Configuration

~/.pi/pi-blitz.json:

type Config = {
  binary?: string; // absolute path or command name on PATH
};

The binary path is user-level config. Project config cannot override it.

Supported languages

Blitz currently supports:

  • TypeScript
  • TSX
  • Python
  • Rust
  • Go

Run pi_blitz_doctor to confirm your local binary and grammar support.

License

MIT