PkgRadar

Package evidence

@diagrammo/[email protected]

Install Lifecycle Remote Or Exec: postinstall="node -e \"console.log('\\n💡 Claude Code user? Run: dgmo --install-claude-skill\\n')\""

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.

Weekly downloads
1,692Niche · −30% score
Versions published
126
First published
Feb 2026
Publisher
demian0311

Effective trust discount applied: 30% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.

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":["@diagrammo/[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":["@diagrammo/[email protected]"],"fail_on":"high"}'
Publisherdemian0311
Artifact bytes1,584,883
Previous version0.25.3
Published2026-06-05T02:45:36.702Z
SHA-256e73afa7b8aec2657e288301c3f0e5a89e347cd37e3974eaef7f4e8f4f2bb9d03

Why flagged

What the scanner saw

Install Lifecycle Remote Or Exec: postinstall="node -e \"console.log('\\n💡 Claude Code user? Run: dgmo --install-claude-skill\\n')\""

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

Availability ledger

available

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

Evidence

Static findings

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

SeverityKindPathDetailPoints
highInstall Lifecycle Remote Or Execpackage.jsonpostinstall="node -e \"console.log('\\n💡 Claude Code user? Run: dgmo --install-claude-skill\\n')\""30
Show all 2 findings (low-signal and informational)
SeverityKindPathDetailPoints
highInstall Lifecycle Remote Or Execpackage.jsonpostinstall="node -e \"console.log('\\n💡 Claude Code user? Run: dgmo --install-claude-skill\\n')\""30
lowInstall-time lifecycle scriptpackage.jsonpostinstall="node -e \"console.log('\\n💡 Claude Code user? Run: dgmo --install-claude-skill\\n')\""5

Manifest

Package metadata

Scripts32
  • buildDGMO_DEV_RELOAD=1 tsup; _e=$?; rm -rf ../diagrammo-app/node_modules/.vite/deps 2>/dev/null; exit $_e
  • build:map-datanode scripts/build-map-data.mjs
  • check:allpnpm check:deadcode && pnpm check:spelling && pnpm check:duplication && pnpm check:circular && pnpm check:deps && pnpm check:security && pnpm build && bash scripts/check-api.sh check && pnpm check:publish && pnpm check:types
  • check:apipnpm build && bash scripts/check-api.sh check
  • check:api:updatepnpm build && bash scripts/check-api.sh update
  • check:circularmadge --circular --extensions ts src/ --json | node -e "const c=JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')); const n=c.length; if(n>4){console.error('New circular deps found ('+n+' > 4 known type-only cycles)');process.exit(1)}else if(n>0){console.log(n+' known type-only/dynamic cycles (safe)')}else{console.log('No circular dependencies')}"
  • check:deadcodeknip
  • check:depsdepcheck --ignores='@codemirror/language,@lezer/*,husky,lint-staged,tsup,axe-core,type-coverage'
  • check:duplicationjscpd ./src
  • check:publishpublint
  • check:securitypnpm audit --prod
  • check:sizepnpm build && du -sh dist/ && echo '---' && ls -lh dist/*.js dist/*.cjs
  • check:spellingcspell "src/**/*.ts" "tests/**/*.ts"
  • check:typesattw --pack . --ignore-rules no-resolution false-export-default
  • codegenlezer-generator src/editor/dgmo.grammar -o src/editor/dgmo.grammar.js
  • devDGMO_DEV_RELOAD=1 tsup --watch
  • formatprettier --write src/
  • format:checkprettier --check src/
  • gallerypnpm build && node scripts/generate-gallery.mjs
  • gallery:snapshotpnpm build && node scripts/gallery-snapshot.mjs
  • gallery:snapshot:updatepnpm build && node scripts/gallery-snapshot.mjs --update
  • linteslint .
  • lint:fixeslint . --fix
  • postinstallnode -e "console.log('\n💡 Claude Code user? Run: dgmo --install-claude-skill\n')"
  • prebuildrm -rf dist && pnpm codegen
  • preparehusky
  • pretestpnpm codegen
  • srinode scripts/sri.mjs
  • testvitest run --coverage
  • test:autopnpm build && vitest run tests/auto.test.ts tests/safe-href.test.ts
  • …and 2 more.
Dependencies14
  • @dagrejs/dagre^3.0.0
  • @resvg/resvg-js^2.6.2
  • d3-array^3.2.4
  • d3-cloud^1.2.9
  • d3-geo^3.1.1
  • d3-hierarchy^3.1.2
  • d3-scale^4.0.2
  • d3-selection^3.0.0
  • d3-shape^3.2.0
  • echarts^6.1.0
  • elkjs^0.11.1
  • jsdom^29.1.1
  • lz-string^1.5.0
  • topojson-client^3.1.0