Skip to main content

Dependency health scanner: find dead, deprecated, and abandoned packages in your project.

Project description

stack-rot

A dependency health scanner that finds dead, deprecated, and abandoned packages in your project โ€” and tells you what to migrate to.

๐Ÿ“ฆ stack-rot v0.1 โ€” scanning ./package.json

๐Ÿชฆ ABANDONED (1 package):
  โŒ moment 2.24.0
     โ†’ In maintenance mode since 2020. Maintainers officially recommend alternatives.
     โ†’ Migrate to: dayjs, date-fns, luxon
     โ†’ Evidence: https://momentjs.com/docs/#/-project-status/

โš ๏ธ  DEPRECATED (2 packages):
  โŒ brute-knex 4.0.1
     โ†’ Package no longer supported.
  โŒ path-match 1.2.4
     โ†’ Archived and no longer maintained.

โœ… HEALTHY (207 packages)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
๐Ÿ“Š Project health: 9.9/10
   207/210 dependencies are healthy (2 unknown packages excluded).

The example above is a real scan of TryGhost/Ghost.

What it does

stack-rot reads your package.json and reports which dependencies are:

  • Abandoned โ€” community has moved away, even if the registry doesn't say so (e.g. moment)
  • Deprecated โ€” officially marked deprecated on npm or by maintainers (e.g. request, node-sass)
  • Healthy โ€” actively maintained

For each problematic dependency, it tells you:

  • Why it's flagged
  • A link to public evidence (maintainer announcement, deprecation notice, archived repo)
  • Recommended alternatives

Why this exists

Existing tools handle adjacent problems:

Tool Primary focus
npm outdated Newer versions available
npm audit Security vulnerabilities
Dependabot Automated version bumps
Snyk Security vulnerabilities + license issues
Socket.dev Supply-chain risk
stack-rot Community migration intelligence (open-source, free, CLI)

None of those answer the question developers actually ask when they inherit an old codebase: which of these packages should I stop using?

stack-rot answers that. It combines a hand-curated database of known-abandoned packages with the npm registry's deprecation flag to surface problems no other tool catches.

Install

pip install stack-rot

Requires Python 3.10 or newer.

Usage

Scan the package.json in the current directory:

stack-rot

Scan a specific file:

stack-rot path/to/package.json

Scan without hitting the npm registry (uses only the curated database):

stack-rot --no-network

Exit codes:

  • 0 โ€” no abandoned or deprecated dependencies found
  • 1 โ€” problems found (useful for CI)
  • 2 โ€” error reading the manifest

What's in v0.1

  • JavaScript / npm support (reads package.json, queries https://registry.npmjs.org)
  • 8 hand-verified entries in the curated database, each with an evidence URL
  • Live npm deprecation detection for every other package on the registry

Roadmap

  • v0.2 โ€” Python (requirements.txt, pyproject.toml)
  • v0.3 โ€” Automated abandonment signals (last-publish dates, repo activity)
  • v0.4 โ€” Go (go.mod)
  • v0.5 โ€” Rust (Cargo.toml)
  • v0.6 โ€” Community sentiment data from public sources
  • v0.7 โ€” JSON/HTML reports, CI mode, GitHub Action
  • v0.8 โ€” Safe codemods for trivial migrations
  • v0.9 โ€” Web dashboard and README badges
  • v1.0 โ€” Stability and sustainability

Contributing

The curated database (src/stack_rot/rot-db.json) grows by community contribution. Every new entry requires:

  • A status of dead, deprecated, or stale
  • A reason explaining the verdict
  • A list of at least one alternative package
  • A public evidence URL (maintainer announcement, deprecation notice, archived repo, or registry flag)
  • verified_by and verified_date fields

PRs missing any of these will be rejected automatically. See CONTRIBUTING.md for full rules.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stack_rot-0.1.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stack_rot-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file stack_rot-0.1.0.tar.gz.

File metadata

  • Download URL: stack_rot-0.1.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stack_rot-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f4db43ba91d70f5395bce365416c68de3072906cd47117cbb2f821bc9a1b13e3
MD5 a565e870886ef72b0b82638a2aaba53a
BLAKE2b-256 09e9aecccde453ebe29c34a2152d057bc3dc4f3ba29928d6cff65cd189f68d27

See more details on using hashes here.

File details

Details for the file stack_rot-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: stack_rot-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stack_rot-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86c52da9f71e8390297e251e49336e6a863f79c99dd7060ea9f5a7d1eaa84cfe
MD5 a12530506220f059cb54a899fd0db75e
BLAKE2b-256 5bfc3a3166d4f70080bbe9701312aa57d2fa924799aea34b8a841d303b6cbe2c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page