Geospatial plate analysis
[COLM'26] SkillLearnBench is the first benchmark for evaluating continual learning methods that automatically generate agent skills.
npx -y skills add cxcscmu/SkillLearnBench --skill geospatial-plate-analysisAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Analyze tectonic plate geometries using GeoPandas with proper coordinate projections. Use this skill whenever working with PB2002 plate boundary/plate polygon data, filtering points by plate membership, or extracting plate-specific boundaries. Triggers on: plate tectonics, tectonic plates, plate boundaries, PB2002 dataset.
SKILL.md
2.5 KB, 595 tokens by cl100k_base, as published. Nobody here has run it
Geospatial Plate Analysis
Purpose
Load and process PB2002 tectonic plate data (boundaries and plate polygons) using GeoPandas, then perform spatial operations like point-in-polygon tests and boundary extraction.
Data Format
PB2002_plates.json
- GeoJSON FeatureCollection with plate polygons
- Properties:
Code(e.g., "PA"),PlateName(e.g., "Pacific") - Geometry: Polygon or MultiPolygon (lon/lat, EPSG:4326)
- The Pacific plate ("PA") is a MultiPolygon that crosses the antimeridian (±180°)
PB2002_boundaries.json
- GeoJSON FeatureCollection with plate boundary LineStrings
- Properties:
PlateA,PlateB(two-letter plate codes),Name,Type - To get all boundaries of a plate (e.g., "PA"), filter where
PlateA == "PA"ORPlateB == "PA"
Earthquake GeoJSON (USGS format)
- Features with Point geometry:
[longitude, latitude, depth] - Properties include:
mag,place,time(Unix ms),type - Feature
idfield contains the earthquake ID
Workflow
1. Load data
import geopandas as gpd
plates = gpd.read_file("PB2002_plates.json")
boundaries = gpd.read_file("PB2002_boundaries.json")
earthquakes = gpd.read_file("earthquakes_2024.json")
All data loads in EPSG:4326 (WGS84 lon/lat).
2. Extract a specific plate polygon
pacific_plate = plates[plates["Code"] == "PA"]
3. Filter points inside a plate
Use a spatial join or within test:
quakes_in_plate = gpd.sjoin(earthquakes, pacific_plate, predicate="within")
4. Extract plate boundaries
Filter boundaries where the plate code appears in either PlateA or PlateB:
pa_boundaries = boundaries[
(boundaries["PlateA"] == "PA") | (boundaries["PlateB"] == "PA")
]
Antimeridian Handling
The Pacific plate crosses the ±180° meridian. GeoPandas handles MultiPolygon geometries
natively, so sjoin with predicate="within" works correctly for point-in-polygon tests
as long as the plate polygon is properly defined (which PB2002 data is).
Key Libraries
geopandas— spatial data frames, spatial joinsshapely— geometry operations (union, distance, nearest_points)pyproj— CRS transformations
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.