Trust Assessment
callmac received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 31 findings: 14 critical, 14 high, 1 medium, and 2 low severity. Key findings include Arbitrary command execution, Dangerous call: subprocess.run(), Dangerous call: subprocess.Popen().
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings31
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/generate_tts.py:106 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/generate_tts.py:121 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/generate_tts.py:128 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/generate_tts.py:151 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/merge_audio.py:35 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/merge_audio.py:57 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/merge_audio.py:79 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:36 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:43 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:58 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:65 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:77 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:91 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/jooey/callmac/scripts/play_audio.py:106 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'generate_tts'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/generate_tts.py:106 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'play_audio'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/generate_tts.py:121 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'play_audio'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/generate_tts.py:128 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'merge_audio_files'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/generate_tts.py:151 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'merge_with_ffmpeg'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/merge_audio.py:35 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'merge_with_sox'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/merge_audio.py:57 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'create_silence'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/merge_audio.py:79 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'stop_playback'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:58 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'play_audio_file'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:36 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'get_system_volume'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:65 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'get_mute_status'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:77 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'set_system_volume'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:91 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'set_mute_status'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:106 | |
| HIGH | Dangerous call: subprocess.Popen() Call to 'subprocess.Popen()' detected in function 'play_audio_file'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/jooey/callmac/scripts/play_audio.py:43 | |
| MEDIUM | Unpinned dependencies in installation instructions The `SKILL.md` file instructs users to install `edge-tts`, `ffmpeg`, and `sox` without specifying exact versions. This can lead to supply chain risks, as future versions of these dependencies might introduce breaking changes, vulnerabilities, or unexpected behavior. It is a best practice to pin dependency versions to ensure reproducibility and security. Pin dependency versions (e.g., `pip3 install edge-tts==X.Y.Z`, `brew install ffmpeg@X.Y.Z`). Regularly review and update pinned versions to benefit from security patches while maintaining stability. | LLM | SKILL.md:108 | |
| LOW | Skill can modify system-wide volume settings The `generate_tts.py` and `play_audio.py` scripts use `osascript` to set the system's output volume. While this is a core feature of the skill, it grants the ability to change a system-wide setting. A malicious actor could potentially use this to disrupt user experience by setting the volume to 0 or 100 unexpectedly. This is a legitimate function but represents a powerful system interaction. Ensure that volume changes are always explicitly requested by the user or are within reasonable bounds. Document this capability clearly to users. If this were a user-facing agent, consider adding user confirmation for significant volume changes. | LLM | scripts/generate_tts.py:120 | |
| LOW | Skill can terminate all 'afplay' processes The `play_audio.py` script includes a `stop_playback` function that uses `pkill -f afplay` to terminate all running `afplay` processes. While intended to stop the skill's own audio playback, this command is broad and could inadvertently terminate `afplay` processes initiated by other applications on the user's system, leading to unexpected disruption. If possible, identify and terminate only the `afplay` processes spawned by this skill (e.g., by tracking their PIDs). If not feasible, clearly document this behavior to users so they are aware of the potential for other audio playback to be interrupted. | LLM | scripts/play_audio.py:50 |
Scan History
Embed Code
[](https://skillshield.io/report/ac415c6a31e93ff6)
Powered by SkillShield