Repository navigation
fix(skills): stop three skills claiming data NCM doesn't return - #80
Merged
Merged
Conversation
ns-replace-package listed obfuscation, author risk and malware as NCM module risks. NCM has none of those: its only security check is vulnerability. The example list now names real risk checks. Its maintenance signal, and ns-upgrade-package's latest version, came from NCM, whose latest can trail npm by weeks; both now come from npm. ns-node-upgrade checked "target-Node incompatibilities if NCM reports them". NCM has no such data. The step now reads the uses-deprecated-node-apis score from allScores, where it keeps its name, compares engines.node with the target, and says neither is a full compatibility check. Versions come from the lockfile: a range makes npm view print every matching version, and a workspace: spec fails the whole getPackageVersions call.
brycebaril
approved these changes
Oct 26, 2026
brycebaril
left a comment
Contributor
There was a problem hiding this comment.
Thanks, Cesar. Checked at 96604bc:
- ns-replace-package lists only risk checks NCM has. It takes the latest version and its age from npm.
time[<version>]is the right date, since a deprecation or a backport also movestime.modified. - ns-upgrade-package reads the latest version from npm's
latestdist-tag, not from NCM'slatest, which can trail it. - ns-node-upgrade reads
uses-deprecated-node-apisfromallScores, where the check keeps its name. It takes versions from the lockfile and leaves out the specs that would fail the whole call. It also says neither signal is a full compatibility check.
CI passes on Linux, macOS and Windows. It targets main, like #76, so the released plugin gets the fix now. nsolid-console-7 is already a commit behind main, so it should take main before its next release.
Approving.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three skills claimed NCM data that NCM doesn't return.
vulnerability. Its risk checks are deprecated, install scripts, gyp file, eval, dynamic require, strict mode, unsafe regexps, deprecated Node APIs, and four async and callback checks. The example now names real ones. The maintenance signal ("latest version age") came from NCM; it now comes from npm (npm view <pkg> version, thennpm view <pkg> 'time[<version>]').getPackageQualityreturns the latest version. A call for the installed version doesn't, and NCM'slatestcan trail npm by weeks: today it resolves express to 5.2.1, while npm's latest is 5.3.0. The skill now gets it from the npm registry (npm view <pkg> version).uses-deprecated-node-apisscore, so the step now reads it fromallScores(failing checks land inmoduleRiskswithout their name), compares each dependency'sengines.nodewith the target, and says neither is a full compatibility check. Versions come from the lockfile: apackage.jsonrange makesnpm view <pkg>@<range> enginesprint every matching version, and aworkspace:spec fails the wholegetPackageVersionscall.Checks
pnpm plugin:check: OK.pnpm lint,pnpm typecheck,pnpm test: pass.