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

@mjakl/pi-interlude

v3.0.0

Published

Pi extension for stashing the current draft, sending an interlude message, and restoring the draft.

Readme

pi-interlude

Ever had a nice prompt prepared and the agent comes back with a question, or you need to check something before continuing? Deleting the draft is wasted effort, copy/pasting to make space for the interlude prompt is cumbersome. zsh has this fantastic stash command - Esc-q - that allows you to temporarily remove the current command and it will restore it after your interlude command is finished. pi-interlude brings this to pi. Install it, reload, enter something, press F6, enter something else, send it, and watch with awe as your previous prompt reappears 🎉.

A pi extension that lets you stash the current draft, send a one-off interlude message, and then restore the original draft.

Install

Option 1: Install from npm (recommended)

pi install npm:@mjakl/pi-interlude

Option 2: Install via git

pi install git:github.com/mjakl/pi-interlude

Option 3: Install local package

pi install ./

What it does

  1. Press the interlude shortcut
  2. Your current editor text is stashed and the input box is cleared
  3. Type and send a temporary message, or use one of the supported slash commands below
  4. Your previous draft is restored into the editor

Press the shortcut again before sending to restore the stashed draft manually.

Slash command support

Auto-restore currently works for:

  • /compact
  • /model
  • /reload

For other slash commands, the stash stays armed and can be restored by pressing the interlude shortcut again. Starting, resuming, or forking a session discards the stash with the previous session.

Note: the extension currently stashes editor text only. If your draft includes attachments, those are not restored.

Default shortcut

  • f6

F6 is the sole default because it works reliably across terminals and does not conflict with pi's built-in shortcuts.

Opting in to Ctrl-X

Pi 0.80.7 reserves Ctrl-X globally for copying the last assistant message (app.message.copy). Pi skips an extension shortcut that conflicts with this action, so pi-interlude 3.0 no longer binds Ctrl-X by default.

To keep using Ctrl-X for interludes, merge these settings into ~/.pi/agent/keybindings.json:

{
  "app.message.copy": [],
  "app.models.clearAll": [],
  "interlude": ["f6", "ctrl+x"]
}

app.message.copy must be disabled or rebound to free Ctrl-X. The /copy command remains available when its shortcut is disabled.

app.models.clearAll is a separate, picker-specific Ctrl-X binding. It does not block pi-interlude globally, but disabling or rebinding it avoids a remaining shortcut conflict diagnostic. Replace either empty array with another key if you want to keep that built-in shortcut.

After changing the file, run /reload in pi or restart it.

Configuration

The extension reads a custom interlude key from pi's keybindings file. This is ~/.pi/agent/keybindings.json by default, or keybindings.json inside PI_CODING_AGENT_DIR when that environment variable is set.

A single custom shortcut:

{
  "interlude": "alt+q"
}

Multiple custom shortcuts:

{
  "interlude": ["f6", "alt+q"]
}

If interlude is absent, empty, or contains no valid shortcuts, the extension defaults to f6. Custom Ctrl-X bindings also require the pi configuration described above.

After changing the file, run /reload in pi.