Skip to main content
skill CX Codex

earth2studio-data-fetch — Claude Code skill: weather data fetch

Maps a weather data request onto Earth2Studio sources: checks the lexicon for variable support and writes a Python script returning an xarray DataArray.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add NVIDIA/skills --skill earth2studio-data-fetch -a claude-code
Open on GitHub

What earth2studio-data-fetch does

Give it a variable set and a time window and the skill works through the request: plain-language names get mapped onto Earth2Studio vocabulary, then the live docs and the lexicon file for each candidate source are pulled up. A variable missing from a source's VOCAB simply cannot come out of that source, so the shortlist narrows quickly.

The deliverable is a runnable script. Analysis sources are called as ds(time, variable); forecast sources also take a lead time, ds(time, lead_time, variable). Either way the result is an xarray DataArray, with a few lines for inspecting shape and coordinates. Constructor arguments vary between sources, and the API page gets fetched before any code is written.

What has to be in place first: Earth2Studio itself (uv pip install earth2studio), Python 3.10+, and a route to the remote stores. CDS-backed sources fail without an API key in ~/.cdsapirc. Data is cached locally through EARTH2STUDIO_CACHE, so a repeat request for the same slice reads from that cache instead of the network.

What it helps with

  • find a source that actually carries z850
  • write a fetch script without guessing constructor arguments
  • compare a reanalysis source against an operational one
  • tell an analysis source from a forecast source by its call signature
  • dump a fetch result to NetCDF

Example prompts for the agent

  • Which Earth2Studio sources serve tp and msl, and do any of them cover North America?
  • Write me a fetch script for GFS_FX with hourly lead times and save it as NetCDF.
  • Does ARCO carry z850? Check the lexicon before answering.

How to install earth2studio-data-fetch

1Skills CLI (Vercel)

npx skills add NVIDIA/skills --skill earth2studio-data-fetch -a claude-code

2Manually: put the files in place

~/.claude/skills/earth2studio-data-fetch/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/earth2studio-data-fetch/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about earth2studio-data-fetch

How do I install earth2studio-data-fetch in Claude Code?

Run npx skills add NVIDIA/skills --skill earth2studio-data-fetch -a claude-code. The skill lands at ~/.claude/skills/earth2studio-data-fetch/SKILL.md.

What does earth2studio-data-fetch do?

It picks Earth2Studio data sources for the variables and times you asked for, verifies them against the lexicon, and produces a Python fetch script that returns an xarray DataArray.

What do I need before using it?

Earth2Studio installed, Python 3.10+, and network access to the remote data stores. Sources backed by CDS also need an API key in ~/.cdsapirc.

Source text

SKILL.md · Apache-2.0
---
name: earth2studio-data-fetch
version: 0.16.0
license: Apache-2.0
metadata:
  author: NVIDIA Earth-2 Team
  tags:
    - earth2studio
    - earth2
    - python
    - data-fetch
    - weather-data
    - xarray
description: >
  Fetch weather/climate data via Earth2Studio data sources for specific variables
  and times. Do NOT use for inference pipelines, model discovery, or installation.
---

# Earth2Studio Data Fetch Skill

## Purpose

Guide a user through downloading weather/climate data via Earth2Studio data source
APIs. Identifies compatible sources by checking the lexicon, verifies variable
support, and produces a working fetch script outputting an xarray DataArray.

## Prerequisites

- Earth2Studio installed (`uv pip install earth2studio` or equivalent)
- Network access to remote data stores (GCS, S3, CDS API, etc.)
- For CDS-based sources: valid CDS API key configured (`~/.cdsapirc`)
- Python 3.10+

## Instructions

You are helping a user download specific weather/climate data using
Earth2Studio's data source APIs. Your job is to identify which data source(s)
can provide the requested variables, verify compatibility via the lexicon
system, and produce a working fetch script.

### Core principle: live docs and lexicon are the source of truth

Data source APIs, available variables, and the lexicon evolve between releases.
Before recommending a data source or writing a fetch script:

1. **Fetch the relevant data source doc page** to confirm the API signature
   and constructor arguments.
2. **Check the lexicon** to verify the requested variable is supported by
   that data source.

Live doc references (fetch only what the user's request requires):

- **Analysis data sources:**
  <https://nvidia.github.io/earth2studio/modules/datasources_analysis.html>
- **Forecast data sources:**
  <https://nvidia.github.io/earth2studio/modules/datasources_forecast.html>
- **DataFrame data sources:**
  <https://nvidia.github.io/earth2studio/modules/datasources_dataframe.html>
- **Lexicon base:**
  <https://github.com/NVIDIA/earth2studio/blob/main/earth2studio/lexicon/base.py>
- **Lexicon per-source:**
  <https://github.com/NVIDIA/earth2studio/tree/main/earth2studio/lexicon>

### Interaction protocol

#### Step 1. Understand the user's request

Extract from what the user has said (ask follow-ups if needed, cap at 3
questions):

- **Variables** — what do they want? Use Earth2Studio variable names
  (e.g. `t2m`, `u500`, `z850`, `tp`, `msl`). If the user uses plain language
  ("500 hPa geopotential height"), map it to the E2Studio name by checking
  the live `base.py` E2STUDIO_VOCAB.
- **Time** — what date/time range? A single timestamp, a range, or multiple
  discrete times?
- **Data type** — analysis/reanalysis (historical state) or forecast (lead-time based)?
- **Lead time** (forecast only) — how far ahead? Which initialization time?
- **Region** — global or regional (e.g. North America for HRRR)?
- **Output format** — xarray DataArray (default), save to file (NetCDF/Zarr)?

#### Step 2. Identify candidate data sources

Based on the request type, narrow candidates:

**Analysis/reanalysis** (historical state at a specific time):

- Use analysis data source page to identify options
- Common choices: GFS (operational, recent), HRRR (NA, hourly),
  IFS/IFS_ENS (ECMWF), ARCO/CDS/WB2ERA5/NCAR_ERA5 (ERA5 reanalysis),
  GOES/MRMS/JPSS (observational)

**Forecast** (predictions from an initialization time with lead times):

- Use forecast data source page to identify options
- Common choices: GFS_FX, GEFS_FX, HRRR_FX, IFS_FX, IFS_ENS_FX,
  AIFS_FX, CFS_FX

Key differentiators to surface:

- **Temporal coverage** — operational sources (GFS, HRRR) have limited
  history; reanalysis (ERA5 via ARCO/CDS/WB2) goes back decades
- **Spatial resolution** — HRRR is 3km NA-only; GFS is 0.25° global;
  WB2ERA5_32x64 is 5.625° global
- **Update frequency** — some are real-time, some have multi-day lag

#### Step 3. Verify variable support via lexicon

This is critical. Each data source has a lexicon file that defines which
E2Studio variables it can provide.

To verify:

1. Fetch the source's lexicon file from
   `https://github.com/NVIDIA/earth2studio/blob/main/earth2studio/lexicon/<source>.py`
   (e.g. `gfs.py`, `hrrr.py`, `cds.py`, `arco.py`, `wb2.py`)
2. Check that the user's requested variable(s) appear as keys in the
   source's `VOCAB` dict
3. If a variable is NOT in a source's lexicon, that source cannot provide
   it — try another

The lexicon VOCAB maps Earth2Studio variable names → source-specific
identifiers. If a variable key exists in the VOCAB, the source supports it.

Present the results clearly: *"GFS supports `t2m`, `u500`, `z850`. HRRR also
supports these but is limited to North America. ARCO (ERA5) supports all
three and has data back to 1959."*

#### Step 4. Confirm data source selection with user

Present the viable options with tradeoffs:

| Source | Variables | Coverage | Resolution | Time Range |
|--------|-----------|----------|------------|------------|
| ... | ... | ... | ... | ... |

Let the user pick. If there's one obvious choice, recommend it and ask for
confirmation.

#### Step 5. Generate fetch script

Write a Python script that uses the selected data source to fetch the
requested data. The script structure depends on whether it's an analysis or
forecast source.

**Analysis source pattern:**

```python
import datetime
from earth2studio.data import <SourceClass>

# Initialize data source
ds = <SourceClass>()

# Fetch data
# Analysis sources use: ds(time, variable) -> xr.DataArray
time = [datetime.datetime(YYYY, M, D, H)]  # or array of times
variable = ["var1", "var2"]  # E2Studio variable names

data = ds(time, variable)
```

**Forecast source pattern:**

```python
import datetime
from earth2studio.data import <SourceClass>

# Initialize data source
ds = <SourceClass>()

# Forecast sources use: ds(time, lead_time, variable) -> xr.DataArray
time = [datetime.datetime(YYYY, M, D, H)]  # initialization time
lead_time = [datetime.timedelta(hours=H)]   # or array of lead times
variable = ["var1", "var2"]

data = ds(time, lead_time, variable)
```

Always fetch the specific data source's API doc page to confirm the exact
constructor arguments and call signature before writing the script — they can
vary (some need auth tokens, cache paths, specific parameters).

Include in the script:

- Appropriate imports
- Clear comments explaining each step
- How to inspect the result (`print(data)`, `data.shape`, `data.coords`)
- Optional: saving to file if the user requested it

#### Step 6. Offer next steps

After delivering the script, mention:

- How to change variables/times without rewriting the whole thing
- If they might want to feed this into a model, point them to the
  discover skill
- Cache behavior (data is cached locally after first fetch via
  `EARTH2STUDIO_CACHE`)

### Ownership and out-of-scope

**Owns:** identifying data sources for a user's variable/time request,
verifying variable support via lexicon, generating data fetch scripts,
explaining analysis vs. forecast source differences.

**Does not own:** installation (earth2studio-install), model selection
(earth2studio-discover), inference pipelines, custom data source creation
(point to extend examples), data source authentication setup beyond what
the docs describe.

## Examples

Typical invocation:

> "I need 500 hPa geopotential height and 2m temperature from ERA5
> for January 1, 2020 at 00Z."

The skill would:

1. Map plain language → `z500`, `t2m`
2. Check ARCO/CDS/WB2ERA5 lexicons for support
3. Recommend ARCO (free, no API key) or CDS (official, needs key)
4. Generate a fetch script using the selected source

## Limitations

- **Network required** — all data sources fetch from remote stores
  (GCS, S3, CDS API)
- **No local file loading** — for local NetCDF/Zarr, use
  `DataArrayFile`/`DataSetFile` directly
- **One source type per script** — cannot mix analysis and forecast
  sources in a single call
- **Variable availability varies** — not all sources provide all
  variables; always verify via lexicon
- **Rate limits** — CDS API has queue-based throttling; GCS/S3 sources
  are generally faster

## Troubleshooting

| Error | Cause | Solution |
|-------|-------|----------|
| `KeyError: '<var>'` | Not in lexicon | Check lexicon; try another source |
| `FileNotFoundError` / 404 | Time not available | Verify temporal coverage |
| `CDS API timeout` | Queue congestion | Retry or use ARCO for ERA5 |
| `ModuleNotFoundError` | Not installed | `uv pip install earth2studio` |
| Empty DataArray | Time/var mismatch | Check datetime and variable name |

© NVIDIA Earth-2 Team · Apache-2.0 · NVIDIA/skills

Similar skills

All skills for Data and databases →

From the same set194

nemo-automodel-launcher-config Configures NeMo AutoModel launches for interactive runs, Slurm clusters, and SkyPilot. Use it when launch YAML or multi-node settings need to be worked out. CX Codex +1 1,900installs nemo-automodel-model-onboarding Walks you through adding a new model architecture to NeMo AutoModel, from reading config.json to registering the class and writing tests. CX Codex +1 1,900installs nemo-automodel-recipe-development Guides the agent in creating and editing NeMo AutoModel training and evaluation recipes. It covers YAML configuration, builder functions, and CLI execution flow. CX Codex +1 1,900installs earth2studio-deterministic-forecast A skill that walks you through building a deterministic weather forecast script with Earth2Studio: model, data source, IO backend and inference. CX Codex +1 1,900installs earth2studio-discover Finds compatible Earth2Studio models, data sources, and gallery examples for climate workflows. It focuses on discovery, not inference code or data downloads. CX Codex +1 1,900installs earth2studio-install Walks you through installing Earth2Studio and picking the model extras you need. Useful when the environment has to be right before any forecasting work starts. CX Codex +1 1,900installs physicsnemo-discover An NVIDIA skill that finds the right model, datapipe or example in PhysicsNeMo for a SciML task. It points at files and writes no code. CX Codex +1 1,900installs digital-health-clinical-asr-finetune Skill for running stock NeMo SFT on Parakeet TDT v2 and measuring post-training KER. Useful at Stage 4 when priority Keyword Error Rate exceeds 0.3. CX Codex +1 1,900installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor