lockfile-doctor
Part of shipsafe — offline deploy-safety skills. Every script is stdlib-only Python 3.8+; nothing leaves the machine.
python3 scripts/lockfile_doctor.py <project_root> [--json]
Checks: multiple coexisting lockfiles (platform picks one, devs use another), missing lockfile entirely, packageManager field disagreeing with the committed lockfile, missing engines.node, and fragile dependency specs — git branches, file: paths that won't exist on the build machine, and */latest wildcards.
The mental model to give the user: a deploy is reproducible only if the same package manager, same Node version, and same lockfile produce the same node_modules everywhere. Each finding is one of those three legs broken.
When MULTIPLE_LOCKFILES fires, help the user pick ONE manager (whichever the team actually uses), delete the other lockfiles, and gitignore them so they don't return.
Exit codes: 0 clean, 1 findings.
All paths below are relative to this skill's directory (lockfile-doctor/).