download-data
Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.
Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use text-prompted segmentation with GroundedSAM. Requires GPU for best performance.
Claude Code
$ npx -y skills add opengeos/geoai-skills --skill detect-objects --agent claude-code
Codex
$ npx skills add opengeos/geoai-skills --skill detect-objects -a codex -y
Cursor
$ npx skills add opengeos/geoai-skills --skill detect-objects -a cursor -y
Gemini CLI
$ npx skills add opengeos/geoai-skills --skill detect-objects -a gemini-cli -y
GitHub Copilot
$ npx skills add opengeos/geoai-skills --skill detect-objects -a github-copilot -y
OpenCode
$ npx skills add opengeos/geoai-skills --skill detect-objects -a opencode -y
Windsurf
$ npx skills add opengeos/geoai-skills --skill detect-objects -a windsurf -y
name: detect-objects description: > Run pre-trained AI models on geospatial imagery. Detect buildings, cars, ships, solar panels, agriculture fields, or use text-prompted segmentation with GroundedSAM. Requires GPU for best performance. argument-hint: <model> <input_raster> [--text PROMPT] [--output FILE] allowed-tools: Bash
You are helping the user run AI object detection on geospatial imagery using geoai.
Input: `$@`
Follow these steps in order.
Extract:
If the model name is not recognized, list the available models and ask the user to pick one.
Model mapping:
| Argument | GeoAI Class | |---|---| | `buildings` | `geoai.BuildingFootprintExtractor` | | `cars` | `geoai.CarDetector` | | `ships` | `geoai.ShipDetector` | | `solar-panels` | `geoai.SolarPanelDetector` | | `parking-lots` | `geoai.ParkingSplotDetector` | | `agriculture` | `geoai.AgricultureFieldDelineator` | | `grounded-sam` | `geoai.GroundedSAM` |
python3 -c "
import torch
if torch.cuda.is_available():
print(f'GPU: {torch.cuda.get_device_name(0)}')
print(f'CUDA: {torch.version.cuda}')
print(f'Memory: {torch.cuda.get_device_properties(0).total_mem / 1e9:.1f} GB')
else:
print('GPU: not available (CPU mode)')
print('Warning: inference will be significantly slower without a GPU')
"If no GPU is available, warn the user but continue.
If `$1` looks like an absolute path, use it directly. Otherwise:
find "$PWD" -name "$1" -not -path '*/.git/*' 2>/dev/null
If no file specified and state exists, check for recently inspected/downloaded files:
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"
python3 -c "
import geoai
detector = geoai.DETECTOR_CLASS()
gdf = detector.predict(
'INPUT_PATH',
output_path='OUTPUT_PATH',
)
print(f'Detections: {len(gdf)}')
print(f'Output: OUTPUT_PATH')
print(f'Columns: {list(gdf.columns)}')
if len(gdf) > 0:
print('---')
print('Sample (first 5):')
print(gdf.head().to_string())
"Replace `DETECTOR_CLASS` with the appropriate class from the mapping table (e.g. `BuildingFootprintExtractor`).
python3 -c "
import geoai
sam = geoai.GroundedSAM()
gdf = sam.predict(
'INPUT_PATH',
text_prompt='TEXT_PROMPT',
output_path='OUTPUT_PATH',
)
print(f'Segments: {len(gdf)}')
print(f'Output: OUTPUT_PATH')
print(f'Columns: {list(gdf.columns)}')
if len(gdf) > 0:
print('---')
print('Sample (first 5):')
print(gdf.head().to_string())
"Replace `TEXT_PROMPT` with the user's text prompt.
Replace `INPUT_PATH` and `OUTPUT_PATH` with actual values before running.
Summarize:
Then suggest: *"Use `/geoai-skills:inspect-geo` to examine the detection output."*
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.
Download NAIP aerial imagery for a bounding box. Specify coordinates as minx,miny,maxx,maxy in WGS84 and optionally a year.
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,…