Trust Assessment
yt-transcript received a trust score of 53/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 4 findings: 1 critical, 0 high, 3 medium, and 0 low severity. Key findings include Missing required field: name, Unpinned npm dependency version, Command Injection via unsanitized user input in shell script.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The LLM Behavioral Safety layer scored lowest at 63/100, indicating areas for improvement.
Last analyzed on February 12, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings4
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Command Injection via unsanitized user input in shell script The `scripts/yt-transcript.sh` script directly uses user-provided input (`$1`) as `VIDEO_ID` if it doesn't match a YouTube URL pattern. This `VIDEO_ID` is then used in a `curl` command without sufficient sanitization or validation against shell metacharacters. An attacker can provide a crafted input like `foo; malicious_command` which will result in `malicious_command` being executed on the host system. Validate the `VIDEO_ID` against a strict regex pattern (e.g., `^[a-zA-Z0-9_-]{11}$`) if it's not extracted from a URL. If the input does not conform to the expected video ID format, the script should exit with an error. This prevents arbitrary shell commands from being injected and executed. | LLM | scripts/yt-transcript.sh:16 | |
| 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/alti-systems/yt-transcript/SKILL.md:1 | |
| MEDIUM | Unpinned npm dependency version Dependency 'youtube-captions-scraper' is not pinned to an exact version ('^2.0.3'). Pin dependencies to exact versions to reduce drift and supply-chain risk. | Dependencies | skills/alti-systems/yt-transcript/package.json | |
| MEDIUM | Unpinned dependencies in package.json The `package.json` file specifies dependencies using caret (`^`) ranges (e.g., `"youtube-captions-scraper": "^2.0.3"`). This allows `npm` to install newer minor or patch versions automatically. While `package-lock.json` pins exact versions, relying solely on it can be bypassed (e.g., by `npm install` without `package-lock.json` or if the lock file is regenerated). This introduces a supply chain risk, as a malicious update to a dependency could be pulled in without explicit review, potentially leading to vulnerabilities. Pin exact versions for all dependencies in `package.json` (e.g., `"youtube-captions-scraper": "2.0.3"`). Alternatively, ensure that `npm ci` is always used for installations in production environments to strictly adhere to `package-lock.json`. | LLM | package.json:10 |
Scan History
Embed Code
[](https://skillshield.io/report/1d15519183923905)
Powered by SkillShield