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

@narumitw/pi-tool

v0.3.1

Published

Browse configured Pi tools and optionally show the active tool set.

Readme

🧰 pi-tool — Browse Pi Tools and Track Active Tools

npm Pi extension License: MIT

Browse every tool configured in the current Pi session and optionally show the active tool set above the editor.

✨ Features

  • Lists built-in, SDK-provided, and extension-provided tools in one searchable catalog.
  • Shows active state, description, source, scope, origin, path, and optional base directory.
  • Displays the complete JSON parameter schema and prompt guidelines exposed by Pi.
  • Shows the effective system-prompt snippet for each active tool.
  • Refreshes metadata every time the catalog opens.
  • Optionally shows the current active tools above the editor.
  • Keeps the active-tool widget off by default.
  • Persists widget changes in the extension-owned pi-tool.json settings file.
  • Never enables, disables, or executes Pi tools.

📦 Install

Install persistently from npm:

pi install npm:@narumitw/pi-tool

Try without installing permanently:

pi -e npm:@narumitw/pi-tool

Try this package from a local checkout:

npm --workspace @narumitw/pi-tool run build
pi -e ./packages/pi-tool

An unbuilt local checkout must be built before loading the package directory. Extensions run with the same permissions as Pi. Only install packages from sources you trust.

🚀 Quick start

Run:

/tool

Choose Browse tools to search the catalog and inspect a tool. Choose Active tool status directly from the main menu to turn the widget on or off. The widget is off until you enable it.

The command works in TUI and RPC modes. It rejects arguments and rejects print or JSON modes because Pi does not provide an observable interactive command surface there.

💬 Commands

| Command | Description | | --- | --- | | /tool | Browse configured tools and configure the active-tool widget. |

/tool intentionally accepts no arguments and does not enable, disable, or execute tools. Its menu provides Browse tools, a direct active-tool status toggle, Status, and Help.

⚙️ Settings

The active user settings file is <getAgentDir()>/pi-tool.json, normally ~/.pi/agent/pi-tool.json. The file is not created when the widget remains at its default. Use this document to enable the widget manually:

{
  "activeToolStatus": true
}

activeToolStatus accepts true or false and defaults to false when absent. Manual edits apply after /reload or the next session start. The /tool menu toggle applies changes immediately and persists them with an atomic file replacement. Settings writes preserve unknown fields so newer configuration is not erased. Malformed JSON or an invalid value is ignored with a warning and is never overwritten by the menu. Writes are ordered within one Pi process, but separate Pi processes do not share a settings lock.

ℹ️ Active-tool widget

When enabled, the widget shows every name returned by Pi's public pi.getActiveTools() API above the editor. It refreshes when relevant lifecycle events fire and polls for changes made by other extensions. It clears immediately when disabled and during session replacement, reload, or shutdown. Tool names are sanitized and bounded before terminal rendering.

ℹ️ Metadata limits

The catalog displays the fields returned by Pi's public pi.getAllTools() API: name, description, parameter schema, prompt guidelines, and source metadata. It combines those fields with the effective snippets returned by ctx.getSystemPromptOptions() for the current active tool set. An inactive tool's configured snippet is not exposed through the Extension API, so “None in the current system prompt” does not mean its full definition has no snippet. Pi does not expose a tool's implementation, runtime secrets, or label through these Extension APIs.

🗂️ Package layout

packages/pi-tool/
├── src/
│   ├── index.ts               # Thin repository entrypoint
│   ├── tool.ts                # Command, settings, and session lifecycle ownership
│   ├── tool-catalog.ts        # Lazy menu and exact catalog detail projection
│   ├── active-tool-status.ts  # Widget formatting, refresh, and cleanup
│   └── settings.ts            # pi-tool.json validation and atomic persistence
├── dist/                # Generated Jiti runtime and lazy catalog chunk
├── scripts/build-runtime.mjs
├── test/
├── README.md
├── LICENSE
├── package.json
└── tsconfig.json

🔎 Keywords

Pi extension, Pi coding agent, tool browser, active tools, tool status, tool catalog, tool schema, TypeScript Pi package.

📄 License

MIT. See LICENSE.