pi-package-test
Test package for pi coding agent with extensions, skills, themes, and prompts
Package details
Install pi-package-test from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-package-test- Package
pi-package-test- Version
0.1.6- Published
- Jan 25, 2026
- Downloads
- 34/mo · 15/wk
- Author
- badlogic
- License
- MIT
- Types
- extension, skill, theme, prompt
- Size
- 189.9 KB
- Dependencies
- 1 dependency · 4 peers
Pi manifest JSON
{
"extensions": [
"extensions",
"node_modules/shitty-extensions/extensions",
"!**/cost-tracker.ts",
"!**/flicker-corp.ts",
"!**/funny-working-message.ts",
"!**/handoff.ts",
"!**/loop.ts",
"!**/plan-mode.ts",
"!**/speedreading.ts",
"!**/status-widget.ts",
"!**/ultrathink.ts",
"!**/usage-bar.ts"
],
"skills": [
"skills",
"node_modules/shitty-extensions/skills"
],
"themes": [
"themes"
],
"prompts": [
"prompts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-package-test
A reference package demonstrating pi coding agent's package system features.
What This Demonstrates
1. Package Structure
A pi package can include multiple resource types:
pi-package-test/
├── extensions/ # *.ts or *.js files
├── skills/ # Directories with SKILL.md
├── themes/ # *.json files
├── prompts/ # *.md files
├── node_modules/ # Bundled dependencies (optional)
└── package.json
If you follow this convention, no pi field is needed in package.json. Pi auto-discovers resources from these directories.
The pi field is only needed when:
- Resources are in non-standard locations
- You want to include resources from bundled dependencies
- You want to exclude certain files via patterns
2. Pi Manifest with Glob Patterns
The pi field in package.json declares resources using glob patterns and exclusions:
{
"pi": {
"extensions": [
"extensions",
"node_modules/shitty-extensions/extensions",
"!**/cost-tracker.ts",
"!**/loop.ts"
],
"skills": [
"skills",
"node_modules/shitty-extensions/skills"
],
"themes": ["themes"],
"prompts": ["prompts"]
}
}
3. Bundling Other Pi Packages
To include resources from another package, use bundledDependencies to embed it in the published tarball:
{
"dependencies": {
"shitty-extensions": "^1.0.1"
},
"bundledDependencies": [
"shitty-extensions"
]
}
Without bundledDependencies, npm's hoisting could move the dependency elsewhere, breaking the node_modules/... paths in the manifest.
4. User-Side Filtering
Users can narrow down what the manifest provides in their settings.json:
{
"packages": [
{
"source": "npm:pi-package-test",
"extensions": ["!**/oracle.ts"],
"skills": [],
"themes": []
}
]
}
User filters layer on top of manifest filtering:
- Manifest patterns are applied first (defines what package provides)
- User patterns are applied on top (narrows down further)
So if the manifest excludes 10 extensions and user adds "extensions": ["!**/oracle.ts"], all 11 are excluded.
Contents
Extensions
| Name | Source | Description |
|---|---|---|
| confirm-destructive.ts | local | Prompts for confirmation before destructive bash commands |
| custom-footer.ts | local | Adds custom status to the footer |
| oracle.ts | bundled | Oracle extension for predictions |
| memory-mode.ts | bundled | Memory mode for persistent context |
Skills
| Name | Source | Description |
|---|---|---|
| transcribe | local | Speech-to-text transcription using Groq Whisper API |
| a-nach-b | bundled | Austrian public transit routing |
Themes
- funky - A vibrant neon color theme
Prompt Templates
- /review - Review code for bugs and improvements
- /explain - Explain code in simple terms
Installation
pi install npm:pi-package-test
License
MIT