npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

demiurge-pyrrho

v0.1.1

Published

Every AI finds you an insight. PYRRHO tells you which ones the data cannot support.

Readme

Pyrrho of Elis raising a hand of refusal as unsupported conclusions fade out

PYRRHO

Every AI finds you an insight. PYRRHO tells you which ones the data cannot support.

Suspends judgment where the evidence stops.

License: MIT node tests

Every AI finds you an insight. PYRRHO tells you which ones the data cannot support.

I am Pyrrho of Elis. I taught epoche: suspend judgment where the evidence stops. I am not remembered for what I concluded. That is the point.

Point any model at a spreadsheet and it hands you confident bullet points. It finds a trend in twelve rows. It calls a correlation a cause. I do the other job. I say exactly what the numbers carry, then I name, precisely, everything they do not.

Before and after

Your AI, handed a dashboard:

Conversion is up 25 percent since the redesign. The redesign worked. Roll it out everywhere.

PYRRHO, handed the same numbers:

$ pyrrho claim "The redesign caused conversion to rise" --n 12 --self-selected \
    --p1 0.04 --n1 200 --p2 0.05 --n2 200

verdict: SUSPEND  (the data does not carry this claim)
claim: "The redesign caused conversion to rise"

DO NOT CONCLUDE:
  [blocking] The claim asserts cause, but the data is observational. Correlation is not causation.
      rule it out: Run a controlled experiment, or name and measure the confounder.
  [blocking] n = 12. Below roughly 30 observations the estimate is dominated by noise.
      rule it out: Collect more observations, or report the confidence interval.
  [blocking] The sample selected itself, so it does not represent the population you want to speak about.
      rule it out: Sample at random from the target population, or restate the claim as being about volunteers.
  [blocking] The observed difference of 1.00 percentage points sits inside the noise band of
             plus or minus 3.86 points. It is not distinguishable from chance.
      rule it out: Collect enough observations to shrink the interval, or report no difference.

That "25 percent" was one point of movement inside a four point noise band, on twelve self-selected users, described with a verb that claims causation. Four independent reasons the claim is worthless. Nobody else was going to tell you.

The five laws

  1. Suspend where the evidence stops. The default verdict is SUSPEND. A claim earns SUPPORTED; it is never assumed.
  2. Every refusal is arithmetic or a named bias. No vibes. "That difference sits inside a plus or minus 2.8 point band" beats "I'm not sure about that."
  3. Name what would rule it out. Every refusal carries the specific test that would settle it. Refusing without a path forward is sulking.
  4. Data is observational until proven otherwise. You did not run an experiment unless you say you did.
  5. Report the counts when the rate is theatre. Fewer than five in either cell, and a percentage is a lie with a decimal point.

And the oldest smell in the trade: a result that comes back too clean is itself a finding. A perfect trend, an all-green benchmark, a distribution with no outliers: each is suspect until you can explain why it is real. Clean earns scrutiny before it earns belief.

The EPOCHE engine

Three deterministic checks, composed:

  • The sentence. Causal language on observational data. Absolute language (always, never, proves). Extrapolation with no stated model.
  • The context. A ten entry bias catalog that screens what you described: small sample, rate not estimable, correlation as causation, confounding, survivorship, selection, multiple comparisons, outlier as signal, data quality, window shorter than the cycle. Each entry detects itself and knows what would rule it out.
  • The arithmetic. Confidence intervals, whether a claimed difference is distinguishable from noise, and how many observations you would actually need.

Any blocking finding, and the verdict is SUSPEND. That is a return value, not a suggestion.

It also writes SQL

PYRRHO writes production SQL, states its ASSUMPTIONS first (NULLs, duplicates, ties, empty groups, time zones, and the grain of one output row, which is where most silently wrong queries go wrong), then walks you through it. The linter then catches: UPDATE or DELETE with no WHERE, implicit cross joins, the NOT IN null trap, fan-out double counting from an aggregate over a one-to-many join, unbounded windows with no PARTITION BY, non-sargable predicates, leading wildcards, unbounded reads. A blocking finding means the query does not ship.

Install for your agent

From npm: npm install -g demiurge-pyrrho, then pyrrho setup Or without installing: npx demiurge-pyrrho claim "<claim>". (Skill copy uses the source clone below.)

PowerShell:

git clone https://github.com/eragonlonelyboy-lab/pyrrho; cd pyrrho; node bin/pyrrho.js setup

bash:

git clone https://github.com/eragonlonelyboy-lab/pyrrho && cd pyrrho && node bin/pyrrho.js setup

Copy the folder into ~/.claude/skills/pyrrho/ and invoke with /pyrrho. Zero config. The CLI is the deterministic half:

pyrrho claim "<claim>" [--n N] [--self-selected] [--experiment]
pyrrho screen | pyrrho ci --p 0.04 --n 200 | pyrrho diff --p1 .04 --n1 200 --p2 .05 --n2 200
pyrrho n-for --moe 0.01 | pyrrho sql <file> | pyrrho catalog | pyrrho setup

Not for you if

  • You want a data scientist. PYRRHO does no modelling, no feature engineering, no pipelines. That space is commoditised and crowded. Its only product is refusal.
  • You want an insight machine. There are hundreds. This is the thing that stands behind them and says no.
  • You want to be told your number is good.

FAQ

"Isn't this just a statistics library?" A statistics library computes what you ask. I refuse what you were about to say. The arithmetic is the smaller half.

"Ten biases is not all the biases." It is not. It is ten that detect themselves from a context you can actually describe. See HONEST-NUMBERS, where I say exactly what I cannot see.

"What if I really did run an experiment?" Then pass --experiment and I will stop calling your causal claim an overreach. I default to observational because you did not run one.

"Will it just refuse everything?" 4% vs 8% on n=5000 returns SUPPORTED, blocking count zero. The bar is arithmetic, not mood.

The family

PYRRHO produces the analysis. ZOILUS reviews it as an artifact. ATHENA decides what to do about it. I only report what the numbers do and do not say.

HORKOS proves you ran it. MONETA budgets it. CHIRON turns a refusal you keep hitting into a permanent rule.

The working standard the whole house runs on is public too: ARETE, five discipline gates any model can run. PYRRHO is its treat-good-news-as-suspect rule, with arithmetic behind it.

Verify me

node benchmarks/run.js   # 34/34

The tests prove the arithmetic and the linters. They cannot prove that any given reading of data is wise. I say so in HONEST-NUMBERS.

If PYRRHO stops you from shipping one wrong number, star it. If it does not, do not.

MIT. Copyright (c) 2026 Lee Jun Ying. Built by Eragon Lee.

Named for Pyrrho of Elis, who suspended judgment where the evidence stopped.