[PR #2] [CLOSED] feat: add metadata-inspect and geodata-operation skills, extend data-download #5

Closed
opened 2026-10-30 21:24:14 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/GRIND-Lab-Core/night_owl_research_agent/pull/2
Author: @gladcolor
Created: 4/16/2026
Status: ❌ Closed

Base: main ← Head: feat/geodata-skills


📝 Commits (1)

  • 78b6765 feat: add metadata-inspect and geodata-operation skills, update data-download

📊 Changes

4 files changed (+1368 additions, -19 deletions)

View changed files

📝 CLAUDE.md (+7 -0)
📝 skills/data-download/SKILL.md (+301 -19)
➕ skills/geodata-operation/SKILL.md (+625 -0)
➕ skills/metadata-inspect/SKILL.md (+435 -0)

📄 Description

Summary

  • New skill metadata-inspect: Full geodata inspection for vector (GeoPackage/SHP/GeoJSON), raster (GeoTIFF/NetCDF), and tabular (CSV/Parquet) formats. Produces structured quality flags (NO_CRS, FIPS_AS_FLOAT, NAN_IN_JOIN_KEY, INVALID_GEOMETRIES, HIGH_NULL_RATE, etc.) and per-skill suitability assessment. JSON output at output/metadata-inspect/ enables machine consumption by downstream skills.
  • New skill geodata-operation: Data manipulation operations complementing spatial-analysis. Covers spatial join (one-to-many dedup guardrail), overlay, buffer (UTM auto-projection), dissolve, reproject, spectral indices (NDVI/NDWI/NBR/NDBI/BSI for Sentinel-2 and Landsat), zonal statistics, raster clip/mosaic/reclassify, geocoding, and network analysis. Includes FIPS/GEOID safe conversion, NaN pre-flight checks, and operation provenance logging.
  • Extended data-download: Added source-specific download handbooks (OSM Overpass with the critical relation({osm_id}); map_to_area pattern, Census TIGER/ACS, OpenTopography, ESRI World Imagery tile approach, USGS Earthquake, OpenWeather). Updated composing chain to include the new pipeline: data-download → metadata-inspect → geodata-operation → spatial-analysis.
  • CLAUDE.md: Both new skills added to Workflow Skills and Key Files tables.

Domain Knowledge Sources

Domain expertise drawn from four reference repositories:

  • LLM-Geo — task decomposition patterns, overlay/join workflows, FIPS handling
  • LLM-Find / GeodataRetrieverAgent — per-source handbooks, OSM Overpass patterns, Census/OpenTopography APIs
  • SpatialAnalysisAgent — 400+ operation coverage, SmartDebugger error recovery, resampling method rules

Key Design Decisions

  • No DAG decomposition — operations are individual, composable steps per project convention
  • PRESERVE_ORIGINALS = true — skills never overwrite source files; outputs go to output/ subdirectories
  • FIPS/GEOID safety — to_fips_str() handles str/int/float-string; never .astype(int).astype(str)
  • CRS guardrails — buffer/distance operations auto-detect geographic CRS and reproject to UTM
  • Resampling method table — bilinear for continuous, nearest for categorical (explicit variable with comment)

Test Plan

  • T1: Vector inspection — county GeoPackage (CRS=NAD83, FIPS detection, geography flag)
  • T2: Raster inspection — GeoTIFF DEM (bands, CRS, nodata, sample window stats)
  • T3: Tabular inspection — CSV lat/lon detection + FIPS + GeoDataFrame conversion
  • T4: GeoPackage inspection — OSM-origin data (format detection, CRS=4326, schema)
  • T5: Buffer — CRS guardrail + UTM auto-reproject + area validation
  • T6: Spatial join — one-to-many detection + deduplication
  • T7: Raster clip — polygon mask, output bounds within polygon
  • T8: NDVI — nodata mask, epsilon denominator, output range [-1, 1]
  • T9: Reproject WGS84 → UTM — zone estimation + coordinate range validation
  • T10: Zonal statistics — CRS match, mean per zone, attribute join
  • T-Bonus: FIPS safe conversion — all forms (str/int/float-str) handled correctly

Results: 12 PASSED, 0 FAILED (T10 uses fallback implementation when rasterstats unavailable)

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/GRIND-Lab-Core/night_owl_research_agent/pull/2 **Author:** [@gladcolor](https://github.com/gladcolor) **Created:** 4/16/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/geodata-skills` --- ### 📝 Commits (1) - [`78b6765`](https://github.com/GRIND-Lab-Core/night_owl_research_agent/commit/78b676545af8212808e855596ebd9491b68defa5) feat: add metadata-inspect and geodata-operation skills, update data-download ### 📊 Changes **4 files changed** (+1368 additions, -19 deletions) <details> <summary>View changed files</summary> 📝 `CLAUDE.md` (+7 -0) 📝 `skills/data-download/SKILL.md` (+301 -19) ➕ `skills/geodata-operation/SKILL.md` (+625 -0) ➕ `skills/metadata-inspect/SKILL.md` (+435 -0) </details> ### 📄 Description ## Summary - **New skill `metadata-inspect`**: Full geodata inspection for vector (GeoPackage/SHP/GeoJSON), raster (GeoTIFF/NetCDF), and tabular (CSV/Parquet) formats. Produces structured quality flags (`NO_CRS`, `FIPS_AS_FLOAT`, `NAN_IN_JOIN_KEY`, `INVALID_GEOMETRIES`, `HIGH_NULL_RATE`, etc.) and per-skill suitability assessment. JSON output at `output/metadata-inspect/` enables machine consumption by downstream skills. - **New skill `geodata-operation`**: Data manipulation operations complementing `spatial-analysis`. Covers spatial join (one-to-many dedup guardrail), overlay, buffer (UTM auto-projection), dissolve, reproject, spectral indices (NDVI/NDWI/NBR/NDBI/BSI for Sentinel-2 and Landsat), zonal statistics, raster clip/mosaic/reclassify, geocoding, and network analysis. Includes FIPS/GEOID safe conversion, NaN pre-flight checks, and operation provenance logging. - **Extended `data-download`**: Added source-specific download handbooks (OSM Overpass with the critical `relation({osm_id}); map_to_area` pattern, Census TIGER/ACS, OpenTopography, ESRI World Imagery tile approach, USGS Earthquake, OpenWeather). Updated composing chain to include the new pipeline: `data-download → metadata-inspect → geodata-operation → spatial-analysis`. - **`CLAUDE.md`**: Both new skills added to Workflow Skills and Key Files tables. ## Domain Knowledge Sources Domain expertise drawn from four reference repositories: - **LLM-Geo** — task decomposition patterns, overlay/join workflows, FIPS handling - **LLM-Find / GeodataRetrieverAgent** — per-source handbooks, OSM Overpass patterns, Census/OpenTopography APIs - **SpatialAnalysisAgent** — 400+ operation coverage, SmartDebugger error recovery, resampling method rules ## Key Design Decisions - **No DAG decomposition** — operations are individual, composable steps per project convention - **PRESERVE_ORIGINALS = true** — skills never overwrite source files; outputs go to `output/` subdirectories - **FIPS/GEOID safety** — `to_fips_str()` handles str/int/float-string; never `.astype(int).astype(str)` - **CRS guardrails** — buffer/distance operations auto-detect geographic CRS and reproject to UTM - **Resampling method table** — bilinear for continuous, nearest for categorical (explicit variable with comment) ## Test Plan - [x] T1: Vector inspection — county GeoPackage (CRS=NAD83, FIPS detection, geography flag) - [x] T2: Raster inspection — GeoTIFF DEM (bands, CRS, nodata, sample window stats) - [x] T3: Tabular inspection — CSV lat/lon detection + FIPS + GeoDataFrame conversion - [x] T4: GeoPackage inspection — OSM-origin data (format detection, CRS=4326, schema) - [x] T5: Buffer — CRS guardrail + UTM auto-reproject + area validation - [x] T6: Spatial join — one-to-many detection + deduplication - [x] T7: Raster clip — polygon mask, output bounds within polygon - [x] T8: NDVI — nodata mask, epsilon denominator, output range [-1, 1] - [x] T9: Reproject WGS84 → UTM — zone estimation + coordinate range validation - [x] T10: Zonal statistics — CRS match, mean per zone, attribute join - [x] T-Bonus: FIPS safe conversion — all forms (str/int/float-str) handled correctly **Results: 12 PASSED, 0 FAILED** (T10 uses fallback implementation when rasterstats unavailable) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-30 21:24:14 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
GRIND-Lab-Core/night_owl_research_agent#5
No description provided.