SkillAgentSearch skills...

usgs-data-download

Download water level data from USGS using the dataretrieval package

Install / Use

npx skills add benchflow-ai/skillsbench --skill usgs-data-download

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

86/100

Supported Platforms

Universal

Our assessment of usgs-data-download

usgs-data-download scores 86/100 on our quality scale, 1578th of 3,997 Development & Engineering skills we index (top 40%).

Its SKILL.md is 3.5 KB long, well organised into 15 sections with 4 code examples: a solid amount of guidance for an agent.

With 1,813 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
26/30
Structure
20/20
Description
12/15
Adoption
14/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated about 2 months ago, so usgs-data-download is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

usgs-data-download compared with similar skills

All 4 of these similar skills score higher than usgs-data-download; compare them before choosing.

SkillScoreStarsUpdatedFormat
usgs-data-download (this skill)by benchflow-ai861.8k2mo agoSKILL.md
Agent-Reachby Panniantong10086.4k15d agoCLAUDE.md
headroomby headroomlabs-ai10074.2ktodayCLAUDE.md
ai-job-searchby MadsLorentzen10044.6ktodayCLAUDE.md
claude-howtoby luongnv8910041.7ktodayCLAUDE.md

Frequently asked questions

How do I install usgs-data-download?
Run npx skills add benchflow-ai/skillsbench --skill usgs-data-download. The install tabs above show the steps for each supported agent.
Which AI agents does usgs-data-download work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is usgs-data-download safe to use?
It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is usgs-data-download still maintained?
The repository was last updated about 2 months ago, so usgs-data-download is actively maintained.

name: usgs-data-download description: Download water level data from USGS using the dataretrieval package. Use when accessing real-time or historical streamflow data, downloading gage height or discharge measurements, or working with USGS station IDs. license: MIT

USGS Data Download Guide

Overview

This guide covers downloading water level data from USGS using the dataretrieval Python package. USGS maintains thousands of stream gages across the United States that record water levels at 15-minute intervals.

Installation

pip install dataretrieval

nwis Module (Recommended)

The NWIS module is reliable and straightforward for accessing gage height data.

from dataretrieval import nwis

# Get instantaneous values (15-min intervals)
df, meta = nwis.get_iv(
    sites='<station_id>',
    start='<start_date>',
    end='<end_date>',
    parameterCd='00065'
)

# Get daily values
df, meta = nwis.get_dv(
    sites='<station_id>',
    start='<start_date>',
    end='<end_date>',
    parameterCd='00060'
)

# Get site information
info, meta = nwis.get_info(sites='<station_id>')

Parameter Codes

| Code | Parameter | Unit | Description | |------|-----------|------|-------------| | 00065 | Gage height | feet | Water level above datum | | 00060 | Discharge | cfs | Streamflow volume |

nwis Module Functions

| Function | Description | Data Frequency | |----------|-------------|----------------| | nwis.get_iv() | Instantaneous values | ~15 minutes | | nwis.get_dv() | Daily values | Daily | | nwis.get_info() | Site information | N/A | | nwis.get_stats() | Statistical summaries | N/A | | nwis.get_peaks() | Annual peak discharge | Annual |

Returned DataFrame Structure

The DataFrame has a datetime index and these columns:

| Column | Description | |--------|-------------| | site_no | Station ID | | 00065 | Water level value | | 00065_cd | Quality code (can ignore) |

Downloading Multiple Stations

from dataretrieval import nwis

station_ids = ['<id_1>', '<id_2>', '<id_3>']
all_data = {}

for site_id in station_ids:
    try:
        df, meta = nwis.get_iv(
            sites=site_id,
            start='<start_date>',
            end='<end_date>',
            parameterCd='00065'
        )
        if len(df) > 0:
            all_data[site_id] = df
    except Exception as e:
        print(f"Failed to download {site_id}: {e}")

print(f"Successfully downloaded: {len(all_data)} stations")

Extracting the Value Column

# Find the gage height column (excludes quality code column)
gage_col = [c for c in df.columns if '00065' in str(c) and '_cd' not in str(c)]

if gage_col:
    water_levels = df[gage_col[0]]
    print(water_levels.head())

Common Issues

| Issue | Cause | Solution | |-------|-------|----------| | Empty DataFrame | Station has no data for date range | Try different dates or use get_iv() | | get_dv() returns empty | No daily gage height data | Use get_iv() and aggregate | | Connection error | Network issue | Wrap in try/except, retry | | Rate limited | Too many requests | Add delays between requests |

Best Practices

  • Always wrap API calls in try/except for failed downloads
  • Check len(df) > 0 before processing
  • Station IDs are 8-digit strings with leading zeros (e.g., '04119000')
  • Use get_iv() for gage height, as daily data is often unavailable
  • Filter columns to exclude quality code columns (_cd)
  • Break up large requests into smaller time periods to avoid timeouts

Related Skills

View on GitHub
GitHub Stars1.8k
CategoryDevelopment
Updated2mo ago
Forks368

Languages

PDDL

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions