风险评分

94/100 (Very Low)

OpenClaw: benign
VirusTotal: benign
StaticScan: unknown

OpenWeather

作者: Joshua Ensley
Slug:openweather
版本:1.0.2
更新时间:2026-02-28 16:21:50
风险信息

OpenClaw: benign

查看 OpenClaw 分析摘要(前 200 字预览)
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

README 未提供

文件列表

无文件信息

下载
下载官方 ZIP
原始 JSON 数据
{
    "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
    }
}