decision-labs/geobase-skills/geobase-worker-overture-import

Claude Code and agent skill by decision-labs/geobase-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Create and validate Overture Maps import worker jobs (overtureImportArea). Triggers on Overture import, Overture buildings, overturemaps layers, segment/streets/water/place when OSM coverage is thin.

Install

npx vskill@latest install decision-labs/geobase-skills/geobase-worker-overture-import

SKILL.md

Worker: Overture Maps Import

When to use this skill

  • Import Overture Maps layers into a Geobase project via overtureImportArea
  • Fill gaps when OSM building (or other) coverage is thin — e.g. geobase-kblock workspaces
  • Select specific Overture types (building, segment, water, place, …)
  • Not for OSM (@geobase-worker-osm-import) or local file import (@geobase-project-db-data-import)

Authoritative worker spec: apps/worker/specs/OVERTURE_IMPORT.md in the Geobase monorepo. OpenAPI: worker GET /ui / GET /doc.

Secrets (human in the loop)

Worker HTTP needs `GEOBASE_SERVICE_ROLE_KEY`. Agents cannot obtain it. Ask the user to put it in a gitignored `.env.secrets`. Do not paste keys in chat. See @geobase → Secrets (human in the loop).

The worker process also needs `GEOBASE_PROJECT_DB_URI` (project Postgres) in its environment — that is how features are written.

Required inputs

  • @geobase → private-beta / Studio path if CLI unavailable
  • project_ref
  • GEOBASE_SERVICE_ROLE_KEY in local secrets
  • Payload JSON:
  • areaName (required)
  • aoiGeoJson — Polygon or MultiPolygon, WGS84, closed rings
  • tablePrefix (optional; defaults to areaName)
  • mode — replace (default) | union
  • layers: prefer `types`; or `topics`; omit both → building only
  • theme — accepted for osmImportArea/kblock drop-in; ignored

Layer selection

Resolution order: types → topics → default ["building"].

Overture types → output tables
types valueTable
building{prefix}_buildings
building_part{prefix}_building_parts
segment{prefix}_streets
connector{prefix}_connectors
water{prefix}_water
land{prefix}_land
land_use{prefix}_land_use
land_cover{prefix}_land_cover
place{prefix}_places
address{prefix}_addresses
infrastructure{prefix}_infrastructure
bathymetry{prefix}_bathymetry
division{prefix}_divisions
division_area{prefix}_division_areas
division_boundary{prefix}_division_boundaries
Topic aliases (when types omitted)
AliasMaps to
kblock / buildingsbuilding
streets / roadssegment
waterwater
places / poisplace
landland
addressesaddress
boundariesdivision_boundary

Raw Overture type names are also valid inside topics.

Output columns

area_id (bigint PK), geom (typed 4326), tags (jsonb, includes overture_type), source = overture.

Size guards (fail fast)

EnvDefaultMeaning
OVERTURE_MAX_BBOX_AREA_SQ_DEG1.0Max AOI bbox area
OVERTURE_MAX_FEATURES_PER_TYPE50000Max features per type
OVERTURE_MAX_FEATURES_TOTAL100000Max across selected types
OVERTURE_PYTHON_TIMEOUT_MS1800000Python subprocess timeout

Prefer small AOIs. Reproject shapefiles to EPSG:4326 before submit (source CRS mistakes are common).

Procedure

  1. Session / project: geobase-cli whoami, geobase-cli projects refs (or Studio project_ref).
  2. Env: geobase-cli projects env <ref> --persona web --format dotenv for non-secrets; user sources .env.secrets for service role.
  3. Validate AOI:
  • WGS84 lon/lat (not UTM meters)
  • closed rings; Polygon or MultiPolygon
  1. Validate tablePrefix: prefer ^[a-z][a-z0-9_]{0,62}$ (same hygiene as OSM skill). Worker also accepts ^[a-zA-Z_][a-zA-Z0-9_]*$.
  2. Collision check: ensure {prefix}_{suffix} tables for selected types do not already exist (or user approved mode: replace).
  3. Prefer explicit types for clarity. Start with one type (e.g. building) on first run.
  4. Submit:
  • POST https://${GEOBASE_PROJECT_REF}.geobase.app/worker/jobs/overtureImportArea
  • headers: apikey + Authorization: Bearer = service role; Content-Type: application/json
  • Studio proxy (when available): POST /api/projects/{ref}/jobs/overtureImportArea
  1. Poll: GET .../worker/jobs/overtureImportArea/<job_id> — 5s then backoff (10s / 20s / 30s).
  2. On success: check metadata types, layers ([{type,table,inserted}]), row counts, source=overture.
Example payload
json
{
"areaName": "habitat_geisha",
"tablePrefix": "habitat_geisha",
"types": ["building", "segment", "water"],
"mode": "replace",
"aoiGeoJson": {
"type": "Polygon",
"coordinates": [[[33.9880641, -11.47290614], [33.98889819, -11.47421489], [33.98935488, -11.47574151], [33.9880641, -11.47290614]]]
}
}

(kblock drop-in: same shape as osmImportArea with theme/topics: ["kblock"] → buildings only.)

Submit rule (mandatory)

Only submit when AOI CRS is WGS84, prefix/collision checks passed, and layer selection matches user intent. Never silently enlarge the AOI or add heavy types (land_cover, bathymetry, divisions) without approval.

Failure handling

  • Auth → refresh service role in .env.secrets
  • Schema / unknown type → fix types / topics against the table above
  • Size-guard errors → shrink AOI, fewer types, or raise env limits with user approval
  • Wrong CRS / empty results → reproject AOI to WGS84; confirm bbox on a map
  • Missing Python deps on local worker → pip install -r apps/worker/tasks/requirements-overture.txt (no overturemaps[geopandas])
  • Preserve failed job_id and truncated result for debugging

Related skills

  • @geobase-worker-osm-import — OpenStreetMap import (shortbread topics)
  • @geobase-project-db-data-import — local files via ogr2ogr
  • @geobase — secrets, project ref, routing

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/decision-labs/geobase-skills/geobase-worker-overture-import/badge)](https://verified-skill.com/skills/decision-labs/geobase-skills/geobase-worker-overture-import)

Something wrong with this skill or its page? Tell us.