agentsclimarketplace

Plate tectonics analysis

Skill cxcscmu/SkillLearnBench/skills/b1-one-shot-claude-opus-4-6/earthquake-plate-calculation/plate-tectonics-analysis

Analyzing earthquake data relative to tectonic plate boundaries using PB2002 dataset and GeoPandas.From its SKILL.md

Install
npx -y skills add cxcscmu/SkillLearnBench --skill plate-tectonics-analysis

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

2.1 KB, 538 tokens by cl100k_base, as published. Nobody here has run it

Plate Tectonics Analysis with PB2002 Dataset

PB2002 Dataset Structure

Plates (PB2002_plates.json)

  • GeoJSON FeatureCollection with Polygon geometries
  • Properties include PlateName (e.g., "PA" for Pacific)
  • Each feature is a tectonic plate polygon

Boundaries (PB2002_boundaries.json)

  • GeoJSON FeatureCollection with LineString geometries
  • Properties: PlateA, PlateB (2-letter plate codes), Name, Type
  • Pacific plate code: "PA"
  • Boundaries involving Pacific: PlateA == "PA" or PlateB == "PA"

Common Plate Codes

  • PA: Pacific, NA: North America, SA: South America
  • EU: Eurasia, AF: Africa, AN: Antarctica
  • AU: Australia, IN: India, NZ: Nazca

Workflow: Find Earthquakes Inside a Plate

import geopandas as gpd

# Load plate polygons and earthquake points
plates = gpd.read_file("PB2002_plates.json")
earthquakes = gpd.read_file("earthquakes.json")

# Get Pacific plate polygon
pacific = plates[plates["PlateName"] == "PA"]

# Spatial join: earthquakes within Pacific plate
eq_in_pacific = gpd.sjoin(earthquakes, pacific, predicate="within")

Workflow: Get Plate Boundaries

boundaries = gpd.read_file("PB2002_boundaries.json")

# Filter boundaries of Pacific plate
pa_bounds = boundaries[
    (boundaries["PlateA"] == "PA") | (boundaries["PlateB"] == "PA")
]

# Merge all boundary segments into one geometry
pa_boundary_union = pa_bounds.unary_union

Workflow: Distance from Earthquake to Plate Boundary

# Project both to a suitable CRS
proj_crs = "+proj=aeqd +lat_0=0 +lon_0=-160 +datum=WGS84 +units=m"

eq_proj = eq_in_pacific.to_crs(proj_crs)
boundary_proj = pa_bounds.to_crs(proj_crs)
boundary_union_proj = boundary_proj.unary_union

# Calculate distances
eq_proj["dist_to_boundary"] = eq_proj.geometry.distance(boundary_union_proj)
eq_proj["dist_km"] = eq_proj["dist_to_boundary"] / 1000

# Find the earthquake furthest from boundary
furthest = eq_proj.loc[eq_proj["dist_km"].idxmax()]

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.