vibecoded pi-packages
- TypeScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| packages | ||
| skills/subagent | ||
| .gitignore | ||
| .oxfmtrc.json | ||
| .oxlintrc.json | ||
| AGENTS.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| prek.toml | ||
| README.md | ||
pi-packages
Personal Pi packages monorepo.
Packages
| Package | Description |
|---|---|
pi-sandbox |
Runs bash in an OS sandbox, no runtime prompts |
pi-web-tools |
Fetch web pages and search the web as Pi tools |
pi-permission-gate |
Checks every tool call against permission rules |
pi-permission-auto-review |
Lets a model answer permission questions |
pi-caffeinate |
Keeps the computer awake while the agent is running |
pi-auto-name |
Names the session after the first submitted prompt |
The repository root is itself a pi package: one install loads the extensions of
every package under packages/, plus the subagent skill
(running helper agents in parallel with headless pi -p).
pi's git installer runs npm install only at the repository root, so the
runtime dependencies of packages/* are mirrored in the root package.json —
dependencies declared in a workspace alone would never be installed.
pi install git:git.karolak.fr/nicolas/pi-packages
Or add to ~/.pi/agent/settings.json:
{
"packages": [
"git:git.karolak.fr/nicolas/pi-packages"
]
}
Loading individual extensions
A project can load only some extensions by narrowing the entry in
.pi/settings.json:
{
"packages": [
{
"source": "git:git.karolak.fr/nicolas/pi-packages",
"extensions": ["packages/pi-permission-gate/index.ts"]
}
]
}
Filters also accept !path to exclude an extension and [] to load none.
pi config toggles extensions one by one, interactively.
Development
pnpm install
pnpm check # TypeScript
pnpm test # vitest
Packages are wired via pnpm workspaces (packages/*).