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

@aiwayds/pi-ext-fan

v0.1.5

Published

pi-coding-agent extension — @agent interception, /ext family-bucket installer (/ext all, /ext setup, /ext status), /think command, /init shortcuts

Readme

pi-ext-fan

pi-coding-agent extension: @agent interception + family-bucket companion installer.

Features

1. @agent syntax interception + autocomplete

Type @<agent-name> <task> in the input box to dispatch to a sub-agent:

  • @workhorse "write the tests" → transforms into /run workhorse "write the tests"
  • Autocomplete for agent names on @ (from built-in + ~/.pi/agent/agents + ~/.agents)
  • Toggle with /ext on / /ext off (or /ext at-agent [on|off])

2. /ext command surface

Bare /ext (or /ext help) prints the subcommand summary:

/ext commands:
  help                                  show this help
  status | list | ls                    at-agent state + companion install status
  install-all                           install every companion in dependency order
  setup [name ...]                      interactive picker (or run named companions)
  uninstall [name ...]                  picker of installed pi-type, or `pi remove` named
                                        (copy/check types are not uninstallable)
  on | off                              enable / disable @agent interception
  at-agent [on|off]                     toggle (default) or set @agent interception
  • /ext status (alias: /ext list, /ext ls) — at-agent state + companion install status, grouped by aiwayds / rpiv / ecosystem with per-line ✅/❌. The three names share a single handler, so output is identical.
  • /ext on / /ext off — enable / disable @agent interception directly.
  • /ext at-agent [on|off] — alias-set (at-agent / at_agent / atagent) that accepts an optional on / off argument, defaulting to a toggle.
  • Unknown subcommands print the help text plus a one-line error pointing at /ext help — no silent no-op, no crash.

3. Family-bucket installer (/ext install-all / /ext setup)

The family bucket covers 18 companions in 3 groups. Each entry is one of three action types:

  • pi — installed via pi install <source> (tracked to latest)
  • copy — agent .md files synced into ~/.pi/agent/agents (copied only when the target file does not already exist, so local customizations like a hand-tuned oldfox.md are never overwritten)
  • check — probes a CLI (command -v …); when missing it only prints an install hint, it never runs an installer

aiwayds group (9, all pi)

| Key | Label | Source | | ----- | ------- | -------- | | sidebar | Sidebar Panel | npm:@aiwayds/pi-sidebar-panel | | footbar | Powerline Footer | npm:@aiwayds/pi-powerline-footer | | cron | Kimi Cron | npm:@aiwayds/pi-kimi-cron | | think-panel | Think Panel | npm:@aiwayds/pi-think-panel | | jarvis | Jarvis Sphere | npm:@aiwayds/pi-jarvis-sphere | | model-favs | Model Favorites | npm:@aiwayds/pi-model-favorites | | topic-memory | Topic Memory | npm:@aiwayds/pi-topic-memory | | fun-agent | Fun Agent | npm:@aiwayds/pi-fun-agent |

rpiv group (5, all pi)

| Key | Label | Source | | ----- | ------- | -------- | | rpiv-ask-user-question | RPIV Ask User Question | npm:@juicesharp/rpiv-ask-user-question | | rpiv-todo | RPIV Todo | npm:@juicesharp/rpiv-todo | | rpiv-advisor | RPIV Advisor | npm:@juicesharp/rpiv-advisor | | rpiv-i18n | RPIV i18n | npm:@juicesharp/rpiv-i18n | | rpiv-btw | RPIV By The Way | npm:@juicesharp/rpiv-btw |

ecosystem group (4)

| Key | Label | Type | Detail | | ----- | ------- | ------ | -------- | | lean-ctx | lean-ctx (pi extension) | pi | npm:pi-lean-ctx | | lean-ctx-cli | lean-ctx CLI | check | probes command -v lean-ctx; hint: cargo install lean-ctx (or brew tap yvgude/lean-ctx && brew install lean-ctx) | | agents | Agents (auto-sync) | copy | syncs fun-agent's agents/*.md → ~/.pi/agent/agents/ (skip-if-exists) | | pi-subagents | Subagents | pi | npm:@tintinweb/pi-subagents |

Both /ext install-all and /ext setup share the same sequential runner. Items execute in strict dependency order — all pi installs first, then the copy sync (depends on fun-agent's agents being on disk), then the check probes — and within each phase the list order is preserved (never concurrent).

/ext uninstall and /ext uninstall <name>... share the same runner with the action="uninstall" flag. The dependency order is preserved (pi-type attempts come first), but the per-phase handling diverges:

  • pi-type — pi remove <source> is invoked only for currently installed items; not-installed items are skipped.
  • copy-type — skipped (not uninstallable). The synced agent files in ~/.pi/agent/agents/ may carry user customizations, so deleting them would be destructive. This version never removes them.
  • check-type — skipped (not uninstallable). These entries describe external CLIs (lean-ctx, etc.) with no installed artefact on disk; the user is expected to uninstall the CLI through its own package manager.

Both operations share a single in-flight latch: an /ext install-all (or /ext setup) started while /ext uninstall is running (and vice versa) is rejected with a notify naming whichever action is currently in flight.

Per-item progress is rendered in an editor widget above the input, updated in place after each item. The widget shows a 1-line counter header (e.g. Installing 12/18 · installed=5 skipped=3 failed=1 or Uninstalling 3/8 · removed=2 skipped=1 failed=0) followed by the last 9 lines — the most recent results plus the current in-progress row. Older results scroll off the top as the run continues; the full list and a final Done. summary arrive in the notify once the run completes.

Line shapes (install):

  • [3/18] Sidebar Panel … — starting
  • [3/18] Sidebar Panel ✅ installed (2.1s) — pi install succeeded
  • [3/18] Sidebar Panel ⏭ skipped (already installed) — pi already present
  • [3/18] Agents (auto-sync) ⏭ skipped (target exists) — copy target already present
  • [3/18] lean-ctx CLI ℹ hint: cargo install lean-ctx — check probe missed
  • [3/18] Sidebar Panel ❌ failed: <error> — non-zero exit / thrown exception

Line shapes (uninstall):

  • [3/8] Sidebar Panel … — starting
  • [3/8] Sidebar Panel ✅ removed (1.8s) — pi remove succeeded
  • [3/8] Sidebar Panel ⏭ skipped (not installed) — pi not currently installed
  • [3/8] Agents (auto-sync) ⏭ skipped (not uninstallable: copy targets may be user-edited) — copy type refused
  • [3/8] lean-ctx CLI ⏭ skipped (not uninstallable: check entries are CLI probes only) — check type refused
  • [3/8] Sidebar Panel ❌ failed: <error> — non-zero exit / thrown exception

A single failure never aborts the run; subsequent items continue. When the last item finishes, the widget clears and a single notify summarises Done. installed=X skipped=Y failed=Z (total N) (install) or Done. removed=X skipped=Y failed=Z (total N) (uninstall), followed by the full result list and an action-specific reload reminder — install runs Reload pi (/reload) to activate new extensions, uninstall runs run /reload to apply.

  • /ext install-all — one-shot setup: installs every missing pi-type companion, re-syncs agents (idempotent, skips existing files), probes the CLI checks. No picker, no prompts.
  • /ext all — deprecated alias for /ext install-all; prints a warning notify ('all' is deprecated — use '/ext install-all') and then runs the same one-shot path. Kept so existing muscle memory still works.
  • /ext setup — interactive checkbox picker (all selected by default, grouped): space toggles a row, a selects all/none, enter runs the checked ones, esc cancels.
  • /ext setup <name> [<name>...] — run named companions directly (still uses the sequential runner and the same per-item progress widget).
  • /ext uninstall — interactive picker of currently installed pi-type companions only (copy/check are filtered out — they're not uninstallable). Same space/a/enter/esc keys as /ext setup; same progress widget and summary format with removed= instead of installed=.
  • /ext uninstall <name> [<name>...] — pi remove named items directly. copy and check items are accepted at the dispatch layer (so muscle memory like /ext uninstall agents doesn't error) but skipped in the runner with a clear reason; unknown names are rejected up front.

4. /think — cycle/set thinking level

/think cycles off → minimal → low → medium → high → xhigh → max; /think high sets a specific level.

5. Skill shortcuts

  • /init → forwards to /skill:init (root AGENTS.md)
  • /init-deep → forwards to /skill:init-deep (.architect shadow tree)

Install (fresh environment, three steps)

pi install npm:@aiwayds/pi-ext-fan

Then, inside the pi session:

/ext install-all    ← full setup: installs every missing companion, syncs agents, probes CLIs
/reload             ← activates the newly installed extensions

That's it — /ext install-all skips anything already installed, re-syncs agents without touching existing files, and only reports a hint for missing CLIs. It's idempotent and safe to re-run anytime a companion is missing or a new agent file should be picked up.

Prefer a manual pick? Use /ext setup (interactive checkbox list) or /ext setup <name> for a single package. Check what's present with /ext status (or its list / ls aliases).

Release

Publishing flow. Push a v* tag to trigger GitHub Actions, which runs npm publish --provenance automatically. A post-publish verify step then polls the npm registry for several minutes (≈5 min window) to confirm the new version is actually visible — npm propagation can lag, and this guard turns a late-arriving red status into green before downstream consumers pick the build up.

Token rotation. The repository secret NPM_TOKEN and the maintainer's local ~/.npmrc currently point at the same npm token. When rotating, update both in lockstep; rotating only one side leaves publishes authenticated against a stale credential and fails with E401.

Local development. pi installs this package from the published npm version (npm:@aiwayds/pi-ext-fan), so edits inside this repo do not take effect immediately in a running session. To try local changes, install the absolute path of this checkout instead (e.g. pi install /Users/fliu56/github/pi-ext-fan), validate, then switch back to the npm source for everyday use.

License

MIT