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

snubber

v0.1.0

Published

Keeps settled things settled in a repository worked on with agents.

Readme

snubber

Keeps settled things settled in a repository worked on with agents.

A project accumulates decisions faster than it accumulates ways to keep them. snubber gives a repository a record: Decisions, the Evidence behind them, and the Work they gate, written as Markdown files that live and travel with the code they govern. The snubber CLI checks the record against the tree and fails when the two disagree — a settled thing quietly unsettled is a red, not a surprise three months later.

The format is the point; the tool enforces it. The format's contract is spec/format.json, which travels with each repository as its carried spec, and its prose is spec/v0.md. Below 1.0.0 the format is not stable — a minor bump may fail an existing conforming record.

Use

Requires Node >= 22.18 and a git repository — the repository is what git reports present and not ignored, so no git is an error, not a fallback.

npx snubber init            # seed record/ in the current repository
npx snubber init --context  # also seed record/context.md, red until filled
npx snubber check           # 0 clean, 1 violations, 2 the tool could not run
npx snubber check --rule M-15
npx snubber board           # the computed view of the record's state
npx snubber rules           # every rule the checker implements

The exit code is the whole external contract: 0 clean, 1 violations, 2 a tool error. Every error names what was not understood and the way out.

The GitHub Action

action.yml runs the check on a pull request and posts the board to the step summary:

on: pull_request

jobs:
  record:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: snubber-dev/[email protected]

This repository's own record

This repository is checked by the tool it ships — record/ holds its decisions, and CI runs the same action a consumer would. Two things are deliberate and worth knowing before reading. The record currently exercises one artifact type of three: decisions are filed, Evidence and Work items come as the project accrues them, and the board reports record/evidence/** as a gated Scope — that is the ruled behaviour, not a fault. And the published npm package ships the checker and the spec (dist/, spec/), never this record: a record travels with its repository, not with the tool.

Development

pnpm install
node test/run.ts   # the battery
pnpm run build     # tsc, emits dist/

MIT — see LICENSE.