OpenClaw: benign
VirusTotal: benign
StaticScan: unknown
OpenClaw: benign
The skill's code, instructions, and required environment variables are consistent with a simple OpenWeather One Call 3.0 CLI helper and do not request unrelated credentials or perform unexpected actio... [内容已截断]
VirusTotal: benign VT 报告
静态扫描: unknown
README 未提供
无文件信息
{
"latestVersion": {
"_creationTime": 1772263611738,
"_id": "k970rzv84r5qqajzfx4wsf3y4n821wsb",
"changelog": "# OpenWeather Skill for OpenClaw\n\n## Overview\n\nThe **OpenWeather Skill** is a lightweight, security-conscious weather and forecast integration for OpenClaw agents. \nIt provides current conditions, short-term, and extended forecasts using the **OpenWeather One Call API 3.0**, optimized for conversational use rather than raw data delivery.\n\nThe skill is intentionally implemented as a **small Python CLI (stdlib only)** to keep behavior transparent, auditable, and easy to reason about in security reviews.\n\nIt is designed to be:\n- Predictable\n- Low-risk\n- Easy to sandbox\n- Suitable for public ClawHub distribution\n\n---\n\n## What This Skill Does\n\nThis skill enables an OpenClaw agent to answer weather-related questions such as:\n\n- “What’s the weather right now?”\n- “What’s the forecast for the next few days?”\n- “Will it rain later today?”\n- “How hot will it get tomorrow?”\n\nIt resolves human-readable locations to coordinates using OpenWeather Geocoding, then retrieves a **single unified forecast payload** from the One Call 3.0 API.\n\nEach request uses:\n- **1 geocoding call**\n- **1 One Call API call**\n\nNo additional endpoints are accessed.\n\n---\n\n## Why OpenWeather One Call 3.0\n\nOpenWeather One Call 3.0 provides a stable and comprehensive dataset in a single response, which is especially well suited for agent workflows.\n\nAdvantages:\n- Current, hourly, and daily forecasts in one response\n- Consistent field structure across time horizons\n- Up to 8 days of forecast data\n- Contextual signals such as UV index and moon phase\n- Fewer API calls and fewer edge cases\n\nThis allows OpenClaw agents to produce clearer, more reliable answers with minimal glue logic.\n\n---\n\n## Changelog\n\n### 1.0.2 — Packaging cleanup\n\n- Removed duplicate top-level `weather.py` file.\n- Skill now ships with a single executable CLI at `scripts\/weather.py`.\n- No behavioral or configuration changes.\n- Improves clarity during security scans and code review.\n\n### 1.0.1 — Documentation and behavior alignment\n\n- Implemented true “default home location” behavior via `OPENWEATHER_DEFAULT_LOCATION`.\n- CLI now uses the default location when no city is provided.\n- Removed incorrect references to `curl`; implementation uses Python `urllib` only.\n- Explicitly documented all configuration via environment variables.\n- Ensured documented behavior matches runtime behavior exactly.\n\n### 1.0.0 — Initial public release\n\n- Initial OpenClaw-compatible weather skill.\n- Supports current, hourly, and daily forecasts.\n- Uses OpenWeather Geocoding + One Call API 3.0.\n- Designed for low-risk, on-demand execution.\n\n---\n\n## Configuration\n\nAll configuration is done via environment variables.\n\nRequired:\n- `OPENWEATHER_API_KEY` \n OpenWeather API key with One Call 3.0 enabled.\n\nOptional:\n- `OPENWEATHER_UNITS` \n Measurement units: `imperial`, `metric`, or `standard` (default: `imperial`)\n- `OPENWEATHER_DEFAULT_LOCATION` \n Default “home” location used when no city is provided (e.g. `Johnstown, PA, US`)\n\nThere are:\n- No config files\n- No hidden state\n- No persistent storage\n\n---\n\n## Security Model\n\nThis skill is intentionally conservative.\n\n- Uses Python standard library only\n- No package installs\n- No external downloads\n- No file system access beyond execution\n- No user data storage\n- No background execution\n- No elevated privileges\n\nNetwork behavior:\n- HTTPS only\n- Requests restricted to OpenWeather domains\n- Maximum of 2 API calls per request\n\nCredentials:\n- Reads only declared environment variables\n- Does not transmit credentials outside OpenWeather endpoints",
"changelogSource": "user",
"createdAt": 1772263611738,
"parsed": {
"clawdis": {
"emoji": "🌤️",
"primaryEnv": "OPENWEATHER_API_KEY",
"requires": {
"bins": [
"python3"
],
"env": [
"OPENWEATHER_API_KEY"
]
}
}
},
"version": "1.0.2"
},
"owner": {
"_creationTime": 0,
"_id": "publishers:missing",
"displayName": "Joshua Ensley",
"handle": "joshua-ensley",
"image": "https:\/\/avatars.githubusercontent.com\/u\/159086557?v=4",
"kind": "user",
"linkedUserId": "kn73mz132da731a652eq1rfqns7zet3v"
},
"ownerHandle": "joshua-ensley",
"skill": {
"_creationTime": 1772262691934,
"_id": "kd767bse0jjhw23btvexmfs0w18217t8",
"badges": [],
"createdAt": 1772262691934,
"displayName": "OpenWeather",
"latestVersionId": "k970rzv84r5qqajzfx4wsf3y4n821wsb",
"ownerUserId": "kn73mz132da731a652eq1rfqns7zet3v",
"slug": "openweather",
"stats": {
"comments": 0,
"downloads": 284,
"installsAllTime": 1,
"installsCurrent": 1,
"stars": 0,
"versions": 3
},
"summary": "Get current weather, hourly forecasts, and 8-day daily forecasts for any location worldwide using OpenWeather One Call API 3.0. Use when the user asks about...",
"tags": {
"latest": "k970rzv84r5qqajzfx4wsf3y4n821wsb"
},
"updatedAt": 1772266910666
}
}