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

repo-anti-rot

v0.2.0

Published

Repository health & decay monitor — scans a codebase for committed secrets, vulnerable/abandoned dependencies, dead code, stale branches, aging TODOs and more, then scores it A–F. Emits terminal, JSON, Markdown or SARIF.

Readme

repo-anti-rot

A repository health & decay monitor, on the command line. It scans a codebase for the kinds of rot that accumulate silently — committed secrets (working tree and git history), vulnerable & abandoned dependencies, undocumented env vars, dead & commented-out code, stale branches, aging TODOs, disabled tests, Dockerfile issues and binary bloat — then scores it A–F and reports it as terminal output, JSON, Markdown or SARIF.

No API key is required. Registry-backed checks (OSV vulnerabilities, npm/PyPI/… freshness) degrade to a no-op offline instead of failing the scan.

Install

# one-off, no install
npx repo-anti-rot scan --path .

# or install globally
npm i -g repo-anti-rot
repo-anti-rot scan --path .

Requires Node.js 20+ and git on your PATH.

Usage

# scan the current checkout, human-readable output
repo-anti-rot scan --path . --format terminal

# write a JSON report
repo-anti-rot scan --path . --format json --output report.json

# write a SARIF 2.1.0 file for GitHub code scanning
repo-anti-rot scan --path . --format sarif --output repo-anti-rot.sarif

# Top findings to fix first (~an hour of focused work for the first few)
repo-anti-rot scan --path . --fix
repo-anti-rot scan --path . --fix --fix-limit 5

# scan many cloned repos under a directory
repo-anti-rot batch ./repos --out-dir ./reports

Formats: terminal (default), json, md, sarif.

What it checks

Committed secrets · insecure code (injection, disabled TLS, unsafe deserialisation) · vulnerable dependencies (OSV, across npm/PyPI/Go/crates.io/ RubyGems/Packagist) · outdated & abandoned & unused dependencies · undocumented env vars · dead code · commented-out code · leftover console/debugger · skipped/focused tests · Dockerfile hygiene · stale branches · aging TODOs · broken doc links · dead external links · bus-factor risk · repo bloat.

Findings are grouped into categories, each scored by severity (critical −10 · warning −3 · info −0.25), then rounded and clamped to a 0–100 score with an A–F grade. Tune it per-repo with an optional .repo-anti-rot.json (ignore globs, mute rules, custom weights) or inline // repo-anti-rot-ignore markers.

Programmatic use

The package is importable as well as executable — the scan API is the root export:

import { scanRepo, buildScanContext } from "repo-anti-rot"

const report = await scanRepo("/path/to/repo")
console.log(report.score, report.grade, report.issues.length)

repo-anti-rot/context resolves to the same module and stays supported.

Note that the CLI entry point is reachable only through the repo-anti-rot binary, never by import: it parses argv and exits on load, so importing it would run the command line rather than hand you an API.

More

This CLI is the engine behind the Repo Anti-Rot dashboard and GitHub Action. Full docs, the dashboard, SARIF upload, the health badge and score-drop webhooks:

👉 https://github.com/YpCIIIaK/repo-janitor

MIT © YpCIIIaK