geoai-skills

地理空間AIのための測定されたエージェントスキル — データが主張をサポートできない場合に停止する18のスキル。ルーティングベンチマーク、ホールドアウト分割、既知の欠陥が公開されています。

ドキュメント

GeoAI Skills

GeoAI Skills — measured guardrails for geospatial AI agents

Geospatial AI should know when not to answer

A command can succeed while the geographic claim is still wrong.

GeoAI Skills is a vendor-neutral collection of 18 Agent Skills for the methodological layer between a user request and a geospatial claim. The skills do not replace GDAL, PostGIS, Earth Engine, ArcGIS, QGIS, Python libraries, or MCP servers. They tell an agent which preconditions must hold, which checks must run, what evidence must be reported, and when the available data cannot support the requested conclusion.

validate-skills License: MIT Skills Routing precision Routing recall Behavior pairs Critical failures Browse on skills.sh DOI Spec

Two measurements are shown above and they are deliberately not pooled. The routing card covers 167 cases on Claude Code 2.1.214, claude-sonnet-5, suite efe27d8c1736…. The behavior package covers 92 clean pairs on Claude Code 2.1.222, the same model name, and suite 520bc41dd4c0…. Both describe one runtime/model pair and are not universal or model-independent claims. The behavior figures are model-judged, uncalibrated, and not yet human-verified.

Animated claim gate: a successful geospatial command is checked for comparability, CRS and units, mutual masks and registration, validity, and uncertainty before its output is allowed to become a claim

Success is a defensible claim — or a justified stop.
Install · See the boundary · Inspect the evidence · Static poster

The animation uses a public, synthetic request. It demonstrates the method the skills encode; it does not claim that every runtime will produce identical text.

Quick start

Install all 18 skills for Codex:

npx skills add muend/geoai-skills --skill '*' -a codex

Or install one specialist for Claude Code:

npx skills add muend/geoai-skills \
  --skill remote-sensing-analysis \
  -a claude-code

Then ask naturally:

Can May 2024 and September 2025 Sentinel-2 scenes support a defensible changed-hectares claim?

The relevant specialist should test observation comparability before proposing pixel arithmetic. In this example the season mismatch blocks a defensible two-date area claim, so the useful answer is not a fabricated number: it is the reason to stop and the evidence needed to continue.

What makes this different

There are real neighboring projects. The difference is center of gravity, not a claim that every other skill collection is interchangeable or inferior.

Public projectIts strongest center of gravityHow GeoAI Skills differs
OpenMapStackAn open-first, reproducible GIS project contract with a CLI, templates, artifact validation, and worked outputGeoAI Skills is not an execution framework. It supplies separately routed method specialists across proprietary and open stacks, with claim-narrowing and refusal conditions before or around execution.
geospatial-skillsSeparately installable skills for tools, formats, catalogues, viewers, and large-scale pipelinesGeoAI Skills organizes around analytical decisions and failure modes—leakage, comparability, inference, uncertainty, measurement, and safe mutation—rather than a tool catalogue.
geoai-skills (opengeos)Capability skills over the GeoAI Python library: inspect, search, download, process, and detectSame repository name, different layer. That project performs geospatial operations; GeoAI Skills governs whether their output may become a claim, and is library-neutral rather than built on one stack. They compose.
GIS Agent SkillsPractical ArcGIS/GIS workflow, readiness, schema, publishing, and post-run checklistsGeoAI Skills spans the full data-to-claim lifecycle and evaluates cross-skill routing boundaries as well as behavior.
MapLibre Agent Skills and Mapbox Agent SkillsDeep platform-specific mapping implementation; MapLibre also distinguishes eval-verified and provisional skillsGeoAI Skills is platform-neutral and extends beyond application delivery into remote sensing, spatial inference, geostatistics, accessibility, ML validation, LiDAR, terrain, and databases.
GeoMasterOne broad, example-rich geospatial science skillGeoAI Skills splits ownership across 18 narrow specialists so activation, collisions, negative routes, and domain boundaries can be tested independently.

What is unusual here is the combination:

  1. Claim preconditions, not only API knowledge. A result must survive CRS, unit, validity, comparability, leakage, uncertainty, and provenance checks.
  2. A safe failure mode. Missing evidence produces a narrower claim, clarification, provisional plan, or refusal—not invented certainty.
  3. Routed specialists. One large geospatial prompt is not loaded for every task; domain ownership and collisions are explicit and tested.
  4. Published misses. Routing evidence, paired behavior evidence, known regressions, execution errors, costs, suite hashes, and the failed quality gate remain visible.

Choose OpenMapStack when you want its executable open-stack project contract. Choose a platform collection when that platform is the problem. Use GeoAI Skills when the hard question is whether the method and evidence can support the claim at all. These projects can complement one another.

What changes when the skills are present

A plausible shortcutGeoAI Skills guardrail
Measure area in EPSG:4326 because the operation returns a number.Select and record an appropriate projected CRS; verify units before reporting area or distance.
Randomly split spatial samples and report a high validation score.Audit spatial and group leakage; use blocked validation and show geographic error structure.
Count changed pixels from two convenient dates.Check season, sensor, processing level, registration, mutual masks, threshold sensitivity, and error-adjusted area uncertainty.
Sum overlapping spatial intersections.Dissolve or deduplicate overlap before measurement and preserve an auditable accounting path.
Render a map and assume it communicates honestly.Check projection, classification, palette accessibility, legend semantics, uncertainty, and export metadata.
Run a destructive local GIS mutation immediately.Inspect first, plan the mutation, require an explicit gate, verify outputs, and retain recovery evidence.

The skills complement tools and runtimes. They are the method and verification layer that tells an agent when not to trust an apparently successful operation.

Evidence with boundaries

Animated summary of the first paired behavior measurement: 92 clean pairs, higher criterion coverage and fewer critical spatial failures with skills, while the repository's own Phase 3 gate still fails

First paired behavior measurement

The first behavior package compares skills enabled and disabled under the same runtime, model, prompts, and non-skill tool configuration. Of 93 responses in each arm, 92 formed clean matched pairs.

MeasureSkills enabledControlPaired result
Criterion coverage145/302 (48.0%)85/302 (28.1%)65 wins / 5 losses / 232 ties; p = 2.2e-14
Cases meeting every criterion18/926/9242 wins / 3 losses / 47 ties; p = 8.7e-10
Critical spatial failures4/92 (4.3%)13/92 (14.1%)3.25× fewer observed failures
Forbidden-behavior violations00no separation
Skill activation92/920/92clean control arm

Two facts must travel together:

  • The paired effect is large in this run. The enabled arm wins 65 of the 70 discordant criterion comparisons, and observed critical spatial failures fall from 13 cases to 4.
  • The absolute quality level is not good enough. The enabled arm covers 48% of pinned criteria, but only 18/92 cases (19.6%) meet every criterion, and the critical-failure rate is 4.3%. The repository's Phase 3 gate applies to that case-level pass rate: it requires at least 85% plus less than 2% critical failures. It fails both conditions.

We published the gate we failed.

This is a single, different-family model judgment (gpt-5.6-sol, low reasoning) of responses from claude-sonnet-5. It is uncalibrated and has no completed human verification. Forty-seven arm-blinded human review packets are prepared; until adjudication lands, these figures are evidence about this run, not a claim of human-verified overall answer quality. Raw response text remains unpublished to avoid contaminating that review; hashes and lengths preserve identity.

Read the behavior evidence package for provenance, ties, criterion structure, the excluded termination case, cost, tokens, and limitations. The historical routing-only label behavior_quality-not_evaluated applies to the earlier routing card—not to the repository's current evidence inventory.

Four evidence layers, kept separate

Evidence layerCurrent coverageWhat it supports
Routing benchmark167 cases across 18 skills; 105 development and 62 held-outActivation precision/recall, negative routes, collisions, and known boundary defects
Paired behavior measurement92 clean pairs, 302 pinned criteriaModel-judged criterion coverage and critical failures for one runtime/model/run
GeoAnalystBench-derived external subset5 executable cases with deterministic synthetic fixtures and artifact validatorsTransfer checks for network analysis, facility coverage, vegetation change, urban heat/kriging, and spatial regression
Platform and package verificationWindows, macOS, and Linux CI; clean installs for Codex, Claude, Skills CLI, and GitHub CopilotPackaging, portability, runtime-file isolation, and deterministic archives

The routing card and behavior package use different Claude Code versions and different suite hashes; do not combine their metrics. The external subset is independently authored and reported separately. It does not copy upstream datasets, prompts, or reference implementations, and its results are never pooled with native metrics. See its frozen suite and offline result protocol.

The routing-only run recorded 99.17% precision, 96.77% recall, and 96.41% full-route accuracy on suite efe27d8c1736…, with zero control activations. It also recorded one false positive, four false negatives, one incomplete route, and eleven execution errors; all remain in the card. Routing says which skill loaded, not whether the answer was correct.

Read BENCHMARK.md for routing and known defects, and BEHAVIOR.md for the separate behavior card. See EVALUATION.md for the provider-neutral prepare → execute → judge → score → compare protocol and ROADMAP.md for the open evidence and release gates.

If you want measured, pre-registered evidence like this to keep being published, star the repository so the work is easier to find and sustain.

The 18-skill stack

StageSkillsWhat they protect
Route and acquiregeoai-orchestrator, geo-data-engineering, google-earth-engineProblem decomposition, provenance, formats, CRS, scale, and server-side execution
Sense and prepareremote-sensing-analysis, point-cloud-lidar, terrain-hydrology, movement-trajectorySensor/processing-level comparability, masks, elevation surfaces, point-cloud semantics, and trajectory cleaning
Model and detectgeo-deep-learning, change-detection, ml-experiment-standardsLeakage, chipping, imbalance, registration, threshold sensitivity, spatial validation, and reproducibility
Analyze and decidespatial-statistics, geostatistics-interpolation, mcda-suitability-analysis, network-accessibility-analysis, postgis-spatial-sqlWeights, inference, multiple testing, kriging uncertainty, AHP consistency, routing barriers, overlap, SQL correctness, and performance
Deliver and operatecartography-geoviz, swe-devops-standards, arcgis-pro-automationHonest visual encoding, production code, test/transaction discipline, and gated local ArcGIS mutations

Install the full suite for cross-skill routing, or cherry-pick one specialist. Every skill must remain safe and useful alone; sibling references are advisory and critical safeguards have local fallbacks.

Installation

Choose the surface you already use.

SurfaceRecommended path
OpenAI Codexnpx skills add muend/geoai-skills --skill '*' -a codex
Claude Codeclaude plugin marketplace add muend/geoai-skills then claude plugin install geoai@geoai-skills
GitHub Copilotgh skill install muend/geoai-skills remote-sensing-analysis
Skills CLI / compatible agentsnpx skills add muend/geoai-skills
ChatGPTInstall GeoAI Skills from the OpenAI Plugins Directory when available to your account
Claude.ai / Claude desktopUpload one or more release ZIP files from the latest GitHub Release
Skills CLI and skills.sh

Browse the collection on skills.sh or inspect it without installing:

npx skills add muend/geoai-skills --list

Install all 18 skills for Claude Code:

npx skills add muend/geoai-skills --skill '*' -a claude-code

Install all 18 skills for Codex:

npx skills add muend/geoai-skills --skill '*' -a codex

Run npx skills add muend/geoai-skills without flags for the interactive agent and skill picker.

OpenAI Codex / ChatGPT plugin

The repository's OpenAI plugin manifest is version 0.4.1. The repository is a skills-only plugin: it adds no hosted service, authentication flow, or MCP server. Directory rollout can lag the source manifest.

Build the deterministic upload archive:

python tools/build_openai_plugin_bundle.py

The ignored dist/ output contains only the plugin manifest, public policy pages, logo, and runtime skill files. Evaluation cases, benchmark traces, repository automation, and private development material are excluded.

Claude Code and Claude Cowork

From a terminal:

claude plugin marketplace add muend/geoai-skills
claude plugin install geoai@geoai-skills

From an interactive Claude Code session:

/plugin marketplace add muend/geoai-skills
/plugin install geoai@geoai-skills

Installed skills use the stable geoai namespace, for example:

/geoai:remote-sensing-analysis

GitHub Copilot

GitHub Copilot can load project skills from .github/skills, .claude/skills, or .agents/skills. With GitHub CLI 2.90.0 or later, preview before installing:

gh skill preview muend/geoai-skills remote-sensing-analysis
gh skill install muend/geoai-skills remote-sensing-analysis

The Skills CLI also provides an explicit Copilot target:

npx skills add muend/geoai-skills \
  --skill remote-sensing-analysis \
  -a github-copilot

See GitHub's Agent Skills documentation for supported locations, pinning, provenance, and security guidance.

Claude.ai ZIP files and generic Agent Skills runtimes

For Claude.ai or Claude desktop, download individual skill ZIP files and SHA256SUMS from the latest GitHub Release, then upload them through Customize → Skills → Create skill → Upload a skill.

To build the same deterministic archives locally:

python tools/build_skill_archives.py

Any Agent-Skills-compatible runtime can instead copy directories from skills/ into its skill directory. Real arcgis-pro-automation execution additionally requires Windows, licensed ArcGIS Pro, and a configured local arcgis-mcp-bridge.

Release maintainers should use RELEASING.md for the non-publishing candidate workflow, clean-install matrix, evidence requirements, publication gate, and rollback procedure.

Try these prompts

Reject an invalid change claim

Plan a defensible two-date Sentinel-2 forest-loss workflow. One scene is from May 2024 and the other from September 2025. Decide whether this comparison can support a changed-hectares claim.

Expected intervention: identify the phenology mismatch; withhold the hectare claim; request matched-season imagery or a season-aware time series; require registration, mutual masks, sensitivity analysis, and error-adjusted area uncertainty.

Make spatial SQL measurable and index-safe

Design production-safe PostGIS SQL to return flooded area in hectares per parcel for two large EPSG:4326 polygon tables. Include invalid-geometry handling and an EXPLAIN verification plan.

Expected intervention: select a suitable projected measurement CRS, avoid transforming indexed columns inside predicates, repair derived working geometry, deduplicate overlaps, and verify the query plan.

Refuse inconsistent suitability weights

Use this AHP pairwise matrix to build a solar-suitability map. Its consistency ratio is 0.19.

Expected intervention: reject the weights before mapping, identify discordant judgments, require revision, and preserve sensitivity analysis as a deliverable.

How it works

  1. Trigger narrowly. Specialist descriptions identify the domain decision that owns the task; negative and collision cases test over-triggering.
  2. Load progressively. The agent reads only the relevant SKILL.md, then loads references or scripts when required.
  3. Enforce invariants. CRS, validity, leakage, units, uncertainty, provenance, verification, and failure behavior travel across the workflow.
  4. Route across specialists. The orchestrator coordinates genuine multi-stage work without replacing specialist judgment.
  5. Fail loudly. Missing inputs produce a narrower claim, provisional plan, clarification, or refusal—not invented evidence.

Design principles

  1. Fail-loud spatial computing. Successful execution is not proof of a valid geographic result.
  2. Methodological honesty. Uncertainty, multiple-testing correction, sensitivity, and error-adjusted estimates are first-class outputs.
  3. Anti-leakage by default. Spatial and grouped validation replace random splits whenever geographic generalization is claimed.
  4. Tool-pragmatic, vendor-neutral guidance. Open Python, PostGIS/DuckDB, Earth Engine, ArcGIS, and other backends are selected by evidence and scale.
  5. Progressive disclosure. Long references and scripts cost no context until the task actually needs them.
  6. Measured, not assumed. Source cases, run evidence, suite hashes, errors, costs, limitations, and superseded results remain distinguishable.
Repository structure
geoai-skills/
├── skills/<skill-name>/
│   ├── SKILL.md
│   ├── agents/openai.yaml
│   ├── scripts/
│   └── references/
├── evals/cases/<skill>/       # native cases governed by the committed split
├── evals/external/            # separately reported transfer suites
├── tools/                     # validators, adapters, builders, and gates
├── benchmarks/                # immutable published evidence packages
├── .codex-plugin/             # OpenAI skills-only plugin manifest
├── .claude-plugin/            # Claude marketplace and plugin manifests
├── BENCHMARK.md               # routing card and limitations
├── BEHAVIOR.md                # paired behavior card and open quality gate
├── EVALUATION.md              # provider-neutral evaluation protocol
├── CASE_STUDIES.md            # evidence policy and accepted cases
├── ROADMAP.md                 # canonical current priorities and release gate
└── RELEASING.md               # release and rollback runbook

Contributing

Contributions are welcome. Start with CONTRIBUTING.md. A current task must also respect ROADMAP.md, while questions and reproducible defects belong in the channels described by SUPPORT.md. Project and evidence decisions follow GOVERNANCE.md. A skill change should:

  • pass the structural and link validators;
  • add or update evaluation cases;
  • avoid duplicating canonical cross-cutting rules;
  • define verification and failure behavior; and
  • keep runtime packages free of benchmark and private development material.

Real-world catches belong in CASE_STUDIES.md only when they include a dated, privacy-safe reproducer, comparison evidence, verification method, and limitations.

License

MIT — use it, fork it, and ship it.