@diegopetrucci/pi-contrarian

extensionmaintained

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

by · v0.1.9 · published 4d ago

$ pi install npm:@diegopetrucci/pi-contrarian
downloads/mo
987
stars
45
last push
2d ago
open issues
3

Signals

license: MITtestspi manifest: missinginstall size: —deps: 0peer deps: 0

Download trend

No downloads in the last 12 weeks.

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

When the current Pi session has a non-empty model scope, Contrarian limits automatic model selection and automatic fallbacks to that scope. An explicit tool or /contrarian model override remains authoritative even when it is outside the session scope.

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.