Package evidence
@schoolai/[email protected]
Js Hidden Powershell: Hidden / non-interactive PowerShell invocation in package code — `-WindowStyle Hidden`, `irm | iex`, `windowsHide: true`, or equivalent — used to download-and-run payloads on Windows installers.
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
- 3,054Niche · −30% score
- Versions published
- 375
- First published
- Feb 2026
- Publisher
- GitHub ActionsTrusted automation · −70% score
Effective trust discount applied: −70% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.
Recommended action
Review before promotingMixed signals: the package has indicators worth reading before allowing the update in automated dependency flows.
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":["@schoolai/[email protected]"],"fail_on":"review"}'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":["@schoolai/[email protected]"],"fail_on":"review"}'Why flagged
What the scanner saw
Js Hidden Powershell: Hidden / non-interactive PowerShell invocation in package code — `-WindowStyle Hidden`, `irm | iex`, `windowsHide: true`, or equivalent — used to download-and-run payloads on Windows installers.
Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.
Availability ledger
available
Status history (1 event)
- new → available · risk review · score 25 · status changed
Evidence
Static findings
6 static · 0 from release diff · showing high-signal first.
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Js Hidden Powershell | package/dist/chunk-JKKKUMTY.js | Hidden / non-interactive PowerShell invocation in package code — `-WindowStyle Hidden`, `irm | iex`, `windowsHide: true`, or equivalent — used to download-and-run payloads on Windows installers. | 45 |
| high | Install Lifecycle Remote Or Exec | package.json | postinstall="node -e \"const fs=require('fs'),path=require('path');const d=path.join(__dirname,'node_modules','node-pty','prebuilds');if(fs.existsSync(d))for(const a of fs.readdirSync(d)){const h=path.join(d,a,'spawn-helper');try{fs.chmodSync(h,0o755)}catch{}}\"" | 30 |
Show all 6 findings (low-signal and informational)
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Js Hidden Powershell | package/dist/chunk-JKKKUMTY.js | Hidden / non-interactive PowerShell invocation in package code — `-WindowStyle Hidden`, `irm | iex`, `windowsHide: true`, or equivalent — used to download-and-run payloads on Windows installers. | 45 |
| high | Install Lifecycle Remote Or Exec | package.json | postinstall="node -e \"const fs=require('fs'),path=require('path');const d=path.join(__dirname,'node_modules','node-pty','prebuilds');if(fs.existsSync(d))for(const a of fs.readdirSync(d)){const h=path.join(d,a,'spawn-helper');try{fs.chmodSync(h,0o755)}catch{}}\"" | 30 |
| low | Credential file access | package/dist/chunk-MQSFB36M.js | matched "AWS_ACCESS_KEY" | 5 |
| low | Install-time lifecycle script | package.json | postinstall="node -e \"const fs=require('fs'),path=require('path');const d=path.join(__dirname,'node_modules','node-pty','prebuilds');if(fs.existsSync(d))for(const a of fs.readdirSync(d)){const h=path.join(d,a,'spawn-helper');try{fs.chmodSync(h,0o755)}catch{}}\"" | 5 |
| low | Obfuscation Density | package/dist/chunk-JCEWPG3R.js | high encoded/escaped-token density | 0 |
| low | Large Javascript Payload | package/dist/serve-5ICDUJBC.js | 4708793 bytes | 0 |
Manifest
Package metadata
Scripts1
postinstallnode -e "const fs=require('fs'),path=require('path');const d=path.join(__dirname,'node_modules','node-pty','prebuilds');if(fs.existsSync(d))for(const a of fs.readdirSync(d)){const h=path.join(d,a,'spawn-helper');try{fs.chmodSync(h,0o755)}catch{}}"
Dependencies23
@anthropic-ai/claude-agent-sdk0.3.170@cursor/sdk1.0.17@linear/sdk82.1.0@modelcontextprotocol/sdk^1.29.0@openai/codex0.138.0@parcel/watcher^2.5.6@typescript/native-previewlatest@vscode/ripgrep^1.18.0@vtsls/language-server^0.3.0better-sqlite3^12.10.0happy-dom^20.5.0loro-crdt1.12.1mermaid^11.15.0modern-screenshot^4.7.0node-datachannel^0.32.3node-pty^1.1.0open^11.0.0pino^10.3.1pino-roll^4.0.0pyright^1.1.410toml^4.1.1typescript^6.0.3ws^8.21.0
Optional dependencies6
@cursor/sdk-darwin-arm641.0.17@cursor/sdk-darwin-x641.0.17@cursor/sdk-linux-arm641.0.17@cursor/sdk-linux-x641.0.17@cursor/sdk-win32-x641.0.17pino-pretty^13.1.3