Trust Assessment
omnifocus received a trust score of 72/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 1 finding: 1 critical, 0 high, 0 medium, and 0 low severity. Key findings include Command Injection via doShellScript with unsanitized user input.
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 14, 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 | |
|---|---|---|---|---|
| CRITICAL | Command Injection via doShellScript with unsanitized user input The `runAppleScript` function, which uses `currentApp.doShellScript`, is vulnerable to command injection. User-controlled arguments (e.g., `tagName`, `taskId`, `method`, `interval`, `unit`) are directly interpolated into AppleScript strings. These AppleScript strings are then passed to `doShellScript` via `osascript -e`. While `runAppleScript` attempts to escape single quotes for the shell, it does not sanitize the *entire* AppleScript string for shell metacharacters (e.g., `$(...)`, backticks, semicolons, pipes). An attacker can inject arbitrary shell commands by providing specially crafted input to commands like `tag`, `untag`, `repeat`, or `unrepeat`. Rigorously sanitize all user-controlled input before interpolating it into strings that will be executed by `doShellScript`. This includes escaping all shell metacharacters (e.g., `$`, `(`, `)`, `\`, ` `, `&`, `;`, `|`, `<`, `>`, `*`, `?`, `[`, `]`, `#`, `~`, `=`, `%`, `^`, `{`, `}`, `!`, `\n`, `\r`) if they are intended to be literal strings. A safer approach is to pass arguments to AppleScript using `with parameters` or to avoid `doShellScript` entirely by performing all operations within JXA if possible. If `doShellScript` is unavoidable, ensure the entire command string passed to it is fully escaped for the shell. | LLM | scripts/omnifocus.js:25 |
Scan History
Embed Code
[](https://skillshield.io/report/faf7dee71bcdd5ed)
Powered by SkillShield