pi-pair-programmer
v0.1.7
Published
A TypeScript extension for Pi and OMP
Downloads
1,427
Readme
🧑💻 Pi Pair Programmer
Background code review for Pi and OMP.
Why · Install · Use · How it works

🤔 Why
Coding with AI adds entropy to a codebase. Agents optimize for local correctness instead of thinking about the global system. They repeat code and reinvent the wheel.
Turn-by-turn static analysis is necessary but not sufficient. Code review happens too late in the code production pipeline.
This extension lets you run multiple highly specialized reviewers, each focused on a specific concern, to catch issues static analysis cannot detect, as soon as code is generated. Without bloating the context window, thanks to a Jev-based filter that removes inherited and duplicate findings.
📦 Install
Install the published npm package.
pi install npm:pi-pair-programmeromp install pi-pair-programmerRestart Pi or OMP after installation to load the extension.
🔑 For the Jev filter, set your TypeSafe API key before starting Pi or OMP:
export TYPESAFE_API_KEY="your-api-key"[!NOTE] Without it, reviews still run, but only exact duplicate findings are filtered.
🧭 Use
Reviews are on by default. After each successful write or edit, reviewers run in the background. The coding agent must accept or reject each finding with a reason before continuing with other tools. Only accepted findings appear in your transcript.
| Command | Action |
| ------------------ | --------------------------------------------------------------------------------------------------- |
| /pair-programmer | Toggle reviews. |
| /pair-clear | Cancel reviews and clear all findings. |
| /pair-stats | View review activity, findings, tokens, and estimated costs on demand; missing usage stays unknown. |
The default reviewer uses your current model and asks: “Does it add entropy?” To change the prompt, model, or files reviewed, create pair-programmer.reviewers.json in your working directory:
{
"reviewers": [
{
"model": "current",
"prompt": "Does this code add entropy?",
"include": ["**/*.dart"],
"exclude": ["**/*.g.dart", "**/*_test.dart"]
},
{
"model": "current",
"prompt": "Does this code reinvent the wheel instead of reusing code or a library?",
"include": ["**/*.dart"],
"exclude": ["**/*.g.dart", "**/*_test.dart"]
}
]
}Use current or a provider/model identifier. File patterns are relative to your working directory; exclusions take precedence. Add entries for more reviewers.
[!TIP] Diagnostics stay in files, never the terminal: OMP uses its native logs; Pi uses
~/.pi/agent/logs/pair-programmer/(or$PI_CODING_AGENT_DIR/logs/pair-programmer/).
🔍 How it works
Released under the MIT License · Contributing · Security
⬆ Back to top
