@diegopetrucci/pi-contrarian

A read-only contrarian subagent extension for pi that stress-tests plans, designs, assumptions, and conclusions.

Packages

Package details

extension

Install @diegopetrucci/pi-contrarian from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@diegopetrucci/pi-contrarian
Package
@diegopetrucci/pi-contrarian
Version
0.1.4
Published
Jul 14, 2026
Downloads
498/mo · 38/wk
Author
diegopetrucci
License
MIT
Types
extension
Size
60.1 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

contrarian

A read-only contrarian subagent for pi.

It adds a contrarian tool that spins up a separate pi subprocess to stress-test plans, designs, assumptions, bug hypotheses, review conclusions, and product directions by steelmanning the strongest credible opposing case.

This is adapted from the TLH contrarian subagent prompt into a standalone pi extension.

What it does

  • creates an isolated read-only subprocess
  • prefers a strong model on the opposite model family/provider when available, then falls back to the best available model
  • requests high reasoning by default for reasoning models, then clamps to the model-supported thinking level
  • defaults to read,grep,find,ls, with optional non-mutating bash inspection
  • renders the contrarian response with model, thinking level, timing, and usage info
  • shows a live contrarian status line and widget while the subprocess is running

Install

Standalone npm package

pi install npm:@diegopetrucci/pi-contrarian

Collection package

pi install npm:@diegopetrucci/pi-extensions

GitHub package

pi install git:github.com/diegopetrucci/pi-extensions

Then reload pi:

/reload

Usage

Ask pi normally, for example:

  • Use the contrarian to stress-test this refactor plan.
  • Ask contrarian for the strongest opposing case before we commit to this design.
  • Have contrarian review my bug hypothesis and identify what evidence could disprove it.

The main agent can call the tool directly.

User defaults

Use /contrarian to set persisted defaults that apply to future contrarian tool calls, including calls the agent launches automatically without per-call overrides.

/contrarian status
/contrarian model anthropic/claude-opus-4-8
/contrarian thinking high
/contrarian thinking auto
/contrarian clear model
/contrarian clear thinking
/contrarian clear

Use /contrarian-model inside pi to see what it would pick right now.

Tool-call parameters still win over these defaults. auto clears the configured default and restores the built-in selection behavior. Preferences are saved under pi's agent directory in extensions/contrarian.json.

Tool parameters

  • task - required prompt for the contrarian
  • includeBash - optional, adds bash for non-mutating inspection
  • model - optional explicit model override; falls back to the /contrarian model default, then auto-selection
  • thinkingLevel - optional reasoning/thinking override; falls back to the /contrarian thinking default, then built-in defaults
  • cwd - optional working directory override

Notes

  • The contrarian is intentionally read-only.
  • It never implements fixes or produces patches.
  • Its output separates confirmed objections, plausible concerns, and unresolved unknowns.
  • It is best for adversarial review before committing to a plan, design, or conclusion.