Documentation Index
Fetch the complete documentation index at: https://mintlify.com/badlogic/pi-mono/llms.txt
Use this file to discover all available pages before exploring further.
Pi can help you create pi packages. Just ask it to bundle your extensions, skills, prompt templates, or themes.
package.json under the pi key, or use conventional directories.
Installing Packages
- npm
- git (HTTPS)
- git (SSH)
- Local Path
Global vs Project Install
By default, packages install globally (written to~/.pi/agent/settings.json).
Use -l for project install (written to .pi/settings.json):
- Can be shared with your team
- Auto-install on startup if missing
- Override global packages
Trying Without Installing
Test a package without installing:Managing Packages
- List
- Update
- Remove
- Configure
Creating a Pi Package
Add api manifest to package.json or use conventional directories. Include the pi-package keyword for discoverability.
Basic Package
Convention Directories
If nopi manifest is present, Pi auto-discovers resources:
extensions/-.tsand.jsfilesskills/- Recursively findsSKILL.mdfolders and top-level.mdfilesprompts/-.mdfilesthemes/-.jsonfiles
Gallery Metadata
The package gallery displays packages tagged withpi-package. Add video or image for preview:
- video: MP4 only. Autoplays on hover (desktop), clicking opens fullscreen
- image: PNG, JPEG, GIF, or WebP static preview
Package Structure
Single Type Package
Packages can contain just one type of resource:Glob Patterns
Arrays support glob patterns and exclusions:pattern- Glob match!pattern- Exclude matches+path- Force-include exact path-path- Force-exclude exact path
Dependencies
Runtime Dependencies
Third-party runtime dependencies belong independencies:
npm install automatically.
Peer Dependencies
Pi bundles core packages. List them inpeerDependencies with "*" range and do not bundle them:
Bundled Dependencies
Other pi packages must be bundled. Add them todependencies and bundledDependencies:
Package Filtering
Users can filter what a package loads:- Omit a key to load all of that type
- Use
[]to load none of that type !patternexcludes matches+pathforce-includes an exact path-pathforce-excludes an exact path- Filters layer on top of the manifest (they narrow down what’s allowed)
Publishing
Prepare Package
Ensure:
package.jsonhaspimanifestkeywordsincludes"pi-package"- All resources are included
- Dependencies are declared
Scope and Deduplication
Packages can appear in both global and project settings. If the same package appears in both, the project entry wins. Identity is determined by:- npm: package name
- git: repository URL (without ref)
- local: resolved absolute path
Example Packages
pi-skills
Official skills: web search, browser, transcription, Google APIs
Package Gallery
Browse community packages
Best Practices
Keep packages focused
Keep packages focused
Create separate packages for different purposes:
my-web-tools- Web scraping extensionsmy-themes- Theme collectionmy-ai-skills- AI/ML skills
Document everything
Document everything
Include a comprehensive README with:
- What the package provides
- How to install
- Usage examples
- Configuration options
- Screenshots/demos
Version carefully
Version carefully
Follow semantic versioning:
- Patch (1.0.1): Bug fixes, documentation
- Minor (1.1.0): New features, backward compatible
- Major (2.0.0): Breaking changes
Test before publishing
Test before publishing
Test locally with:Verify:
- All resources load
- Extensions work
- Skills execute
- Themes display correctly
Add gallery media
Add gallery media
Include
video or image in the manifest to make your package stand out in the gallery.Declare dependencies correctly
Declare dependencies correctly
- Runtime deps in
dependencies - Pi packages in
peerDependencies(core) orbundledDependencies(other) - Dev deps in
devDependencies
Advanced Topics
Multi-Package Projects
For monorepos with multiple pi packages:Private Packages
For private npm registries or git repositories:Offline Use
For environments without internet:- Install packages on a connected machine
- Copy the package directories:
- npm global:
npm root -g - npm local:
.pi/npm/ - git global:
~/.pi/agent/git/ - git local:
.pi/git/
- npm global:
- Transfer to offline machine
- Use local path installs:
Troubleshooting
Package not loading
Package not loading
Check:
- Package is in
pi list - Resources are enabled in
pi config - Paths in manifest are correct
- JSON is valid
npm installran (for git packages)
git clone fails
git clone fails
For SSH:
- Verify SSH key is added:
ssh -T git@github.com - Check
~/.ssh/configfor host aliases - Use HTTPS instead if SSH is problematic
Update doesn't fetch latest
Update doesn't fetch latest
Pinned packages (with version/tag) are skipped by
pi update. Remove the pin:Dependency conflicts
Dependency conflicts
If dependencies conflict between packages:
- Check if they’re peer dependencies (should use Pi’s bundled version)
- Consider bundling dependencies in one package
- Report incompatibility to package authors
Next Steps
Extensions
Build TypeScript extensions
Skills
Create Agent Skills
Prompt Templates
Make reusable prompts
Themes
Design custom themes
Package Gallery
Browse existing packages
GitHub
View source & examples