原始内容
pi-extensions
A monorepo of high-quality extensions for the Pi coding agent.
Every package here is a Pi extension that can be installed individually from npm. Packages are tagged
with the pi-package keyword so they appear in the pi.dev gallery.
Packages
| Package | npm | Description |
|---|---|---|
@jmcombs/pi-1password |
1Password secret injection — read secrets and run commands with credentials via the op CLI. |
|
@jmcombs/pi-better-toolsy |
Drop-in replacements for the built-in ls/read/grep/find/edit/write tools, with .gitignore awareness, path-traversal protection, and injection-safe edits. |
|
@jmcombs/pi-blue-psl-10k |
Powerline-styled status footer (Blue PSL 10K theme) — git, context usage, token counts, and cost on one line. | |
@jmcombs/pi-context7 |
Real-time, version-accurate library documentation via Context7. | |
@jmcombs/pi-grok-search |
Real-time web search via the xAI Grok API. | |
@jmcombs/pi-headroom |
Whole-conversation context compression via a local Headroom proxy, with graceful passthrough when it is unreachable. | |
@jmcombs/pi-notify |
Terminal notifications (OSC 777/9/99) when Pi finishes a turn — Ghostty, iTerm2, WezTerm, Kitty, and more. No OS binaries. | |
@jmcombs/pi-prompt-enhancer |
Codebase-aware prompt enhancer that rewrites rough prompts into precise ones with project tree, git context, and referenced file contents. | |
@jmcombs/pi-tavily-search |
Real-time web search via the Tavily API. |
1Password credential API
Extensions that need a user-provided secret resolve it through the shared
@jmcombs/pi-1password credential API. Developer docs:
- Integration guide — add 1Password to your extension, step by step.
- API reference — the full credential-API surface.
Install an Extension
# Install globally
pi install npm:@jmcombs/pi-tavily-search
# Or try one for a single session
pi -e npm:@jmcombs/pi-tavily-search
See the Pi packages documentation for additional install options (git, local path, project-scoped, filtering, etc.).
Repository Layout
pi-extensions/
├── packages/
│ ├── _template/ # Scaffold for new extensions (see TEMPLATE.md)
│ └── <extension-name>/ # One directory per published package
├── scripts/
│ └── sync-versions.mjs # Validates each package conforms to project conventions
├── .github/workflows/ # CI + Release Please
├── release-please-config.json
├── .release-please-manifest.json
└── …shared tooling (biome, vitest, husky, commitlint, secretlint)
Requirements
- Node.js
>= 22.0.0(CI tests on Node 22 and Node 24; the release pipeline runs on Node 24) - npm 10+ (Node 24 ships npm 11+, required for npm Trusted Publishing)
Quality Gate
Every PR runs the same npm run check gate:
npm run check
This runs lint (including formatting), type check, tests, version validation, and security
checks (secretlint + npm audit --omit=dev). All packages must pass.
See docs/ci.md for every CI check and what a green does and does not prove.
Branch Protection
The main branch is protected by a GitHub Repository Ruleset that requires PR review from
@jmcombs, all CI checks green on Node 22 and Node 24, Conventional Commits, and a linear
history. The maintainer can push directly to main via the admin bypass; outside contributors
must go through PR review. See CONTRIBUTING.md → Branch Protection
for the full rule list and rationale.
Adding a New Extension
- Read
CONTRIBUTING.md. - Copy
packages/_template/and followTEMPLATE.md. - Open a PR. Release Please will produce a per-package release PR after merge.
Versioning & Releases
Each package is versioned independently with semver. See VERSIONING.md for the full policy.
Releases are automated via Release Please and
published to npm using npm Trusted Publishing (OIDC).
License
MIT © Jeremy Combs