https://github.com/ppowo/pi-config
Personal pi agent configuration — prompts, extensions, skills, themes, and settings managed in version control with symlink-based bootstrap.
https://github.com/ppowo/pi-config
ai-coding-agent configuration developer-tools dotfiles nushell pi-mono
Last synced: 26 days ago
JSON representation
Personal pi agent configuration — prompts, extensions, skills, themes, and settings managed in version control with symlink-based bootstrap.
- Host: GitHub
- URL: https://github.com/ppowo/pi-config
- Owner: ppowo
- License: mit
- Created: 2026-02-13T20:40:18.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-25T21:50:02.000Z (about 1 month ago)
- Last Synced: 2026-05-25T23:23:37.169Z (about 1 month ago)
- Topics: ai-coding-agent, configuration, developer-tools, dotfiles, nushell, pi-mono
- Language: TypeScript
- Homepage:
- Size: 297 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-pi-coding-agent - ppowo-pi-config - based bootstrap. | | today | (Extensions)
README
# pi-config
My personal pi agent config repo.
It keeps prompts/extensions/skills/themes/reminders plus repo-managed pi config in version control and bootstraps them into `~/.pi/agent`.
## Prerequisites
- **Node.js** ≥ 22.19.0 — see [Installing Node.js](#installing-nodejs)
- **pi** — see [Installing pi](#installing-pi)
### Tooling
This config assumes a few CLI tools are available on `PATH` for the agent and its extensions to use:
- `difft` (`difftastic`)
- `fd`
- `jq`
- `rg` (`ripgrep`)
- `scc`
- `shellcheck`
- `ctags` (`universal-ctags`)
- `yq`
You can install these yourself, or use [`lum`](https://github.com/ppowo/lum) as a one-stop way to manage them:
```bash
lum tools sync
```
### Installing Node.js
**macOS** (Homebrew):
```bash
brew install node
```
Or install via [fnm](https://github.com/Schniz/fnm#installation) (recommended for managing multiple Node versions).
**Linux** — install via your package manager (`apt`, `dnf`, etc.) or [fnm](https://github.com/Schniz/fnm#installation).
Verify:
```bash
node --version # should be ≥ 22.19.0
```
### Installing pi
Install pi globally with npm:
```bash
npm install -g @earendil-works/pi-coding-agent
```
Verify:
```bash
pi --version
```
## Setup
From this repo root:
```bash
npm run setup
```
Theme defaults to light. You can also choose explicitly:
```bash
npm run setup-light
npm run setup-dark
```
No `npm install` needed — the bootstrap script uses only Node.js built-ins.
## What setup does
`npm run setup` runs `bootstrap.mjs`, which:
- symlinks into `~/.pi/agent`:
- `prompts/`
- `extensions/`
- `skills/`
- `themes/`
- `reminders/`
- `APPEND_SYSTEM.md`
- `models.json`
- merges overlay files into:
- `~/.pi/agent/settings.json` (from `settings.json`)
- `~/.pi/agent/verbosity.json` (from `verbosity.json`)
- `~/.pi/web-tools.json` (from `web-tools.json`)
- `~/.pi/agent/hashline-readmap/settings.json` (from `hashline-readmap-settings.json`)
## Repo layout
- `bootstrap.mjs` — setup/link/merge script
- `prompts/` — prompt files
- `extensions/` — pi extensions
- `skills/` — pi skills
- `themes/` — pi themes
- `reminders/` — global reminder definitions for `pi-system-reminders`
- `APPEND_SYSTEM.md` — extra system prompt text appended into pi
- `settings.json` — repo-managed pi settings overlay, including installed packages/extensions
- `verbosity.json` — repo-managed pi-verbosity-control overlay
- `models.json` — custom provider/model definitions symlinked into pi (for example OpenRouter via `OPENROUTER_API_KEY`)
The bootstrap script is plain Node.js, but pi extensions in `extensions/` can still stay TypeScript.
Reminder files tracked in `reminders/` become global reminders via `~/.pi/agent/reminders`; project-specific reminders for some other repo should still live in that repo's `.pi/reminders/` directory.
## Re-run / update
Re-run `npm run setup` any time you change files in this repo or set up a new machine.
`bootstrap.mjs` resolves the repo from the script location, so it works even if you invoke it outside the repo root.
## Note
`settings.json` and `verbosity.json` are applied as repo-managed overlays. Every leaf path present there is owned by this repo. Other local pi settings are preserved, and if a repo-managed key is later removed from either file, re-running setup removes it from the corresponding file in `~/.pi/agent/` too.