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

@extenshi/guard

v0.1.2

Published

Scan, audit and clean up the browser extensions installed on your machine

Readme

@extenshi/guard

See, check and clean up the browser extensions installed on your machine.

npx @extenshi/guard          # same as `list` — show what's installed
npx @extenshi/guard scan     # guided: check them with extenshi.io and clean up

Every example below uses npx @extenshi/guard — the tool is meant to be run through npx and nothing installs an extenshi-guard binary onto your PATH.

@extenshi/guard reads the on-disk profile files of the Chromium-family browsers (Chrome, Edge, Brave, Vivaldi, Opera, Arc, Yandex, Chromium) and Firefox — across every profile it can find, including Snap and Flatpak installs.

Two commands, in order

1. list — see what's installed (local, no account, no network)

npx @extenshi/guard list                    # every extension, grouped by browser + profile
npx @extenshi/guard list --json             # machine-readable JSON to stdout
npx @extenshi/guard list --browser chrome   # limit to one browser (repeatable)
npx @extenshi/guard list --include-components  # also list built-in/component extensions
npx @extenshi/guard list --verbose          # also print warnings (parse failures, etc.)

Prints name, version, id, install origin and enabled/disabled state per extension. Nothing is sent anywhere.

2. scan — check with extenshi.io and clean up (guided)

npx @extenshi/guard login                   # one-time: opens your browser to sign in / sign up
npx @extenshi/guard scan                    # the guided flow (see below)
npx @extenshi/guard scan --rescan           # force a fresh analysis (ignore the cached report)
npx @extenshi/guard scan --yes              # non-interactive: consent + apply all (for scripts)
npx @extenshi/guard scan --json             # print the report as JSON (never applies)

scan walks you through:

  1. Consent — before anything is shared it explains that your extension list is stored on your extenshi.io profile, used in aggregate for extension-activity statistics, and revocable in your dojo settings. Declining sends nothing.
  2. Analysis — sends a privacy-minimal inventory and shows, per extension, a risk score and a recommendation: remove, disable, or leave as is.
  3. Clean up — an interactive checkbox picker lets you choose what to remove or disable. Changes are applied via the browser's own enterprise-policy mechanism and take effect after you restart the browser.

The report is cached (~/.extenshi/guard-report.json), so re-running on an unchanged machine reuses it without spending another analysis, and re-offers anything you haven't applied yet. A reused report is dated by when it was analyzed and marked (cached) in its header — it is not a fresh verdict on today's state. Pass --rescan for that (--json output carries the same information as a cachedAt field).

Signing in

npx @extenshi/guard login          # opens your browser; sign in or create a free account
npx @extenshi/guard login --paste  # no browser: paste an API key instead

login opens extenshi.io in your browser and shows a short pairing code in the terminal. Sign in — or create an account right there, which is the whole point of doing this in a browser — check that the code on the page matches the one in your terminal, and approve. The terminal picks the key up by itself and stores it in ~/.extenshi/config.json.

If your browser can't be opened (SSH, a container, a headless box) the URL is printed instead: open it anywhere, approve, and the waiting terminal still completes. In CI, skip the login entirely and set EXTENSHI_API_KEY from your secrets.

Manage what you applied

npx @extenshi/guard status   # show which extensions guard has removed/disabled
npx @extenshi/guard undo     # revert everything guard enforced, restoring the prior state

Every remove/disable is fully reversible with undo.

Browser ids: chrome, edge, brave, vivaldi, opera, arc, yandex, chromium, firefox.

Privacy

list never touches the network. scan sends, per extension, ONLY: store id, store, version, enabled state, install origin, install time and update URL — never extension names, descriptions, local paths, permissions or any browsing data. The exact payload and a consent notice are shown before anything is sent, and nothing is submitted without your explicit agreement (--yes opts in for scripts). You can revoke consent and delete the stored list any time in your dojo settings (dojo.extenshi.io → profile).

Your API key lives in ~/.extenshi/config.json (shared with @extenshi/cli). Every account includes some free analyses; extra scan-credit packs are available at https://dojo.extenshi.io/billing.