@mrclrchtr/supi
v1.0.0
Published
SuPi (Super Pi) — The opinionated way to extend PI
Maintainers
Readme
SuPi
Super Pi
The opinionated way to extend PI.
SuPi is an opinionated extension repo for PI with LSP, Skills, marketplace compatibility, and personal best practices built in.
- SuPi is my curated extension stack for PI.
- SuPi makes PI extensible, interoperable, and sane by default.
Built for the pi coding agent.
Extensions
| Extension | Description |
|-----------|-------------|
| aliases | Registers /exit to quit pi, /e as a shorthand alias, and /clear to start a new session (alias for /new) |
| bash-timeout | Injects a default timeout on every bash tool call when the LLM omits one. Configurable via PI_BASH_DEFAULT_TIMEOUT (seconds, default 120). |
| skill-shortcut | Type $skill-name as a shorthand for /skill:skill-name. Autocomplete triggers on $. |
| lsp | Adds Language Server Protocol support for hover, definitions, references, symbols, rename, code actions, and diagnostics. It appends inline diagnostics after write/edit, advertises semantic-first tool guidance, and injects concise pre-turn LSP context based on relevant active coverage or outstanding diagnostics. |
Install
pi install npm:@mrclrchtr/supi
# or from git
pi install git:github.com/mrclrchtr/SuPi
# or from a local checkout
pi install /path/to/SuPiWhen installed from a local path, pi loads the working tree directly; after edits, use /reload or restart pi to pick up extension changes.
LSP extension
The lsp extension is meant to make pi more semantic in supported languages:
- exposes a single
lsptool with actions for hover, definition, references, diagnostics, symbols, rename, and code actions - appends LSP diagnostics after
write/edit - adds semantic-first
promptSnippet/promptGuidelinesso the agent preferslspfor code navigation and diagnostics - injects concise pre-turn context in
before_agent_start, favoring relevant outstanding diagnostics first and otherwise summarizing relevant active LSP coverage - tracks prompt-mentioned and recently touched files to keep injected guidance focused
- provides
/lsp-statusfor server and diagnostic visibility
Configuration:
PI_LSP_DISABLED=1— disable the extensionPI_LSP_SERVERS=rust-analyzer,pyright— allow-list serversPI_LSP_SEVERITY=1|2|3|4— inline diagnostic threshold.pi-lsp.jsonin the project root — override/add/disable server definitions
Development
mise install
pnpm install
mise run hooks
pnpm typecheck
pnpm biome
pnpm biome:fix
pnpm biome:ci
pnpm biome:ai
pnpm test
pnpm pack:check
pnpm verify
hk run check # local pre-push checks (full pnpm verify)
hk run fix # local pre-commit autofixesBiome is configured in biome.jsonc with formatting, import organization, recommended lint rules, and stricter project/types/test plus aggressive complexity and nursery rules.
Publishing
Pi package docs require a pi manifest (already present) and recommend the pi-package keyword for discoverability. This package publishes the TypeScript source directly — pi loads extensions without a build step.
GitHub Actions handles verification and releases:
CIruns typecheck, Biome, Vitest, andnpm pack --dry-runConventional Commitslints PR titles and commit messagesReleaseruns on pushes tomain, usessemantic-releaseto determine the next version from Conventional Commits, publishes to npm, tags the release, and creates GitHub release notes
One-time setup
- Ensure the publishing account owns the
@mrclrchtrnpm scope - Add an npm automation token as the
NPM_TOKENGitHub repository secret - Use Conventional Commits on merges to
mainsosemantic-releasecan compute versions (feat:= minor,fix:= patch,!/BREAKING CHANGE:= major) - Be aware that semantic-release starts first stable releases at
1.0.0
Release flow
pnpm verify
git push origin mainsemantic-release handles version calculation, tagging, npm publishing, and GitHub release notes automatically. You can smoke-test the configuration locally with:
pnpm release -- --dry-run --no-ciNote: local dry-runs still need git access to the GitHub remote in order to verify tagging permissions.
