My opinionated setup for pi — a collection of extensions I use daily for coding sessions.
| Package | Type | What it does |
|---|---|---|
startup |
utility |
Reports loaded extensions and config on session start |
review |
command |
/review command — fans out specialist reviewers over a diff or codebase |
commit |
command |
Generates and confirms git commit messages |
wrap-up |
command |
End-of-session handover doc + resource cost prompt |
session-title |
system |
Auto-names terminal sessions from context |
prompt-suggestion |
system |
Ghost-text next-message prediction after each turn |
smart-compact |
system |
Smarter context compaction |
gh |
skill |
GitHub skills (PR, issues, etc.) |
context7 |
skill |
Library docs lookup via Context7 API |
exa |
skill |
Semantic web search via Exa API |
caffeinate |
utility |
macOS keep-awake helper for long-running sessions |
Several extensions call an LLM on a side task — ghost text, auto-titling,
branch slug generation. None of them hard-code a provider or model. Instead,
they all follow the same pattern: declare a tier (fast / normal /
heavy) and let you decide what that means in settings.json.
secondary is used for cross-model checking — the auto-review module (packages/review/auto-review) runs each reviewer lane against both primary and secondary and only surfaces findings both agree on. The modes extension invokes this after each implement loop.
The shared implementation lives in packages/_shared —
a model resolver, settings helpers, and a macOS caffeinate wrapper reused
across the extensions that need them.
→ Full background model docs — tiers, resolution order, cross-model checking, provider and gateway notes.
npm install
pi -e ./packages/startup # smoke-testpi install git:github.com/vegardx/pi-extensions