search-stac — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited search-stac (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:install-geoai.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.