Trust Assessment
dyson-cli received a trust score of 79/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 4 findings: 0 critical, 0 high, 3 medium, and 1 low severity. Key findings include Suspicious import: socket, Unpinned Python dependency version, Sensitive credentials stored with potentially broad file permissions.
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 Findings4
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| MEDIUM | Suspicious import: socket Import of 'socket' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/tmustier/dyson-cli/src/dyson_cli/cli.py:148 | |
| MEDIUM | Unpinned Python dependency version Dependency 'libdyson-neon>=1.6.0' is not pinned to an exact version. Pin Python dependencies with exact versions where feasible. | Dependencies | skills/tmustier/dyson-cli/pyproject.toml | |
| MEDIUM | Sensitive credentials stored with potentially broad file permissions The `dyson-cli` stores sensitive Dyson device credentials (tokens/keys) in `~/.dyson/config.json`. The `save_config` function in `src/dyson_cli/config.py` creates and writes to this file using `Path.write_text()`. By default, `Path.write_text()` does not explicitly set restrictive file permissions. Depending on the system's `umask`, this file could be created with permissions (e.g., `0o644`) that allow other local users on the system to read the sensitive `credential` value, leading to local data exfiltration. Explicitly set restrictive file permissions (e.g., `0o600`) when creating or writing to `config.json` to ensure only the owner can read/write it. This can be achieved by using `os.chmod(CONFIG_FILE, 0o600)` after writing the file, or by using lower-level file opening functions that allow specifying the mode directly. | LLM | src/dyson_cli/config.py:30 | |
| LOW | Core dependency `libdyson-neon` is not strictly pinned The `pyproject.toml` specifies the core dependency `libdyson-neon` with a minimum version (`>=1.6.0`). While this allows for patch and minor updates, it does not strictly pin the dependency to an exact version or a compatible range (e.g., `~=1.6.0`). This practice can introduce supply chain risks, as future versions of the dependency could inadvertently introduce breaking changes, regressions, or even security vulnerabilities that are automatically pulled into the project without explicit review. Pin the dependency to an exact version (e.g., `==1.6.0`) or use a tilde specifier (e.g., `~=1.6.0`) to restrict updates to compatible versions. Regularly audit and update dependencies to mitigate risks from new vulnerabilities. | LLM | pyproject.toml:29 |
Scan History
Embed Code
[](https://skillshield.io/report/90dee08729d71f0a)
Powered by SkillShield