Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/steadfastasart/geoscience-skills/xarraynpx skills add SteadfastAsArt/geoscience-skills --skill xarraygit clone --depth 1 https://github.com/SteadfastAsArt/geoscience-skillsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00126 | $0.01494 |
| Opus 5 | $0.00063 | $0.00747 |
| Sonnet 5 | $0.00025 | $0.00299 |
| Haiku 4.5 | $0.00013 | $0.00149 |
Grade A, and why
xarray scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.
xarray - Multi-Dimensional Geoscience Data
Quick Reference
import xarray as xr
# Read
ds = xr.open_dataset('data.nc')
# Access data
temp = ds['temperature'] # DataArray
values = temp.values # numpy array
df = ds.to_dataframe() # pandas DataFrame
# Structure info
print(ds) # Overview
print(ds.dims) # Dimensions
print(ds.data_vars) # Variables
# Write
ds.to_netcdf('output.nc')
Key Classes
| Class | Purpose |
|---|---|
Dataset |
Collection of aligned DataArrays (like NetCDF file) |
DataArray |
Single variable with labeled dimensions |
Coordinates |
Dimension labels (time, lat, lon) |
Essential Operations
Select Data
# By coordinate value
temp_jan = ds['temperature'].sel(time='2020-01-15')
temp_region = ds['temperature'].sel(lat=slice(-30, 30), lon=slice(-60, 60))
# Nearest value
temp_point = ds['temperature'].sel(lat=35.5, lon=-120.3, method='nearest')
# By index
temp_first = ds['temperature'].isel(time=0)
Compute Statistics
temp = ds['temperature']
temp_mean_time = temp.mean(dim='time') # Spatial map
temp_mean_space = temp.mean(dim=['lat', 'lon']) # Time series
# Area-weighted mean
import numpy as np
weights = np.cos(np.deg2rad(ds.lat))
temp_weighted = temp.weighted(weights).mean(dim=['lat', 'lon'])
GroupBy and Resample
temp = ds['temperature']
# Temporal aggregations
monthly_mean = temp.groupby('time.month').mean()
annual_mean = temp.groupby('time.year').mean()
# Climatology and anomalies
climatology = temp.groupby('time.month').mean('time')
anomalies = temp.groupby('time.month') - climatology
# Resample time series
monthly = temp.resample(time='1M').mean()
rolling_30d = temp.rolling(time=30, center=True).mean()
Create New Dataset
import numpy as np
import pandas as pd
times = pd.date_range('2020-01-01', periods=365, freq='D')
lats = np.linspace(-90, 90, 180)
lons = np.linspace(-180, 180, 360)
da = xr.DataArray(
data=np.random.randn(365, 180, 360),
dims=['time', 'lat', 'lon'],
coords={'time': times, 'lat': lats, 'lon': lons},
attrs={'units': 'degC', 'long_name': 'Temperature'}
)
ds = xr.Dataset({'temperature': da})
ds.to_netcdf('output.nc')
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 180 lines · 126 tokens per session scan A f7bebb94ed09
xarray is a skill published in the GitHub repository SteadfastAsArt/geoscience-skills (54 stars, last pushed 5mo ago), licensed MIT. It adds 126 tokens to every session and 1,494 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
xarray-netcdf
Labeled multi-dimensional array analysis with xarray: NetCDF/HDF5 I/O, lazy Dask loading, rechunking, Zarr stores, and CF conventions.
glm-lake-mendota
Simulate vertical water temperature profiles for lakes using the General Lake Model (GLM), calibrate key parameters to minimize RMSE against field observations, and produce validated NetCDF output.
map-to-evo-schemas
Use when implementing the reader and geoscience-object builder for an Evo data converter — turning a parsed file into evo-schemas objects. Covers implementing read file, building Pointset/TriangleMesh/grid/etc. objects, uploading arrays via dataclient.savetable or the parquet-hash pattern, and setting CRS, bounding…
build-evo-converter
Use when building a complete new Evo data converter from scratch, end to end. Orchestrates the four phases — scaffolding, discovery, mapping to Evo geoscience objects, and testing — for turning a third-party geoscience file format into published Evo objects. Use for: 'build a converter for X', 'add support for a new…
converter-discovery
Use when starting a new Evo data converter and you need to understand the input file format before writing code. Inspects sample data, identifies the format, finds a suitable open-source reader library (license-checked), and maps the data to Evo geoscience object types. Use for: 'build a converter for X format', 'what…
obspy-seismology
Seismological data analysis with ObsPy — FDSN waveform download, response removal, phase picking, moment tensor inversion, and seismicity mapping.