Pi パッケージ
pi は pi パッケージを作成できます。ユースケース用のパッケージを構築するよう依頼してください。
Pi パッケージ
Section titled “Pi パッケージ”Pi パッケージは拡張、スキル、プロンプトテンプレート、テーマをバンドルし、npm または git 経由で共有できます。パッケージは package.json の pi キーでリソースを宣言するか、慣例ディレクトリを使用します。
インストールと管理
Section titled “インストールと管理”セキュリティ: Pi パッケージはフルシステムアクセスで実行されます。拡張は任意のコードを実行し、スキルはモデルに任意のアクション(実行ファイルの実行を含む)を指示できます。サードパーティパッケージをインストールする前にソースコードを確認してください。
pi install git:github.com/user/repo@v1pi install https://github.com/user/repo # raw URLs work toopi install /absolute/path/to/packagepi install ./relative/path/to/package
pi remove npm:@foo/barpi list # show installed packages from settingspi update # update pi onlypi update --all # update pi, update packages, and reconcile pinned git refspi update --extensions # update packages and reconcile pinned git refs onlypi update --self # update pi onlypi update --self --force # reinstall pi even if currentpi update npm:@foo/bar # update one packagepi update --extension npm:@foo/barこれらのコマンドは pi パッケージを管理し、pi update は pi CLI インストールも更新できます。pi 自体をアンインストールするには、クイックスタート を参照してください。
デフォルトでは install と remove はユーザー設定(~/.pi/agent/settings.json)に書き込みます。-l でプロジェクト設定(.pi/settings.json)に書き込みます。プロジェクト設定はチームと共有可能で、プロジェクトが信頼されると pi は起動時に不足パッケージを自動インストールします。
インストールせずに試すには --extension または -e を使用します。現在の実行のみ一時ディレクトリにインストールされます:
pi -e npm:@foo/barpi -e git:github.com/user/repoパッケージソース
Section titled “パッケージソース”Pi は設定と pi install で 3 種類のソースを受け付けます。
npm:@scope/[email protected]npm:pkg- バージョン付き spec は固定され、パッケージ更新(
pi update --extensions、pi update --all)でスキップされます。 - ユーザーインストールは
~/.pi/agent/npm/下。 - プロジェクトインストールは
.pi/npm/下。 settings.jsonでnpmCommandを設定すると、miseやasdfなど特定のラッパーコマンドに npm パッケージ検索とインストールを固定できます。
例:
{ "npmCommand": ["mise", "exec", "node@20", "--", "npm"]}git:github.com/user/repo@v1git:[email protected]:user/repo@v1https://github.com/user/repo@v1ssh://[email protected]/user/repo@v1git:プレフィックスなしではプロトコル URL のみ(https://、http://、ssh://、git://)。git:プレフィックスありではgithub.com/user/repoや[email protected]:user/repoなどの短縮形式も可。- HTTPS と SSH URL の両方をサポート。
- SSH URL は設定済み SSH キーを自動使用(
~/.ssh/configを尊重)。 - 非対話実行(CI など)では
GIT_TERMINAL_PROMPT=0で認証プロンプトを無効化し、GIT_SSH_COMMAND(例:ssh -o BatchMode=yes -o ConnectTimeout=5)で高速失敗可能。 - ref は固定 tag または commit。
pi update --extensionsとpi update --allは新 ref に移動しませんが、既存クローンを設定 ref に調整します。 pi install git:host/user/repo@new-refで設定を更新し既存パッケージを新固定 ref に移動。~/.pi/agent/git/<host>/<path>(グローバル)または.pi/git/<host>/<path>(プロジェクト)にクローン。- 調整でチェックアウトが変わると、pi はクローンを reset/clean し、
package.jsonがあればnpm installを実行。
SSH 例:
# git@host:path shorthand (requires git: prefix)
# ssh:// protocol format
# With version refローカルパス
Section titled “ローカルパス”/absolute/path/to/package./relative/path/to/packageローカルパスはディスク上のファイルまたはディレクトリを指し、コピーせず設定に追加されます。相対パスは出現する設定ファイルに対して解決されます。パスがファイルなら単一拡張として、ディレクトリならパッケージルールでリソースを読み込みます。
Pi パッケージの作成
Section titled “Pi パッケージの作成”package.json に pi マニフェストを追加するか慣例ディレクトリを使用します。発見性のため pi-package キーワードを含めてください。
{ "name": "my-package", "keywords": ["pi-package"], "pi": { "extensions": ["./extensions"], "skills": ["./skills"], "prompts": ["./prompts"], "themes": ["./themes"] }}パスはパッケージルートからの相対パス。配列は glob パターンと !exclusions をサポート。
ギャラリーメタデータ
Section titled “ギャラリーメタデータ”パッケージギャラリー は pi-package タグのパッケージを表示します。プレビュー用に video または image フィールドを追加:
{ "name": "my-package", "keywords": ["pi-package"], "pi": { "extensions": ["./extensions"], "video": "https://example.com/demo.mp4", "image": "https://example.com/screenshot.png" }}- video:MP4 のみ。デスクトップでホバー時自動再生。クリックで全画面プレイヤー。
- image:PNG、JPEG、GIF、WebP。静的プレビューとして表示。
両方設定時は video が優先。
パッケージ構造
Section titled “パッケージ構造”慣例ディレクトリ
Section titled “慣例ディレクトリ”pi マニフェストがない場合、pi はこれらのディレクトリから自動発見:
extensions/は.tsと.jsを読み込みskills/はSKILL.mdフォルダを再帰検索し、トップレベル.mdをスキルとして読み込みprompts/は.mdを読み込みthemes/は.jsonを読み込み
サードパーティランタイム依存は package.json の dependencies に属します。拡張、スキル、プロンプトテンプレート、テーマを登録しない依存も dependencies に属します。pi が npm または git からパッケージをインストールすると npm install を実行するため、これらの依存は自動インストールされます。
Pi は拡張とスキル用にコアパッケージをバンドルします。以下をインポートする場合、peerDependencies に "*" 範囲でリストしバンドルしないでください:@earendil-works/pi-ai、@earendil-works/pi-agent-core、@earendil-works/pi-coding-agent、@earendil-works/pi-tui、typebox。
他の pi パッケージは tarball にバンドルする必要があります。dependencies と bundledDependencies に追加し、node_modules/ パスでリソースを参照。Pi は独立モジュールルートでパッケージを読み込むため、別インストールは衝突やモジュール共有しません。
例:
{ "dependencies": { "shitty-extensions": "^1.0.1" }, "bundledDependencies": ["shitty-extensions"], "pi": { "extensions": ["extensions", "node_modules/shitty-extensions/extensions"], "skills": ["skills", "node_modules/shitty-extensions/skills"] }}パッケージフィルタリング
Section titled “パッケージフィルタリング”設定のオブジェクト形式でパッケージの読み込み内容をフィルタ:
{ "packages": [ "npm:simple-pkg", { "source": "npm:my-package", "extensions": ["extensions/*.ts", "!extensions/legacy.ts"], "skills": [], "prompts": ["prompts/review.md"], "themes": ["+themes/legacy.json"] } ]}+path と -path はパッケージルートからの正確なパス。
- キーを省略するとそのタイプをすべて読み込み。
[]でそのタイプを一切読み込まない。!patternで一致を除外。+pathで正確なパスを強制包含。-pathで正確なパスを強制除外。- フィルターはマニフェストの上に重なり、既に許可された内容を絞り込み。
リソースの有効化と無効化
Section titled “リソースの有効化と無効化”pi config でインストール済みパッケージとローカルディレクトリから拡張、スキル、プロンプトテンプレート、テーマを有効/無効化。グローバル(~/.pi/agent)とプロジェクト(.pi/)スコープの両方で動作。
スコープと重複排除
Section titled “スコープと重複排除”パッケージはグローバルとプロジェクト設定の両方に現れます。同じパッケージが両方にある場合、プロジェクトエントリが優先。同一性は以下で決定:
- npm:パッケージ名
- git:ref なしのリポジトリ URL
- local:解決済み絶対パス