weather-model-data-fetching
Lets your agent fetch weather forecast data from public archives. It uses efficient methods to get the needed information.
What it does
This tool downloads weather forecast data from complex meteorological models. It does so efficiently by fetching only the necessary parts of files, rather than downloading everything.
When to use it
- ✓When you need specific data from models like GFS or HRRR.
- ✓If you are downloading forecast data that is too large to handle all at once.
- ✓When a previous download failed, was interrupted, or is too slow.
Example of what to ask your AI
“Download HRRR model pressure data for April 12, 2023, 00Z, for forecast hour +3.”
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
Ready-to-paste message
How it works
The tool first checks what data is needed and where to find it. Then, it requests only those specific parts of the data files, using an 'addressing' system to ensure only what's required is downloaded and stored.
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-model-data-fetchingOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/weather-model-data-fetching/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Weather Model Data Fetching
Overview
Fetch numerical weather prediction data without treating a multi-gigabyte GRIB2 file as one indivisible download. Prefer an existing project adapter or Herbie; use direct object-store byte ranges only when the supported path cannot express the request.
This skill covers transport, inventory selection, caching, and verification. It does not interpret the forecast or decide whether a model is meteorologically appropriate.
When to Use This Skill
- A task needs GFS, GEFS, HRRR, RAP, NAM, IFS, or similar model output.
- Data lives in a public AWS S3 bucket, NOMADS, or a public cloud mirror.
- The input is GRIB2 and only selected variables or levels are needed.
- A point, sounding, time series, map, or batch job needs a reliable fetch path.
- A download is missing, partial, unexpectedly large, slow, or hard to resume.
Do not activate this skill for ordinary weather-forecast questions that do not require model files.
Define the Request First
Resolve these values before downloading:
- model and product;
- initialization cycle in UTC;
- forecast hour and therefore valid time (
valid = initialization + lead); - ensemble member when applicable;
- variables, vertical levels, and surface fields;
- point, region, or full-grid output;
- cache location and when the downloaded data may be deleted.
Confirm that the cycle is complete, the forecast hour exists for that cycle,
and the requested location is inside the model domain. A recent 404 often
means the cycle is not published yet; step back to a completed cycle instead of
retrying indefinitely.
Choose the Smallest Retrieval Route
- Reuse the project's existing fetch/cache abstraction when it already handles the model.
- Use Herbie for a supported GRIB2 model. It discovers AWS, NOMADS, Google, Azure, and other configured sources and understands their key layouts.
- Use a provider-native point or Zarr endpoint when the task needs a tiny spatial slice from many times or members.
- Use direct S3 or HTTPS object access when the key is known and no suitable adapter exists.
Do not recursively list a large public bucket to discover one run. Build the documented prefix for the model, cycle, product, forecast hour, and member, then probe that exact object and its inventory.
Use an explicit provider priority and record the provider that succeeded. A fallback must refer to the same model run, product, member, and forecast hour; never silently substitute a different forecast.
Subset GRIB2 by Inventory
GRIB2 files contain consecutive messages. A companion inventory such as
.idx, .grib2.idx, or .grb2.inv records each message's starting byte.
- Fetch the small inventory first.
- Inspect its actual rows before writing a regex.
- Select exact variables, levels, and forecast-step records.
- Set each selected message's end byte to one less than the next message's start; request the final selected message through EOF when no end is known.
- Coalesce adjacent selected messages into one range.
- Issue one
Range: bytes=START-ENDrequest per range. S3 does not support multiple ranges in oneGetObjectrequest. - Require
206 Partial Contentand a matchingContent-Range. If a server answers200, do not append the whole object as though it were a fragment. - Pin the object's length and identity (
ETagand/orLast-Modified) while downloading. Discard fragments if the object changes. - Assemble into a temporary file, verify it with a GRIB decoder, then rename atomically into the cache.
A GRIB message contains one field over its grid. Message-range subsetting saves variables and levels, not geography. A point request still downloads the full grid for every selected message unless the provider offers a point, regional, Zarr, or other chunked endpoint.
Herbie Example
Use the current search argument; searchString is deprecated. Start from the
inventory, fail on an empty match, and keep the download directory explicit.
from pathlib import Path
from herbie import Herbie
PRESSURE_FIELDS = (
r":(?:HGT|TMP|RH|SPFH|UGRD|VGRD):\d+(?:\.\d+)? mb:"
)
def fetch_hrrr_pressure_run(initialization, forecast_hour, cache_dir):
cache_dir = Path(cache_dir)
h = Herbie(
initialization,
model="hrrr",
product="prs",
fxx=forecast_hour,
priority=["aws", "nomads", "google", "azure"],
save_dir=cache_dir,
verbose=False,
…
FAQ
What is 'numerical weather prediction data'?
It's detailed information generated by computers that simulates the atmosphere to predict the weather. This data is used by meteorologists to create forecasts.
Why download only 'parts' of a file?
Weather forecast files can be huge (gigabytes). Downloading only the parts you need saves time, data, and storage space.
What is GRIB2?
It's a common file format used for storing weather data. It's efficient but can be complex to work with without specific tools.
Details
Original description by the author
Retrieve numerical weather prediction data from public AWS S3 and HTTP archives using GRIB2 inventories, byte ranges, Herbie, provider fallbacks, and verified caching.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4532
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
data-scraper-agent
Helps your agent automatically collect data from any public source. It can be scheduled, enrich information, and save results. Useful for monitoring or tracking online data.
affaan-m/ECC
Apify Automation
Has your agent automatically collect data from the web using the Apify platform. It can run scraping tasks and extract information.
ComposioHQ/awesome-claude-skills
Firecrawl Automation
Helps your agent extract data from the web. It can scrape pages, crawl sites, and organize information.
ComposioHQ/awesome-claude-skills