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

pi-repro

v0.3.0

Published

Reproduce the quantitative results of an academic paper — ingest, gap-analyze the code, plan, reproduce each claim, and report what does and doesn't replicate. A pi extension.

Readme

Trust, but verify — one claim at a time.

A pi extension with one job: reproduce the quantitative results of an academic paper, and tell you honestly which ones survive contact with reality.

Install · Usage · How it works

A paper lands on your desk claiming 94.2% accuracy. There's no code — or there's a repo that's missing the training script, hardcodes a path to someone's laptop, and references a config file that isn't in the commit. You need to know: does the number hold? Today that means days of archaeology — guessing at hyperparameters, reconstructing the data pipeline from a figure caption, and slowly losing track of which of the paper's ten claims you've actually checked.

pi-repro does that archaeology for you. It treats the paper as the source of truth and the code as a lead to follow, not a thing to trust. It reconstructs what's missing, runs what it can, and refuses to fudge the difference between what the paper said and what your machine did.

You hand it a paper (link, PDF, arXiv id, or DOI) and — optionally — a reference GitHub repo. It reads the paper, pulls out every number you care about as a tracked claim, audits the shipped code for the gaps it always has, plans the reproduction, runs each experiment, and files a report on what replicated, what didn't, and what flat-out refused to run.

It follows the paper's method and reports whatever falls out, even when that's an inconvenient truth. It will never nudge a result toward the published value by quietly leaving the method behind — because the gap between "the paper says 94.2%" and "I got 94.2% on my machine" is where science actually happens.

Why you'd want this

  • Researchers — before you build on someone's result, confirm the foundation holds. Reproduce the baseline you're about to beat so your delta is real and not a difference in setup.
  • ML engineers — vet a flashy SOTA claim against your own hardware and data pipeline before you bet a sprint on integrating it.
  • Open-source contributors — reproduce a paper's results to back a from-scratch implementation, file an issue when the published code doesn't match the paper, or hand maintainers an auditable report instead of a vague "I couldn't get your numbers."
  • Peer reviewers & area chairs — turn "the authors claim X" into "I ran it and got X (or didn't)", with a paper trail you can attach.

Install

pi install npm:pi-repro
# or, from a local checkout:
pi install file:/path/to/pi-repro

Usage

In a project where you want to do the work:

reproduce https://arxiv.org/abs/XXXX.XXXXX  (optionally: repo https://github.com/...)

The repro-create skill drives everything from there: ingest, gap analysis, plan, run, report. All state lands in a single .repro/ folder at the project root, so the work survives restarts and context resets — pick up exactly where you left off, and hand the folder to anyone who wants to check your work.

How it works

ingest paper ─► extract claims (claims.json) ─► gap-analyze repo (gap.md) ─► plan (plan.md)
      │
      ▼
 for each claim:  run_reproduction ─► compare reproduced vs reported ─► log_result (status)
      │            └─ optional bounded per-claim debug loop if blocked/mismatch
      ▼
 report.md   (per claim: ✓ reproduced / ~ partial / ✗ mismatch / ⛔ blocked / · pending)

The whole thing is verification, not optimization. When a claim doesn't reproduce, that's a finding — not a bug to paper over.

When gap-analysis finds that the method already ships as a complete, installable package, pi-repro stops and asks you: use the existing package (validates the result fast) or reimplement from scratch (a stronger test of whether the paper is reproducible from its description). Your choice is recorded in config.json.

Tools

| Tool | What it does | |------|--------------| | init_reproduction | Scaffold the .repro/ session (once). Idempotent. | | register_claim | Record/update one reproducible quantitative claim from the paper. | | run_reproduction | Run a command (bash -lc) and capture output. Doesn't judge. | | log_result | Record a reproduced value and classify it vs the reported value. | | reproduction_status | Show all claims, reported vs reproduced, and totals. |

Skills

| Skill | Role | |-------|------| | repro-create | Orchestrator / spine — the entry point. | | repro-ingest | Paper → paper.md + registered claims. | | repro-gap-analysis | Reference repo → gap.md (implemented vs missing). | | repro-report | Claims + logs → report.md. |

The .repro/ session

All state lives in one folder at the root of the project being reproduced — human readable, version-controllable, and the single source of truth:

| File | Purpose | |------|---------| | config.json | name, paper source, repo, language, virtualenv, implementation mode, tolerance, loop budget | | paper.md | extracted summary, method, datasets, hyperparams, compute | | claims.json | structured claims — the source of truth for status | | gap.md | implemented vs missing/partial analysis of the reference repo | | plan.md | environment, data acquisition, per-claim approach and ordering | | log.jsonl | append-only run/result log | | report.md | the final reproduction report | | env/setup.sh | reproducible environment setup | | sources/ | downloaded paper artifacts / clone notes |

How claims are judged

log_result compares the reproduced value to the reported value using a relative tolerance (default 5%, configurable per-claim or per-session):

  • within tolerance → reproduced ()
  • beating the paper in the better directionreproduced ()
  • within 3× tolerance → partial (~)
  • further off → mismatch ()
  • couldn't run → blocked ()

No grade inflation: a number only counts as reproduced when the method that produced it is the paper's method.

Configuration

  • PI_REPRO_SHORTCUT — key for the fullscreen dashboard (default ctrl+r; set to none to disable).

Development

npm install
npm run typecheck   # tsc --noEmit
npm test            # node --experimental-strip-types --test tests/*.test.mjs

npm test requires a Node 22+ build with TypeScript stripping support (the same requirement pi has for loading .ts extensions). On a Node built without it the tests can be run by transpiling the modules first.

License

MIT