Trust Assessment
switchbot-openapi received a trust score of 64/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 3 findings: 0 critical, 2 high, 1 medium, and 0 low severity. Key findings include Unsafe deserialization / dynamic eval, Unescaped user input in JSON payload.
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 Findings3
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | 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/woan1105/switchbot-openapi/scripts/switchbot_cli.js:162 | |
| HIGH | Unescaped user input in JSON payload The `scripts/send_command.sh` script constructs a JSON payload for the `curl -d` argument using direct string interpolation of `$COMMAND` and `$PARAMETER`. If these variables contain unescaped double quotes (`"`) or backslashes (`\`), they can break out of the JSON string, leading to malformed JSON or injection of arbitrary JSON fields. This could allow an attacker to send unintended commands or parameters to the SwitchBot API, potentially manipulating device actions. To prevent JSON injection, ensure that all user-supplied values interpolated into JSON strings are properly escaped. For shell scripts, consider using `jq` to construct the JSON payload, which handles escaping automatically. For example: ```bash JSON_PAYLOAD=$(jq -n \ --arg cmd "$COMMAND" \ --arg param "$PARAMETER" \ '{command: $cmd, parameter: $param, commandType: "command"}') curl ... -d "$JSON_PAYLOAD" ... ``` This approach ensures that `$COMMAND` and `$PARAMETER` are correctly escaped within the JSON structure before being sent to the API. | LLM | scripts/send_command.sh:13 | |
| 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/woan1105/switchbot-openapi/scripts/switchbot_cli.js:122 |
Scan History
Embed Code
[](https://skillshield.io/report/e011452c435a0e20)
Powered by SkillShield