Skip to content
Back to skills

Search Stac

ASecurity

Search and download satellite imagery from Microsoft Planetary Computer. Browse available collections, search by bbox and time range, list assets, and download specific items.

  • 29 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 26, 2026
datapythonbash

Works with

  • cli

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add opengeos/geoai-skills --skill search-stac --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Search Stac?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Search Stac
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/opengeos-search-stac/badge)](https://www.skillsdirectory.com/skills/opengeos-search-stac)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: search-stac
description: >
  Search and download satellite imagery from Microsoft Planetary Computer.
  Browse available collections, search by bbox and time range, list assets,
  and download specific items.
argument-hint: <collection|list> [--bbox <minx,miny,maxx,maxy>] [--datetime <range>] [--download] [--output DIR]
allowed-tools: Bash
---

You are helping the user search and download satellite imagery from the
Planetary Computer STAC catalog using geoai.

Input: `$@`

Follow these steps in order.

## Step 1 -- Determine the action

Parse `$@` to identify what the user wants:

- If the input is `list`, `collections`, or asks "what is available": **list collections**.
- If a collection name and `--bbox` are provided: **search for items**.
- If `--download` is present: **download items** after searching.

## Step 2 -- List collections (if requested)

```bash
python3 -c "
import geoai
df = geoai.pc_collection_list()
print(df.to_string())
"
```

If the user provided a filter keyword, pass it:

```bash
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).

## Step 3 -- Search for items

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).

```bash
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`.

## Step 4 -- List assets for an item (optional)

If the user asks about available assets or bands for a specific item:

```bash
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}')
"
```

## Step 5 -- Download items (if --download flag or user confirms)

```bash
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/`

## Step 6 -- Report and suggest follow-ups

Summarize the search or download results. Then suggest:

- *"Use `/geoai-skills:inspect-geo` to examine any downloaded files."*
- *"Use `/geoai-skills:process-raster` to clip or mosaic the imagery."*

## Error handling

- **`import geoai` fails** -> delegate to `/geoai-skills:install-geoai`.
- **Invalid collection name** -> list available collections and suggest the closest match.
- **No items found** -> suggest expanding the bbox, adjusting the date range, or trying a different collection.
- **Download failure** -> report the error and suggest retrying with fewer items.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.