pi-package-test

Test package for pi coding agent with extensions, skills, themes, and prompts

Package details

extensionskillthemeprompt

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:

  1. Manifest patterns are applied first (defines what package provides)
  2. 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