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

pf2e-primer

v0.1.0

Published

A hands-on introduction to Pathfinder 2e for players who already know tabletop RPGs — the three pillars of play, with live demos (single self-contained HTML).

Readme

PF2e Primer

An interactive introduction to Pathfinder 2e (Remaster) for players who have already played tabletop RPGs and just need to know what this one does differently. Six tabs, a dozen live demos, and every rule it teaches is demonstrated with real dice against real numbers rather than described.

Single self-contained dist/index.html — no framework, no build step to use it, nothing sent anywhere. Text the file to a player, host it, or install it as an app.

What it covers

The three pillars you already know, mapped onto the three modes of play Pathfinder actually uses:

| Tab | Pillar | Mode | The demo | |-----|--------|------|----------| | Start | — | — | Degrees of success. Roll any of the pregens' checks against any DC and watch the four outcomes resolve, with the arithmetic and the natural-20 nudge spelled out. Roll twenty at once to see how often criticals actually happen. | | Fight | Combat | Encounter | Turn builder. Spend three actions from a real palette, then run them: multiple attack penalty stacking up, a critical hit doubling damage, and the target's AC visibly dropping as it becomes frightened and prone. | | | | | Going down. Take a character to 0 hit points and try to get her back — dying, recovery flat checks, wounded, and spending hero points to cheat death. | | Explore | Exploration | Exploration | Activity board. Assign exploration activities and marching order, see which checks the GM rolls in secret, and what it costs you when nobody declares Search. | | Talk | Social | all of them | Attitude ladder. Work an NPC from indifferent to helpful with Make an Impression, then find out what Coerce costs you even when it works. | | Ashore | — | Downtime | A week in port. Earn Income, Craft, Retrain, Long-Term Rest — and what the GM still has to decide for each. | | Cards | — | — | The quick card, a jargon glossary, and a search box over every bundled condition and action. |

Two ways to use it

  • Player mode (default) — self-paced. Send the link to your players before session one; it explains itself with no GM present, and remembers which tabs they've read.
  • GM mode — the GM button in the header adds an At the table block to the bottom of every tab: what to run, in what order, what to say, and which moments to let land. Same file, same link.

Run it

python3 tools/build.py        # assemble dist/index.html
# then either:
open dist/index.html          # straight from the file, fully offline
npx pf2e-primer               # serve at http://localhost:8726 and open the browser

Where the rules text comes from

Every quoted condition and action description — 43 conditions and 101 actions — is Paizo's own text, generated from the open-source Foundry VTT pf2e system data, so the primer can't drift from the book as it gets edited:

git clone --depth 1 --filter=blob:none --sparse https://github.com/foundryvtt/pf2e.git pf2e-data
cd pf2e-data && git sparse-checkout set packs/pf2e/conditions packs/pf2e/actions && cd ..
python3 tools/build_reference.py --src pf2e-data/packs/pf2e --out data/reference.generated.js

The explanations around that text are ours. Two things are deliberately not included, because getting them subtly wrong would be worse than not having them: the Earn Income table (it depends on a task level the GM assigns, and the app says so) and the DC-by-level table (the app teaches simple DCs and the +10 rule instead).

One rule is applied by inference rather than quotation: spending all your hero points to escape death removes the dying condition, and the app then applies wounded 1, following the dying condition's own "any time you lose the dying condition" clause. If your table reads that differently, it's one line in dyingHero().

Re-flavouring it

The examples are nautical because that's the campaign they were written for. Everything flavour-related is five strings at the top of src/content.js:

const FLAVOR = { ship: "Salt Mercy", port: "Bracklewater", npc: "Quartermaster Bel", … };

Change those and rebuild, and every example in the app follows. The two pregens (PREGENS), the teaching NPC (FOE) and the whole chapter structure (CHAPTERS) are in the same file — src/engine.js only renders what's there.

Tests

npm install                   # jsdom
node tools/test.mjs

137 assertions over the built file. They cover the resolution rules the app teaches (degrees of success including both natural-20 and natural-1 nudges, the multiple attack penalty, dying and recovery, attitude shifts), re-derive every hand-authored number on both pregens from ability + rank + level, and check that every action and condition the content cites actually exists in the bundled data.

The other two tools

Licensing

Application code is MIT (see LICENSE). Bundled Pathfinder condition and action text is Paizo content under the ORC and OGL licenses — see notice.md. The pregenerated characters, the teaching NPC and the explanatory prose are original. This is an unofficial fan tool, not affiliated with Paizo.