Trusted — Risk Score 5/100
Last scan:1 day ago Rescan
5 /100
audio-analyzer
All-in-one audio analysis: transcribe, identify speakers by voiceprint, auto-detect scene (meeting/interview/training/talk), generate structured notes
Legitimate audio transcription and speaker identification skill. All shell commands (whisper, ffmpeg) are declared and used as documented. API keys are accessed only for their stated purpose (cloud ASR calls). No credential harvesting, data exfiltration, obfuscation, or hidden functionality detected.
Skill Nameaudio-analyzer
Duration47.0s
Enginepi
Safe to install
Skill is safe to use. No action required.

Findings 1 items

Severity Finding Location
Low
npm dependencies not exact-pinned Supply Chain
package.json uses caret version ranges (^4.8.0, ^16.4.0, ^4.70.0) instead of exact versions. However, package-lock.json locks to specific versions, mitigating this risk.
"assemblyai": "^4.8.0"
→ Use exact pinned versions in package.json for reproducible builds: "assemblyai": "4.26.1"
scripts/package.json:11
ResourceDeclaredInferredStatusEvidence
Filesystem READ WRITE ✓ Aligned analyze.js: reads audioPath; voiceprint.py: read/write voice-db.json
Network READ READ ✓ Aligned analyze.js: AssemblyAI, OpenRouter, Gemini API calls; references/scenes/rowing.m…
Shell WRITE WRITE ✓ Aligned analyze.js: execSync('whisper ...'); voiceprint.py: subprocess.run(['ffmpeg' ...…
Environment READ READ ✓ Aligned analyze.js: process.env.ASSEMBLYAI_API_KEY etc.; used only for ASR API calls
Skill Invoke NONE NONE No skill invocation found
Clipboard NONE NONE No clipboard access
Browser NONE NONE No browser access
Database NONE NONE No external database access; local JSON files only
4 findings
🔗
Medium External URL 外部 URL
https://api.open-meteo.com/v1/forecast?latitude=31.143&longitude=121.657&hourly=temperature_2m
references/scenes/rowing.md:10
🔗
Medium External URL 外部 URL
https://openrouter.ai/api/v1
scripts/analyze.js:12
🔗
Medium External URL 外部 URL
https://dotenvx.com
scripts/package-lock.json:120
🔗
Medium External URL 外部 URL
https://paypal.me/jimmywarting
scripts/package-lock.json:380

File Tree

11 files · 59.7 KB · 1823 lines
JSON 2f · 512L Markdown 7f · 487L Python 1f · 426L JavaScript 1f · 398L
├─ 📁 references
│ ├─ 📁 scenes
│ │ ├─ 📝 general.md Markdown 29L · 536 B
│ │ ├─ 📝 interview.md Markdown 36L · 885 B
│ │ ├─ 📝 meeting.md Markdown 40L · 905 B
│ │ ├─ 📝 rowing.md Markdown 40L · 1.3 KB
│ │ └─ 📝 talk.md Markdown 34L · 781 B
│ └─ 📝 voice-profiles.md Markdown 53L · 1.9 KB
├─ 📁 scripts
│ ├─ 📜 analyze.js JavaScript 398L · 13.0 KB
│ ├─ 📋 package-lock.json JSON 497L · 17.1 KB
│ ├─ 📋 package.json JSON 15L · 363 B
│ └─ 🐍 voiceprint.py Python 426L · 13.6 KB
└─ 📝 SKILL.md Markdown 255L · 9.4 KB

Dependencies 6 items

PackageVersionSourceKnown VulnsNotes
assemblyai 4.26.1 npm No Resolved from ^4.8.0
dotenv 16.6.1 npm No Resolved from ^16.4.0
openai 4.104.0 npm No Resolved from ^4.70.0
numpy unpinned pip (optional) No Optional Python dep for voiceprint.py, not pinned in code
librosa unpinned pip (optional) No Optional Python dep for voiceprint.py, not pinned in code
onnxruntime unpinned pip (optional) No Optional Python dep for voiceprint.py, not pinned in code

Security Positives

✓ No base64-encoded execution, eval(), or obfuscation detected
✓ All shell commands (whisper, ffmpeg) are declared in SKILL.md and match actual usage
✓ API keys are read from environment and used only for legitimate ASR API calls
✓ Voice embeddings are stored locally in JSON, never sent externally
✓ No credential harvesting beyond what is necessary for ASR functionality
✓ No access to sensitive paths (~/.ssh, ~/.aws, .env, etc.)
✓ No data exfiltration or C2 communication
✓ No reverse shell, RCE, or arbitrary code execution
✓ Code is clean and readable with no hidden instructions
✓ External URLs (Open-Meteo, OpenRouter, AssemblyAI) are documented and expected for audio transcription
✓ package-lock.json provides reproducible dependency resolution