Skip to content
Skillpedia
Web scraping48k · #4534

weather-observation-fetching

Lets your agent retrieve weather observations from reliable sources. It preserves important information like station ID and time.

What it does

This tool fetches and retrieves actual weather data, like flight reports (METARs) and historical data, from official sources. It ensures important information such as station identity, time, units, and quality indicators are preserved.

When to use it

  • ✓When you need recent weather reports for specific airports.
  • ✓To get historical surface data from a region or country.
  • ✓When you need information about the location, equipment, or history of weather stations.

Example of what to ask your AI

“Provide me with METAR reports from the last 2 hours for São Paulo (CG24) and Rio de Janeiro (SBGL) airports.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/weather-observation-fetching/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/weather-observation-fetching/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool connects to reliable weather data sources, like government APIs. It searches for the requested data, keeping all original details, and presents it in an organized manner.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill weather-observation-fetching

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/weather-observation-fetching/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Weather Observation Fetching

Overview

Retrieve measured surface and upper-air weather reports without losing station identity, observation time, units, raw values, or provider quality flags. Pick the source by observation type and retention need, then validate the returned records before normalization.

This skill covers METARs, historical surface observations, radiosondes, and station metadata. It excludes model output, radar volumes, and satellite imagery.

When to Use This Skill

  • A task needs recent METAR observations for named stations or a small region.
  • Historical hourly or synoptic surface data is needed from NOAA NCEI.
  • A sounding workflow needs observed radiosonde profiles rather than model profiles.
  • Station identifiers, relocations, instruments, or metadata must be resolved.
  • A fetch returned duplicate, stale, unit-ambiguous, or quality-flagged values.

Do not use forecast products as observations, and do not substitute a nearby model grid point for a missing station report without explicit approval.

Choose the Source

Need Preferred source Notes
Recent aviation surface reports NOAA Aviation Weather Center Data API Query a small station/time set; use published cache files for bulk current data.
Historical global surface reports NOAA NCEI Integrated Surface Database (ISD) Preserve USAF/WBAN identity, units, and QC fields.
Historical or recent radiosondes NOAA NCEI IGRA Use the station inventory and retain level and QC metadata.
Station history and identifier changes NOAA NCEI station history/HOMR Resolve moves, renames, and observing-platform changes.

Prefer an existing project adapter when it already handles the provider's schema, retries, and cache. Record the exact endpoint or archive object used.

Define the Observation Request

Resolve these values before fetching:

  • observation type and variables;
  • station identifier system, not just the identifier string;
  • start and end instants in UTC, including interval inclusivity;
  • maximum acceptable observation age;
  • raw, decoded, or both output forms;
  • required quality flags and policy for rejected values;
  • output units and missing-value representation;
  • cache location and retention.

For spatial queries, also define the search geometry, distance limit, and how a station is selected. Return the selected station and distance rather than silently using the nearest report.

Fetch Recent METARs

The Aviation Weather Center exposes machine-readable METAR data under /api/data/metar. Send a descriptive user agent, keep the query narrow, and handle a valid 204 No Content separately from an error.

import json
from urllib.error import HTTPError
from urllib.parse import urlencode
from urllib.request import Request, urlopen


def fetch_metars(stations, hours=2):
    station_ids = sorted({station.strip().upper() for station in stations})
    if not station_ids or any(len(station) != 4 for station in station_ids):
        raise ValueError("use one or more four-character ICAO station IDs")
    if not 1 <= hours <= 24:
        raise ValueError("hours must be between 1 and 24 for this narrow query")

    query = urlencode({
        "ids": ",".join(station_ids),
        "format": "json",
        "hours": hours,
    })
    request = Request(
        f"https://aviationweather.gov/api/data/metar?{query}",
        headers={"User-Agent": "weather-observation-fetching/1.0 contact@example.org"},
    )
    try:
        with urlopen(request, timeout=30) as response:
            if response.status == 204:
                return []
            records = json.load(response)
    except HTTPError as exc:
        if exc.code == 429:
            raise RuntimeError("AWC rate limit reached; honor Retry-After") from exc
        raise

    if not isinstance(records, list):
        raise RuntimeError("unexpected METAR response shape")
    return records

Replace the example contact address with an appropriate project contact. For a large current snapshot, download the provider's compressed cache file once instead of issuing many station queries.

Fetch Historical Surface Data

For ISD:

  1. Resolve the station using the current station inventory and its USAF/WBAN identifiers.
  2. Confirm that the station's coverage overlaps the requested time range.
  3. Use bulk HTTPS files for a large historical request; avoid one network call per observation.

…

FAQ

What are METARs?

METARs are standardized reports of weather observations at airports, primarily used for aviation.

What types of weather data does it fetch?

It fetches surface observations (like METARs) and upper-air data (radiosondes), as well as station metadata. It does not fetch forecasts or satellite imagery.

Why is it important to preserve 'station identity' and 'quality flags'?

Preserving identity ensures you know exactly where the data came from. Quality flags indicate whether the data is reliable or might have issues.

Details

Original description by the author

Retrieve surface and upper-air weather observations from authoritative APIs and archives with station identity, time, units, and quality flags preserved.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#4534
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills