From geoai-skills
Searches and downloads satellite imagery from Microsoft Planetary Computer STAC catalog using geoai. Browses collections, queries by bbox/time range, lists assets, downloads items.
npx claudepluginhub opengeos/geoai-skills --plugin geoai-skillsThis skill is limited to using the following tools:
You are helping the user search and download satellite imagery from the
Downloads NAIP aerial imagery for a WGS84 bounding box via geoai library. Parses coordinates, validates extent, supports year, output dir, and max items.
Use when working with TESSERA satellite embeddings — downloading via CLI, sampling via the Python or R library, choosing between point-based and mosaic approaches, or exporting to GeoTIFF/NPY/Zarr.
Processes satellite imagery, hyperspectral, SAR data for Earth observation. Applies ML for NDVI, change detection, classification. Guides via reference patterns, diagnostics, validations.
Share bugs, ideas, or general feedback.
You are helping the user search and download satellite imagery from the Planetary Computer STAC catalog using geoai.
Input: $@
Follow these steps in order.
Parse $@ to identify what the user wants:
list, collections, or asks "what is available": list collections.--bbox are provided: search for items.--download is present: download items after searching.python3 -c "
import geoai
df = geoai.pc_collection_list()
print(df.to_string())
"
If the user provided a filter keyword, pass it:
python3 -c "
import geoai
df = geoai.pc_collection_list(filter_by='FILTER')
print(df.to_string())
"
Report the available collections and stop (unless the user also specified a search).
Parse the collection name, bounding box (--bbox), and optional datetime range (--datetime).
The datetime range should be in the format YYYY-MM-DD/YYYY-MM-DD (start/end).
python3 -c "
import geoai
items = geoai.pc_stac_search(
collection='COLLECTION',
bbox=[MINX, MINY, MAXX, MAXY],
time_range='TIME_RANGE',
limit=LIMIT,
)
print(f'Found {len(items)} items')
print('---')
for item in items[:20]:
assets = list(item.assets.keys())
print(f' {item.id}: {item.datetime} - assets: {assets}')
"
Replace COLLECTION, MINX, MINY, MAXX, MAXY, TIME_RANGE, and LIMIT with actual values. Use limit=10 by default.
If time_range was not specified, omit it or pass None.
If the user asks about available assets or bands for a specific item:
python3 -c "
import geoai
assets = geoai.pc_item_asset_list(item_id='ITEM_ID', collection='COLLECTION')
for name, info in assets.items():
print(f' {name}: {info}')
"
python3 -c "
import geoai, os
items = geoai.pc_stac_search(
collection='COLLECTION',
bbox=[MINX, MINY, MAXX, MAXY],
time_range='TIME_RANGE',
limit=LIMIT,
)
output_dir = 'OUTPUT_DIR'
os.makedirs(output_dir, exist_ok=True)
result = geoai.pc_stac_download(
items,
output_dir=output_dir,
)
print(f'Downloaded to: {output_dir}')
for f in os.listdir(output_dir):
fpath = os.path.join(output_dir, f)
if os.path.isfile(fpath):
size_mb = os.path.getsize(fpath) / (1024 * 1024)
print(f' {f} ({size_mb:.1f} MB)')
"
Default output directory: ./stac_data/
Summarize the search or download results. Then suggest:
/geoai-skills:inspect-geo to examine any downloaded files."/geoai-skills:process-raster to clip or mosaic the imagery."import geoai fails -> delegate to /geoai-skills:install-geoai.