Trust Assessment
ui-ux-pro-max received a trust score of 37/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 6 findings: 1 critical, 0 high, 5 medium, and 0 low severity. Key findings include Unsafe deserialization / dynamic eval, Path Traversal via User-Controlled Arguments in File Persistence.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 65/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 Findings6
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Path Traversal via User-Controlled Arguments in File Persistence The `design_system.py` script, which the LLM is instructed to use, relies on functions that accept user-controlled arguments for file persistence. Specifically, the `search.py` script (which wraps `design_system.py`'s core logic) exposes `--output-dir`, `--project-name`, and `--page` arguments. The values for `--project-name` and `--page` are only sanitized by lowercasing and replacing spaces with hyphens, which is insufficient to prevent path traversal sequences like `../`. The `--output-dir` argument is passed directly. An attacker can manipulate these arguments to construct paths outside the intended `design-system/` directory, allowing them to write files to arbitrary locations on the filesystem. This could lead to remote code execution (e.g., by overwriting system configuration files or cron jobs) or denial of service. Implement robust path sanitization for `--output-dir`, `--project_name`, and `--page` arguments. For `--output-dir`, ensure that the resolved path is strictly confined to a designated, restricted directory (e.g., a temporary directory or the skill's own data directory) using `pathlib.Path.resolve()` and checking against an allowed base path. For `project_name` and `page`, validate that they do not contain any path separators (`/`, `\`) or path traversal sequences (`..`). A whitelist of allowed characters (e.g., alphanumeric, hyphens, underscores) is recommended for these arguments. | LLM | scripts/search.py:100 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/kjaylee/kj-ui-ux-pro-max/scripts/core.py:4 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/kjaylee/kj-ui-ux-pro-max/scripts/design_system.py:11 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/kjaylee/kj-ui-ux-pro-max/scripts/design_system.py:824 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/kjaylee/kj-ui-ux-pro-max/scripts/design_system.py:920 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/kjaylee/kj-ui-ux-pro-max/scripts/search.py:12 |
Scan History
Embed Code
[](https://skillshield.io/report/5cd4fd4e6ac3ec79)
Powered by SkillShield