Trust Assessment
voice-devotional 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 10 findings: 4 critical, 0 high, 5 medium, and 1 low severity. Key findings include Arbitrary command execution, Missing required field: name, Unpinned npm dependency version.
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 14, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings10
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Python dynamic code execution (exec/eval/compile) 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/snail3d/clawforgod/skills/voice-devotional/scripts/generate-full.js:47 | |
| CRITICAL | Arbitrary command execution Python dynamic code execution (exec/eval/compile) 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/snail3d/clawforgod/skills/voice-devotional/scripts/generate-today.js:50 | |
| CRITICAL | Arbitrary command execution Node.js child_process require 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/snail3d/clawforgod/skills/voice-devotional/scripts/generate-full.js:46 | |
| CRITICAL | Arbitrary command execution Node.js child_process require 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/snail3d/clawforgod/skills/voice-devotional/scripts/generate-today.js:49 | |
| MEDIUM | Missing required field: name The 'name' field is required for claude_code skills but is missing from frontmatter. Add a 'name' field to the SKILL.md frontmatter. | Static | skills/snail3d/clawforgod/skills/voice-devotional/SKILL.md:1 | |
| MEDIUM | Unpinned npm dependency version Dependency 'dotenv' is not pinned to an exact version ('^16.0.3'). Pin dependencies to exact versions to reduce drift and supply-chain risk. | Dependencies | skills/snail3d/clawforgod/skills/voice-devotional/package.json | |
| MEDIUM | Use of child_process.exec in example scripts The skill package includes example scripts (`scripts/generate-full.js`, `scripts/generate-today.js`) that utilize `child_process.exec` to run external commands (e.g., `open -a "QuickTime Player"`). While the command arguments are currently derived from hardcoded paths and environment variables, the presence of `exec` introduces a potential command injection vulnerability if the skill's execution context or input parameters could be manipulated to construct arbitrary shell commands. This capability, even in examples, poses a risk if the AI agent is capable of executing arbitrary scripts within the package. Avoid using `child_process.exec` with any string that could be influenced by user input. For opening files, consider using platform-specific APIs or libraries that do not involve shell execution, or ensure strict sanitization/whitelisting of paths. If `exec` is necessary, use `child_process.spawn` with an array of arguments to prevent shell interpretation. For example scripts, clearly document the security implications or remove them if not essential for skill functionality. | LLM | scripts/generate-full.js:46 | |
| MEDIUM | Use of child_process.exec in example scripts The skill package includes example scripts (`scripts/generate-full.js`, `scripts/generate-today.js`) that utilize `child_process.exec` to run external commands (e.g., `open -a "QuickTime Player"`). While the command arguments are currently derived from hardcoded paths and environment variables, the presence of `exec` introduces a potential command injection vulnerability if the skill's execution context or input parameters could be manipulated to construct arbitrary shell commands. This capability, even in examples, poses a risk if the AI agent is capable of executing arbitrary scripts within the package. Avoid using `child_process.exec` with any string that could be influenced by user input. For opening files, consider using platform-specific APIs or libraries that do not involve shell execution, or ensure strict sanitization/whitelisting of paths. If `exec` is necessary, use `child_process.spawn` with an array of arguments to prevent shell interpretation. For example scripts, clearly document the security implications or remove them if not essential for skill functionality. | LLM | scripts/generate-today.js:47 | |
| MEDIUM | Arbitrary file write to user-specified output directory The skill allows users to specify an output directory (`outputDir`) via command-line arguments (`--output`) or environment variables (`ELEVEN_LABS_OUTPUT_DIR`). The skill then writes generated audio files and metadata JSON files into this directory. While `fs.mkdir` with `recursive: true` and `path.join` mitigate simple path traversal, an attacker could specify a sensitive system directory (e.g., `/etc`, `/usr/local/bin`) as the `outputDir`. If the skill runs with elevated permissions, this could lead to overwriting existing system files or creating new files in critical locations, potentially enabling privilege escalation or denial of service. The filenames themselves are derived from user-controlled input (e.g., `--passage` or `--theme`), which could lead to files with names like `scripture-etc-passwd.mp3` being written to `/etc`. Restrict the `outputDir` to a safe, user-specific location (e.g., within the skill's own directory, or a dedicated user data directory). Implement strict validation to ensure the `outputDir` is not a system-critical path. Consider using a sandboxed environment for file operations if writing to arbitrary locations is required. | LLM | scripts/voice-devotional.js:29 | |
| LOW | Node lockfile missing package.json is present but no lockfile was found (package-lock.json, pnpm-lock.yaml, or yarn.lock). Commit a lockfile for deterministic dependency resolution. | Dependencies | skills/snail3d/clawforgod/skills/voice-devotional/package.json |
Scan History
Embed Code
[](https://skillshield.io/report/c70bb26790ba0dbf)
Powered by SkillShield