Skip to main content
skill CX Codex

change-detection — Claude Code skill: what it does, how to install

Guides satellite and vector change detection workflows on comparable observations. Separates true land surface dynamics from phenology, registration jitter, and sensor drift.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add muend/geoai-skills --skill change-detection -a claude-code
Open on GitHub

What change-detection does

The skill instructs the agent on detecting surface changes across comparable raster and vector layers. It targets bi-temporal comparisons, urban expansion, deforestation tracking, disaster impact mapping, and parcel boundary audits. Workflows cover continuous index differencing like ΔNDVI or ΔNBR, multivariate change vector analysis (CVA), dense time-series break detection via BFAST, CCDC, or LandTrendr, and SAR calibrated backscatter log-ratios.

Preconditions govern the workflow. Observations must share matching phenology, sub-pixel co-registration, identical radiometric processing levels, and mutually intersected cloud masks. Half a pixel of misalignment produces phantom change edges across every boundary. The skill forbids guessing thresholds visually, demanding histogram cutoffs like μ ± k·σ or Otsu, accompanied by sensitivity checks at k ± 0.5.

Post-classification comparison requires generating a complete transition matrix to flag impossible category swaps. To prevent biased totals, reported change areas must never rely on direct pixel counts. The agent reports error-adjusted area estimates with confidence intervals following the Olofsson stratified sampling protocol.

What it helps with

  • isolate true surface changes from phenological and atmospheric noise
  • compute statistical thresholds on index difference rasters
  • pinpoint break dates in dense satellite time series via BFAST or CCDC
  • audit geometry and attribute shifts between parcel vector vintages
  • calculate error-adjusted change area estimates using stratified sampling

Example prompts for the agent

  • Calculate ΔNBR between pre-fire and post-fire scenes and apply an Otsu threshold to map burn extent.
  • Build a transition matrix between the two land cover rasters and check for implausible class shifts.
  • Run break detection on this vegetation index time series and extract the exact clearing dates.

How to install change-detection

1Skills CLI (Vercel)

npx skills add muend/geoai-skills --skill change-detection -a claude-code

2Manually: put the files in place

~/.claude/skills/change-detection/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/change-detection/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about change-detection

How do I install change-detection in Claude Code?

Run npx skills add muend/geoai-skills --skill change-detection -a claude-code.

What does change-detection do?

It guides agents through detecting bi-temporal and time-series changes in geospatial data while controlling for misregistration, seasonal shifts, and sensor differences.

Why does the skill reject raw pixel counts for area estimation?

Direct pixel summation yields biased area estimates due to classification error. The skill enforces stratified sampling with error-adjusted intervals based on the Olofsson protocol.

Source text

SKILL.md · MIT
---
name: change-detection
description: >-
  Change analysis, once the observations are comparable. Not for cases whose
  blocker is comparability itself: mixed sensors, product levels or processing
  baselines to remote-sensing-analysis, undocumented vertical datums to
  point-cloud-lidar, multi-decade archive trends over large areas to
  google-earth-engine. Matching product level does not prove comparability.
  Otherwise invoke for what, where or how much changed: two-scene comparison,
  deforestation, urban growth, disaster damage, parcel-change audits,
  bi-temporal differencing, post-classification comparison, adjusted area,
  break detection in a series in hand (BFAST/LandTrendr/CCDC). Seasonal
  mismatch is this skill's own confounder; a documented datum with a stated
  accuracy budget is settled comparability. Keep both.
license: MIT
metadata:
  author: Muhammed Enes Duran
---

# Change Detection & Spatio-temporal Analysis

Purpose: separate real surface change from the four great impostors —
misregistration, radiometric drift, phenology, and classification error.
Every method below exists to control one of them; skipping the controls
produces confident maps of nothing.

## Preconditions (where change detection is won or lost)

Preconditions 1 and 2 are *checked* here but *established* elsewhere. When
either fails, the owning skill leads and this skill resumes once comparable
observations exist. Precondition 3 is this skill's own problem and is never a
reason to route away.

1. **Co-registration**: sub-pixel alignment between dates (AROSICS or
   manual tie-points). Half a pixel of shift creates edge-shaped phantom
   change everywhere. Verify: flicker-compare crisp features. For elevation
   surfaces or point clouds, vertical datum agreement, co-registration and
   the vertical-accuracy budget belong to `point-cloud-lidar` — a datum
   offset is not subsidence.
2. **Radiometric consistency**: same processing level (surface
   reflectance), same sensor, same processing baseline. If any of the three
   differ, this is a harmonization problem, not a thresholding one: hand it
   to `remote-sensing-analysis` (HLS for Landsat↔Sentinel-2, relative
   normalization with PIFs, `BOA_ADD_OFFSET` across the Sentinel-2 2022
   baseline change).
3. **Same season / phenological stage** for bi-temporal work — a May vs
   September pair "detects" summer. If season can't be matched, use
   composites or time-series methods instead.
4. **Cloud/shadow masks intersected across dates**; analyze only mutually
   valid pixels and report that coverage %.

## Method selection

| Situation | Method |
|---|---|
| Two dates, continuous "how much" | Index differencing (ΔNDVI, ΔNBR...) with statistical thresholding |
| Two dates, categorical "from-what-to-what" | Post-classification comparison (only with strong classifiers) |
| Two dates, multivariate robust | Change vector analysis (CVA); MAD/iMAD for sensor-robust detection |
| Dense stack, gradual + abrupt | Trend + break analysis (BFAST/LandTrendr/CCDC family; at archive scale → `google-earth-engine`) |
| Structure change (buildings) | DL bi-temporal segmentation (siamese U-Net) → `geo-deep-learning` |
| SAR pairs (clouds, disasters) | Log-ratio of calibrated backscatter + speckle handling |
| Vector vintages (parcels, buildings) | Geometry+attribute diff with tolerance (below) |

## Thresholding — never eyeball it

Difference images need a defensible threshold: μ ± k·σ on the difference
histogram (report k), Otsu when bimodal, or supervised thresholds
calibrated on labeled change/no-change samples. Deliver the histogram with
the chosen cut marked. Sensitivity: report changed-area at k-0.5 and
k+0.5; if the story flips, the detection is fragile — say so.

## Post-classification comparison (PCC) — handle with care

PCC error compounds: two 90%-accurate maps yield ≤ ~81% change accuracy,
and biased errors create systematic false transitions. Rules:

- Use ONE classifier trained on both dates' imagery (same legend, same
  features) rather than two independent legacy maps.
- Build the full **transition matrix** (from-class → to-class areas), not
  just a change/no-change binary — impossible transitions (water→forest
  in 1 year) are your error detector.
- Apply a minimum mapping unit consistent across dates before differencing.

## Time-series (dense stack) analysis

- Build a gap-filled, cloud-masked index stack (xarray, time dimension).
- Decompose trend + seasonality + breaks; per-pixel linear trends need
  significance testing (Mann-Kendall + Sen's slope for monotonic trends —
  and FDR correction across millions of pixels, or your "greening map" is
  noise).
- Label break DATES, not just presence — timing is usually the analytic
  payload (when did clearing start?).
- Validate detected breaks against known events (fires, construction
  permits, disaster dates) wherever records exist.

## Vector change audit (two vintages of the same layer)

- Match features by stable ID if it exists; else spatial matching with IoU
  threshold (report it).
- Classify: added / removed / geometry-changed (area delta > tolerance) /
  attribute-changed. Tolerances absorb digitization jitter — 1-2 m for
  cadastre-grade, more for digitized-from-imagery.
- Sum area deltas by class and reconcile totals; unexplained residual =
  matching bugs.

## Accuracy assessment (the deliverable's spine)

Change is rare, so random sampling wastes effort on stable pixels — use
**stratified sampling** (strata: change/no-change or per-transition) with
good-practice area estimation (Olofsson et al. protocol): report
user's/producer's accuracy per stratum AND **area estimates with
confidence intervals** adjusted for map error. A raw pixel count of the
change map is a biased area estimate — always say the adjusted number.

## Reporting template

```
## Change: <phenomenon>, <T1> → <T2 or period>
- Data: <sensor/level>, co-registration RMSE: <px>, valid overlap: <%>
- Method: <...> threshold/params: <...> (sensitivity: <stable/fragile>)
- Transitions: <matrix or top-5 list with areas ± CI>
- Accuracy: stratified n=<>, UA/PA per class, adjusted areas ± CI
- Impostor controls: season <matched?>, radiometry <harmonized?>
```

## Pitfalls checklist

- Phantom edge-change from misregistration.
- Seasonal difference sold as land cover change.
- PCC with two independently produced legacy maps.
- Threshold chosen "because it looked right", no sensitivity.
- Raw changed-pixel counts reported as area (no error-adjusted estimate).
- Trend maps without multiple-testing control.
- SAR change on unfiltered linear-power images.

## Execution contract

- **Workflow:** define the change question; harmonize extent, season, radiometry, resolution, and registration; select method; estimate change; validate; report uncertainty.
- **Decision rules:** use direct differencing only for comparable continuous signals, post-classification comparison for stable class legends, and time-series methods when a dense temporal stack exists.
- **Verification protocol:** quantify co-registration, valid overlap, threshold sensitivity, transition accounting, and accuracy-adjusted area with confidence intervals.
- **Failure modes:** reject causal change claims when season, sensor, clouds, registration, or independent map errors can explain the signal.
- **Deliverables:** change map, transition or trend table, parameter record, validation sample and metrics, adjusted-area estimate, and limitations.
- **Source freshness:** consult [the authoritative source registry](references/authoritative-sources.md) before using version-sensitive products or APIs and record the checked date.

© Muhammed Enes Duran · MIT · muend/geoai-skills

Similar skills

All skills for Science and research →

From the same set18

mcda-suitability-analysis Guides spatial multi-criteria suitability analysis, AHP factor weighting, and model sensitivity testing across GIS rasters. CX Codex +1 ★ 35repo stars google-earth-engine This skill guides Google Earth Engine workflows for satellite imagery, from filtering collections to computing zonal statistics and exporting results. CX Codex +1 ★ 35repo stars geostatistics-interpolation A skill that turns sparse point measurements into a continuous surface and ships an uncertainty map alongside it. Handy when values between stations, wells or soundings have to be estimated. CX Codex +1 ★ 35repo stars geoai-orchestrator Routes complex multi-stage geospatial workflows across dedicated specialist skills while enforcing strict coordinate reference system and geometry rules. CX Codex +1 ★ 35repo stars geo-deep-learning Guides neural methods for geospatial imagery, from choosing a model to checking mapped predictions. Useful for segmentation, object detection, and spatial validation. CX Codex +1 ★ 35repo stars geo-data-engineering Keeps an agent on track when spatial data has to be fetched, cleaned or pushed through a pipeline that has to run again next month. CX Codex +1 ★ 35repo stars cartography-geoviz Skill for building thematic maps — choropleths, proportional symbols, bivariate schemes, and interactive layers. Teaches the agent to pick classification, palette, projection, and normalization so the map tells the truth. CX Codex +1 ★ 35repo stars arcgis-pro-automation A skill that drives saved ArcGIS Pro projects and local datasets through arcgis-mcp-bridge: geoprocessing, projections, rasters, networks, layout export. CX Codex +1 ★ 35repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor