Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add itechmeat/llm-code --skill "open-meteo"
Install specific skill from multi-skill repository
# Description
Integrate Open-Meteo Weather Forecast, Air Quality, and Geocoding APIs: query design, variable selection, timezone/timeformat/units, multi-location batching, and robust error handling. Keywords: Open-Meteo, /v1/forecast, /v1/air-quality, geocoding-api, hourly, daily, current, timezone=auto, timeformat=unixtime, models, WMO weather_code, CAMS, GeoNames, httpx, FastAPI, pytest.
# SKILL.md
name: open-meteo
description: "Integrate Open-Meteo Weather Forecast, Air Quality, and Geocoding APIs: query design, variable selection, timezone/timeformat/units, multi-location batching, and robust error handling. Keywords: Open-Meteo, /v1/forecast, /v1/air-quality, geocoding-api, hourly, daily, current, timezone=auto, timeformat=unixtime, models, WMO weather_code, CAMS, GeoNames, httpx, FastAPI, pytest."
version: "1.4.17"
release_date: "2025-11-07"
Open Meteo
When to use
- You need weather forecasts (hourly/daily/current) for coordinates.
- You need air quality / pollen forecasts (hourly/current) for coordinates.
- You need to resolve a user-provided place name to coordinates and timezone (geocoding).
- You need to support multi-location batching (comma-separated lat/lon lists).
- You need a deterministic checklist for Open-Meteo query parameters, response parsing, and error handling.
Goal
Provide a reliable, production-friendly way to call Open-Meteo APIs (Forecast, Air Quality, Geocoding), choose variables, control time/units/timezone, and parse responses consistently.
Steps
-
Pick the correct API and base URL
-
Forecast:
https://api.open-meteo.com/v1/forecast - Air Quality:
https://air-quality-api.open-meteo.com/v1/air-quality -
Geocoding:
https://geocoding-api.open-meteo.com/v1/search -
Resolve coordinates (if you only have a name)
-
Call Geocoding with
nameand optionallanguage,countryCode,count. -
Use the returned
latitude,longitude, andtimezonefor subsequent calls. -
Design your time axis (timezone, timeformat, and range)
-
Prefer
timezone=autowhen results must align to local midnight. - If you request
daily=..., settimezone(docs: daily requires timezone). - Choose
timeformat=iso8601for readability, ortimeformat=unixtimefor compactness.- If using
unixtime, remember timestamps are GMT+0 and you must applyutc_offset_secondsfor correct local dates.
- If using
-
Choose range controls:
forecast_daysand optionalpast_days, or- explicit
start_date/end_date(YYYY-MM-DD), and for sub-dailystart_hour/end_hour.
-
Choose variables minimally (avoid "download everything")
-
Forecast: request only the variables you need via
hourly=...,daily=...,current=.... - Air Quality: request only the variables you need via
hourly=...,current=.... -
Keep variable names exact; typos return a JSON error with
error: true. -
Choose units and model selection deliberately
-
Forecast units:
temperature_unit(celsius/fahrenheit)wind_speed_unit(kmh/ms/mph/kn)precipitation_unit(mm/inch)
- Forecast model selection:
- default
models=auto/ “Best match” combines the best models. - you can explicitly request models via
models=.... - provider-specific forecast endpoints also exist (provider implied by path). See
references/models.md(section "Endpoints vsmodels=") for examples and doc links. - for provider/model-specific selection tradeoffs, see
references/models.md.
- default
-
Air Quality domain selection:
domains=auto(default) orcams_europe/cams_global.
-
Implement robust request/response handling
-
Treat HTTP errors and JSON-level errors separately.
- JSON error format is:
{"error": true, "reason": "..."}
- When requesting multiple locations (comma-separated coordinates), expect the JSON output shape to change to a list of structures.
-
Optionally use
format=csvorformat=xlsxwhen you need data export. -
Validate correctness with a “known city” check
- Geocode “Berlin” → Forecast
hourly=temperature_2mfor 1–2 days → verify timezone and array lengths. - Air Quality
hourly=pm10,pm2_5,european_aqi→ verify units and presence ofhourly_units.
Critical prohibitions
- Do not include out-of-scope APIs in this skill’s implementation guidance: Historical Weather, Ensemble Models, Seasonal Forecast, Climate Change, Marine, Satellite Radiation, Elevation, Flood.
- Do not omit
timezonewhen requestingdailyvariables (per docs). - Do not assume
unixtimetimestamps are local time; they are GMT+0 and requireutc_offset_secondsadjustment. - Do not silently ignore
{"error": true}responses; fail fast with the providedreason. - Do not request huge variable sets by default; keep queries minimal to reduce payload and avoid accidental overuse.
Definition of done
- You can geocode a place name and obtain coordinates/timezone.
- You can fetch Forecast data with at least one
hourly, onedaily(with timezone), and onecurrentvariable. - You can fetch Air Quality data for at least one pollutant and one AQI metric.
- Your client code handles both HTTP-level failures and JSON-level
error: truewith clear messages. - Attribution requirements from the docs are captured for Air Quality (CAMS) and Geocoding (GeoNames).
Links
- Official docs (in-scope):
- https://open-meteo.com/en/docs
- https://open-meteo.com/en/docs/air-quality-api
- https://open-meteo.com/en/docs/geocoding-api
- Skill references:
references/forecast-api.mdreferences/models.mdreferences/weather-codes.mdreferences/air-quality-api.mdreferences/geocoding-api.mdreferences/examples.md
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.