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
- 2,893Niche · −30% score
- Versions published
- 124Established · −30% score
- First published
- Nov 2025
- Publisher
- mihai_respira
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
Looks clean — keep monitoringNo high-signal indicators in the stored static report. PkgRadar will re-check on the next ingest pass.
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":["@respira/[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":["@respira/[email protected]"],"fail_on":"review"}'Why flagged
What the scanner saw
No high-signal static finding in the saved report.
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 low · score 0 · status changed
Evidence
Static findings
No findings stored for this release.
Manifest
Package metadata
Scripts11
buildnpm run bundle-skills && tscbundle-skillsnode -e "const fs=require('fs'),path=require('path');const src=path.join(__dirname,'..','plugins','respira-wordpress','skills');const dst=path.join(__dirname,'skills');if(!fs.existsSync(src))process.exit(0);fs.rmSync(dst,{recursive:true,force:true});fs.mkdirSync(dst,{recursive:true});for(const e of fs.readdirSync(src,{withFileTypes:true})){if(!e.isDirectory())continue;const s=path.join(src,e.name);const d=path.join(dst,e.name);fs.mkdirSync(d,{recursive:true});for(const f of fs.readdirSync(s,{withFileTypes:true})){if(f.isDirectory())continue;fs.copyFileSync(path.join(s,f.name),path.join(d,f.name));}}console.log('bundled '+fs.readdirSync(dst).length+' skills from plugins/respira-wordpress/skills/');"check:registry-paritynode ../scripts/check-tool-registry-parity.mjscleanrm -rf dist skillsdevtsc && node dist/index.jsformatprettier --write "src/**/*.ts"linteslint src --ext .tssetupnode dist/setup.js --setupstartnode dist/index.jstesttsc && node --test "dist/__tests__/*.js"watchtsc --watch
Dependencies6
@iarna/toml^2.2.5@modelcontextprotocol/sdk^1.29.0@sentry/node^10.25.0axios^1.15.0dotenv^16.3.1form-data^4.0.0