Trust Assessment
zettelkasten received a trust score of 86/100, placing it in the Mostly Trusted category. This skill has passed most security checks with only minor considerations noted.
SkillShield's automated analysis identified 1 finding: 0 critical, 1 high, 0 medium, and 0 low severity. Key findings include Path Traversal via user_id in database file path.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
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 Findings1
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | Path Traversal via user_id in database file path The `Zettelkasten` class constructs its database filename `self.db_file` using an f-string `f"zettelkasten_{self.user_id}_db.json"`. If the `user_id` parameter, which can be controlled by the host LLM (and thus potentially by an attacker via prompt injection), contains path traversal sequences (e.g., `../../../../etc/passwd`), the skill could be tricked into reading from or writing to arbitrary files outside its intended data directory. This allows for data exfiltration (reading sensitive files) or data corruption (overwriting critical system files) on the system where the skill is executed. Sanitize the `user_id` input to remove or escape path separators (`/`, `\`) or restrict it to alphanumeric characters. A safer approach is to hash the `user_id` or generate a UUID for the filename to prevent direct manipulation. Ensure that `os.path.join` is used with a fixed, secure base directory for skill data, and that `user_id` is treated as a filename component, not a path. | LLM | zettelkasten.py:19 |
Scan History
Embed Code
[](https://skillshield.io/report/63311a9f4e01ba13)
Powered by SkillShield