PkgRadar

Package evidence

[email protected]

Install-time lifecycle script: postinstall="node bin/postinstall-self-heal.cjs"

Trust signals

Why this verdict

PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.

Versions published
9
First published
Mar 2026
Publisher
henry.ly

Recommended action

Block this update

Static evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.

Block this release in CIcurl · GitHub Actions

Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.

curl -fsS https://pkgradar.com/gate/npm \
  -H "Authorization: Bearer $PKGRADAR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"specs":["[email protected]"],"fail_on":"high"}'

GitHub Actions step:

- name: PkgRadar gate
  run: |
    curl -fsS https://pkgradar.com/gate/npm \
      -H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{"specs":["[email protected]"],"fail_on":"high"}'
Publisherhenry.ly
Artifact bytes1,591,260
Previous version4.3.2
Published2026-06-04T09:09:08.269Z
SHA-256a3399bbfe487fbc0b338e17a7ddc7d916e32fde6cb15ea8aa364c61b3ccd9945

Why flagged

What the scanner saw

New Lifecycle Script Vs Previous: postinstall added in 4.4.0 vs 4.3.2: "node bin/postinstall-self-heal.cjs"

Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.

Availability ledger

available

high
Last checked
highRisk
45Score
4.4.0Version
Status history (1 event)
  1. newavailable · risk high · score 45 · status changed

Evidence

Static findings

2 static · 1 from release diff · showing high-signal first.

SeverityKindPathDetailPoints
highNew Lifecycle Script Vs Previouspackage.jsonpostinstall added in 4.4.0 vs 4.3.2: "node bin/postinstall-self-heal.cjs"40
Show all 3 findings (low-signal and informational)
SeverityKindPathDetailPoints
highNew Lifecycle Script Vs Previouspackage.jsonpostinstall added in 4.4.0 vs 4.3.2: "node bin/postinstall-self-heal.cjs"40
lowInstall-time lifecycle scriptpackage.jsonpostinstall="node bin/postinstall-self-heal.cjs"5
lowLarge Javascript Payloadpackage/dist/index.js4145914 bytes0

Manifest

Package metadata

Scripts31
  • buildbun build src/index.ts --outdir dist --target node --external @octokit/rest --external better-sqlite3 && node -e "const fs=require('fs'),f='dist/index.js',c=fs.readFileSync(f,'utf-8');fs.writeFileSync(f,c.replace(/^#!.*\n\/\/ @bun\n/,''))"
  • ci:localbash scripts/ci-local.sh
  • dashboard:devcd src/ui && bun install --silent && cd ../.. && bun run src/index.ts config ui --dev
  • devbun run src/index.ts
  • dev:all./scripts/dev-quick-start.sh all
  • dev:quick./scripts/dev-quick-start.sh
  • docs:generatebun run scripts/generate-cli-reference.ts
  • formatbiome format --write .
  • help:check-paritybun run scripts/check-help-parity.ts
  • install:hooks./.githooks/install.sh
  • lintbiome check .
  • lint:fixbiome check --fix .
  • lint:fix-unsafebiome check --fix --unsafe .
  • manifest:generatebun run scripts/generate-cli-manifest.ts
  • metricsbun run scripts/workflow-metrics.ts
  • postinstallnode bin/postinstall-self-heal.cjs
  • preparenode -e "try{require('child_process').execSync('git rev-parse --git-dir',{stdio:'ignore'});require('child_process').execSync('bash .githooks/install.sh',{stdio:'inherit'})}catch(e){console.warn('[i] Hook install skipped:',e.message)}"
  • prepublishOnlybun run help:check-parity && bun run manifest:generate && bun run docs:generate
  • testbun test
  • test:e2eplaywright test --config=playwright.config.ts
  • test:e2e:uiplaywright test --ui --config=playwright.config.ts
  • test:integrationCK_RUN_CLI_INTEGRATION=1 bun test tests/integration/cli.test.ts
  • test:quick./scripts/dev-quick-start.sh test
  • test:watchbun test --watch
  • typechecktsc --noEmit
  • ui:buildcd src/ui && bun install --silent && bun run build
  • ui:devcd src/ui && bun run dev
  • ui:testcd src/ui && bun install --silent && bun run test
  • ui:test:planscd src/ui && bun install --silent && bunx vitest run src/hooks/__tests__/use-plans-dashboard.vitest.ts src/pages/__tests__/PlansPage.vitest.tsx src/pages/__tests__/PlanDetailPage.vitest.tsx
  • validatebun run typecheck && bun run lint && bun test && bun run ui:test && bun run build
  • …and 1 more.
Dependencies26
  • @clack/prompts^0.7.0
  • @octokit/rest^22.0.0
  • better-sqlite3^12.6.2
  • cac^6.7.14
  • chokidar^5.0.0
  • cli-progress^3.12.0
  • compare-versions^6.1.1
  • diff^8.0.3
  • express^5.2.1
  • extract-zip^2.0.1
  • fs-extra^11.2.0
  • get-port^7.1.0
  • gray-matter^4.0.3
  • ignore^5.3.2
  • minimatch^10.1.1
  • open^11.0.0
  • ora^8.0.0
  • p-limit^7.2.0
  • picocolors^1.1.1
  • picomatch^4.0.3
  • proper-lockfile^4.1.2
  • semver^7.7.3
  • tar^7.4.3
  • tmp^0.2.3
  • ws^8.19.0
  • zod^3.23.8