fetch-weather-report — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fetch-weather-report (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
location (required, string): The city and state/country to search weather for (e.g. "San Francisco, CA").units (optional, string): The unit system to use, either "metric" or "imperial". Default is "metric".Run via the executable bash script:
./run.sh [path/to/inputs.json]Python runtime contract:
run.sh uses the first available interpreter in this order: skill .venv/bin/python, workflow .venv/bin/python, then required $AI_MIME_PYTHON_PATH.requirements.txt exists, include these exact build/repair commands for the developer to set up the virtualenv before packaging or for manual troubleshooting: "$AI_MIME_UV_PATH" venv .venv --python "$AI_MIME_PYTHON_PATH"
"$AI_MIME_UV_PATH" pip install -r requirements.txt --python .venv/bin/python.venv when executing the skill.weather_summary (dict):location (string): Resolved location name.temperature (float): Current temperature.condition (string): Weather condition description.The script outputs progress logs on stderr to track execution progress. All logs must be written in clear, natural language suitable for an end-user overlay. Do not use structured JSON logs.
If the weather API fails or is unreachable, the execution falls back to performing a Google search for current weather and scraping the temperature using browser_harness. See references/fallback_plan.md for manual or automated fallback instructions.
If the weather condition string returned by the API is fuzzy, the script calls ask_llm to categorize the weather condition into standard types ("Sunny", "Cloudy", "Rainy", "Snowy", "Unknown").
from llm_resolver import ask_llm
decision = ask_llm(
prompt=f"Categorize this weather description: '{raw_desc}'",
schema={
"type": "object",
"properties": {
"category": {"type": "string", "enum": ["Sunny", "Cloudy", "Rainy", "Snowy", "Unknown"]}
},
"required": ["category"]
}
)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.