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.

Versions published
126
First published
Feb 2026
Publisher
demian0311

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 bytes6,773,241
Previous version0.18.0
Published2026-05-28T12:09:08.012Z
SHA-25662f75a2fe2908115a308c05b999072a105168bbe4ad350dcef37d43c9643ffea

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
35Score
0.18.1Version
Status history (4 events)
  1. availableavailable · risk high · score 35 · status available -> available, risk high -> high, score 24 -> 35
  2. availableavailable · risk high · score 24 · status available -> available, risk high -> high, score 35 -> 24
  3. availableavailable · risk high · score 35 · status available -> available, risk high -> high, score 85 -> 35
  4. newavailable · risk high · score 85 · status changed

Evidence

Static findings

10 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 10 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
lowLarge Javascript Payloadpackage/dist/advanced.cjs2097018 bytes0
lowLarge Javascript Payloadpackage/dist/auto.cjs2017561 bytes0
lowLarge Javascript Payloadpackage/dist/cli.cjs3341174 bytes0
lowLarge Javascript Payloadpackage/dist/internal.cjs2097038 bytes0
lowLarge Javascript Payloadpackage/dist/advanced.js2083516 bytes0
lowLarge Javascript Payloadpackage/dist/auto.js3289002 bytes0
lowLarge Javascript Payloadpackage/dist/internal.js2083516 bytes0
lowLarge Javascript Payloadpackage/dist/auto.mjs2015269 bytes0

Manifest

Package metadata

Scripts31
  • buildtsup; _e=$?; rm -rf ../diagrammo-app/node_modules/.vite/deps 2>/dev/null; exit $_e
  • 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
  • devtsup --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
  • test:watchvitest
  • …and 1 more.
Dependencies12
  • @dagrejs/dagre^3.0.0
  • @resvg/resvg-js^2.6.2
  • d3-array^3.2.4
  • d3-cloud^1.2.9
  • d3-hierarchy^3.1.2
  • d3-scale^4.0.2
  • d3-selection^3.0.0
  • d3-shape^3.2.0
  • echarts^6.0.0
  • elkjs^0.11.1
  • jsdom^29.0.2
  • lz-string^1.5.0