Trust Assessment
weather-nws received a trust score of 10/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 10 findings: 7 critical, 1 high, 1 medium, and 1 low severity. Key findings include Arbitrary command execution, Unsafe deserialization / dynamic eval, Node lockfile missing.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 0/100, indicating areas for improvement.
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 Findings10
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Arbitrary command execution Node.js child_process require Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:3 | |
| CRITICAL | Arbitrary command execution Node.js synchronous shell execution Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:21 | |
| CRITICAL | Arbitrary command execution Node.js synchronous shell execution Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:34 | |
| CRITICAL | Arbitrary command execution Node.js synchronous shell execution Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:43 | |
| CRITICAL | Arbitrary command execution Node.js synchronous shell execution Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:52 | |
| CRITICAL | Arbitrary command execution Node.js synchronous shell execution Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/andrewdmwalker/weather-nws/weather-nws.js:147 | |
| CRITICAL | Command Injection via execSync with unvalidated input The `weather-nws.js` script uses `child_process.execSync` to execute `curl` commands. The `lat` and `lon` values, which can be supplied to the `NWSWeather` class constructor programmatically (e.g., by an LLM or another script), are directly interpolated into the `curl` command string without proper sanitization or escaping. An attacker could inject shell metacharacters (e.g., `;`, `$()`, `` ` ``) into the `lat` or `lon` parameters, leading to arbitrary command execution on the host system. While the script attempts to parse `--lat` and `--lon` command-line arguments as floats, this sanitization does not apply when the `NWSWeather` class is instantiated programmatically. Avoid using `child_process.execSync` with interpolated user-controlled input. Instead, use a dedicated HTTP client library (e.g., `node-fetch`, `axios`) which handles URL encoding and does not invoke a shell. If `execSync` is strictly necessary, ensure all interpolated variables are rigorously validated and sanitized to prevent shell metacharacter injection. For geographic coordinates, strictly validate input against a regex for valid numeric formats and ensure no shell metacharacters are present before interpolation. | LLM | weather-nws.js:20 | |
| HIGH | Potential Command Injection via execSync with API-derived URLs The `weather-nws.js` script uses `child_process.execSync` to execute `curl` commands with URLs derived from the National Weather Service (NWS) API responses (e.g., `forecastUrl`, `stationsUrl`, `nearestStation`, `zoneId`). While these values are expected to be benign URLs or identifiers, a compromise of the NWS API or a bug in JSON parsing could potentially lead to these variables containing shell metacharacters. If such malicious data were interpolated into the `curl` command, it could result in command injection. This is a secondary risk compared to direct user input but still a concern given the use of `execSync`. As with direct user input, it is best practice to avoid `execSync` for network requests. Use a dedicated HTTP client library that handles URL construction and encoding safely. If `execSync` must be used, ensure that all variables derived from external APIs are strictly validated and sanitized before being interpolated into shell commands. | LLM | weather-nws.js:30 | |
| 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/andrewdmwalker/weather-nws/weather-nws.js:223 | |
| LOW | Node lockfile missing package.json is present but no lockfile was found (package-lock.json, pnpm-lock.yaml, or yarn.lock). Commit a lockfile for deterministic dependency resolution. | Dependencies | skills/andrewdmwalker/weather-nws/package.json |
Scan History
Embed Code
[](https://skillshield.io/report/dbc59d3a33cc6603)
Powered by SkillShield