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 found1โ problems found (useful for CI)2โ error reading the manifest
What's in v0.1
- JavaScript / npm support (reads
package.json, querieshttps://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
statusofdead,deprecated, orstale - A
reasonexplaining the verdict - A list of at least one
alternativepackage - A public
evidenceURL (maintainer announcement, deprecation notice, archived repo, or registry flag) verified_byandverified_datefields
PRs missing any of these will be rejected automatically. See CONTRIBUTING.md for full rules.
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4db43ba91d70f5395bce365416c68de3072906cd47117cbb2f821bc9a1b13e3
|
|
| MD5 |
a565e870886ef72b0b82638a2aaba53a
|
|
| BLAKE2b-256 |
09e9aecccde453ebe29c34a2152d057bc3dc4f3ba29928d6cff65cd189f68d27
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86c52da9f71e8390297e251e49336e6a863f79c99dd7060ea9f5a7d1eaa84cfe
|
|
| MD5 |
a12530506220f059cb54a899fd0db75e
|
|
| BLAKE2b-256 |
5bfc3a3166d4f70080bbe9701312aa57d2fa924799aea34b8a841d303b6cbe2c
|