detect-objects
Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use…
Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.
Claude Code
$ npx -y skills add opengeos/geoai-skills --skill download-data --agent claude-code
Codex
$ npx skills add opengeos/geoai-skills --skill download-data -a codex -y
Cursor
$ npx skills add opengeos/geoai-skills --skill download-data -a cursor -y
Gemini CLI
$ npx skills add opengeos/geoai-skills --skill download-data -a gemini-cli -y
GitHub Copilot
$ npx skills add opengeos/geoai-skills --skill download-data -a github-copilot -y
OpenCode
$ npx skills add opengeos/geoai-skills --skill download-data -a opencode -y
Windsurf
$ npx skills add opengeos/geoai-skills --skill download-data -a windsurf -y
name: download-data description: > Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year. argument-hint: <minx,miny,maxx,maxy> [--year YYYY] [--output DIR] [--max-items N] allowed-tools: Bash
You are helping the user download NAIP aerial imagery using geoai.
Input: `$@`
Follow these steps in order.
Extract the bounding box from the first argument (comma-separated `minx,miny,maxx,maxy`).
Parse optional flags from remaining arguments:
If the input is natural language (e.g. "download NAIP imagery for Knoxville, TN"), extract or infer the bounding box. If you cannot determine the bbox, ask the user for coordinates.
Confirm the bounding box has 4 numeric values and represents a valid geographic extent:
If validation fails, report the issue and ask for corrected coordinates.
python3 -c "
import geoai, os
bbox = (MINX, MINY, MAXX, MAXY)
output_dir = 'OUTPUT_DIR'
os.makedirs(output_dir, exist_ok=True)
result = geoai.download_naip(
bbox=bbox,
output_dir=output_dir,
year=YEAR,
max_items=MAX_ITEMS,
)
if isinstance(result, list):
for f in result:
size_mb = os.path.getsize(f) / (1024 * 1024) if os.path.exists(f) else 0
print(f'{f} ({size_mb:.1f} MB)')
print(f'Total files: {len(result)}')
elif isinstance(result, str):
size_mb = os.path.getsize(result) / (1024 * 1024) if os.path.exists(result) else 0
print(f'{result} ({size_mb:.1f} MB)')
else:
print(f'Result: {result}')
"Replace `MINX`, `MINY`, `MAXX`, `MAXY`, `OUTPUT_DIR`, `YEAR`, and `MAX_ITEMS` with actual values.
For the year parameter:
If a state directory exists, update it with the downloaded file paths:
STATE_DIR="" test -f .geoai-skills/state.json && STATE_DIR=".geoai-skills" PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")" PROJECT_ID="$(echo "$PROJECT_ROOT" | tr '/' '-')" test -f "$HOME/.geoai-skills/$PROJECT_ID/state.json" && STATE_DIR="$HOME/.geoai-skills/$PROJECT_ID"
If `STATE_DIR` is set:
python3 -c "
import json, os
state_file = 'STATE_DIR/state.json'
state = {}
if os.path.exists(state_file):
with open(state_file) as f:
state = json.load(f)
state.setdefault('downloaded_files', [])
state['downloaded_files'].extend(DOWNLOADED_FILES)
with open(state_file, 'w') as f:
json.dump(state, f, indent=2)
"Summarize the download:
Then suggest: *"Use `/geoai-skills:inspect-geo` to examine the downloaded imagery, or `/geoai-skills:detect-objects` to run AI models on it."*
A Claude Code plugin that adds GeoAI-powered skills for geospatial data exploration, satellite imagery download, AI-based object detection, and session memory. Built on the GeoAI Python library.
Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use…
Inspect any raster or vector geospatial file. Returns CRS, bounds, bands, resolution, dtype, attribute summaries, and band…
Verify that the geoai Python package is installed and functional. If not, provide installation instructions. Optionally check…
Download Overture Maps data (buildings, places, roads, land use, water, etc.) for a bounding box. Returns a GeoDataFrame saved as…
Process raster data: clip by bounding box, stack multiple bands, mosaic GeoTIFFs, or convert between raster and vector formats.
Search past Claude Code session logs to recover context from previous conversations. Finds past decisions, data paths, CRS info,…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…