When to Use
User needs place search, forward geocoding, reverse geocoding, routing, travel-time estimates, static map links, or provider selection for a maps workflow.
Use this skill when the agent must move between Google Maps, Apple Maps, OpenStreetMap, Mapbox, or another provider without mixing schemas, wasting quota, or opening the wrong route.
Architecture
Memory lives in ~/maps/. If ~/maps/ does not exist, run setup.md. See memory-template.md for structure.
~/maps/
|-- memory.md # Activation rules, provider defaults, and privacy/cost boundaries
|-- provider-notes.md # Known provider quirks, quota notes, and verified workarounds
|-- recurring-places.md # User-approved recurring origins, destinations, and map contexts
`-- run-log.md # Optional notes on failures, ambiguous matches, and fixes
Quick Reference
Load only the file needed for the current map task.
| Topic |
File |
| Setup and activation behavior |
setup.md |
| Memory schema and status model |
memory-template.md |
| Provider choice by task and constraint |
provider-matrix.md |
| Canonical schema and coordinate normalization |
normalization-guide.md |
| Search, route, and launch workflows |
execution-patterns.md |
| Cost controls and fallback logic |
cost-controls.md |
| Common failures and recovery steps |
troubleshooting.md |
Requirements
- No credentials required for provider selection, normalization, and map-link planning.
- Live Google Maps, Mapbox, HERE, or other paid API calls need user-approved credentials.
- Apple Maps app launching is macOS-specific, but Apple Maps link generation works anywhere a browser can open
https://maps.apple.com.
- Confirm before sending sensitive origin, destination, or itinerary data to a live provider.
Coverage
This skill is designed for mixed map work that usually fails when an agent treats every provider as interchangeable:
- place search and place-detail workflows
- forward and reverse geocoding
- route and matrix calculations
- static map or shareable map-link generation
- provider fallback when quota, privacy, or coverage changes the right choice
Core Rules
1. Separate structured data from launch actions
- Decide first whether the user wants machine-readable output, an interactive map, or both.
- Use APIs for structured records and calculations.
- Use app or browser links only when the user wants to open, preview, or share a map.
2. Normalize every provider before comparing results
- Keep coordinates internally as decimal
lat and lng, then serialize per provider.
- Track result type, confidence, place status, provider ID, timezone, and distance units before merging outputs.
- Use
normalization-guide.md whenever provider schemas disagree.
3. Bound ambiguous searches with context and confidence
- Add city, region, postal code, country, or nearby coordinates before calling search or geocode endpoints.
- If top candidates disagree on locality or type, ask a disambiguation question instead of guessing.
- Do not treat the first geocode result as truth when the provider reports approximate or partial matches.
4. Route travel distance through a route engine
- Haversine is only for radius filters, rough proximity checks, and clustering.
- For ETA, driving distance, cycling, transit, or waypoint order, use a routing or matrix engine.
- Explicitly set travel mode and units before comparing providers.
5. Choose the provider by task, cost, and privacy
- Use
provider-matrix.md to pick the cheapest provider that still meets the accuracy and policy needs of the task.
- Default to Apple Maps for app-launch workflows, Google for broad place detail coverage, and the OpenStreetMap stack for low-cost open-data fallback.
- Switch providers only when the delta is clear: richer data, safer privacy posture, better coverage, or lower cost.
6. Preview high-impact executions
- Show final route mode, origin, destination, and provider before opening routes or sharing links.
- For multiple links, repeated launches, or route changes, require explicit confirmation.
- If a link contains private notes or sensitive addresses, confirm again before execution.
7. Degrade gracefully when providers fail
- Fall back from premium APIs to open-data providers when the result quality remains acceptable.
- Cache canonicalized queries and provider IDs so repeated geocodes do not burn quota.
- If no trustworthy fallback exists, stop and explain whether the blocker is quota, precision, coverage, or privacy.
Common Traps
- Swapping
lat,lng and lng,lat -> routes jump continents or geofences miss targets.
- Truncating coordinates below 5-6 decimals -> rooftop and curbside results drift by tens to hundreds of meters.
- Treating the first geocode result as final -> duplicate street names and chain locations cause silent errors.
- Using straight-line distance for delivery or commute promises -> travel times can be off by 2-5x.
- Mixing launch URLs with API schemas -> a valid Apple Maps link does not imply a complete structured place record.
- Ignoring place status and confidence -> closed businesses and approximate addresses leak into downstream logic.
- Repeating the same paid lookup -> avoidable quota burn and inconsistent results when provider ordering changes.
External Endpoints
| Endpoint |
Data Sent |
Purpose |
| https://maps.googleapis.com |
addresses, coordinates, place queries, route parameters |
Google geocoding, places, routes, and static maps |
| https://maps.apple.com |
search text, coordinates, and route parameters |
Apple Maps links and app or browser launch |
| https://nominatim.openstreetmap.org |
address text or reverse-geocode coordinates |
OpenStreetMap geocoding fallback |
| https://router.project-osrm.org |
coordinates and route mode |
Open-source route estimates when supported |
| https://api.mapbox.com |
queries, coordinates, and route parameters |
Alternative geocoding, routing, and static maps |
No other data should be sent externally unless the user approves another provider.
Security & Privacy
Data that may leave your machine:
- address queries
- coordinates
- route origin and destination
- place-search text
- optional static-map parameters
Data that stays local:
- notes in
~/maps/
- provider preferences and fallback rules
- user-approved recurring contexts
- failure logs and verified fixes
This skill does NOT:
- store API keys in local notes
- guess precise destinations from vague requests
- treat a launch URL as proof of data accuracy
- modify its own
SKILL.md
Trust
This skill can send addresses, coordinates, and route parameters to the map provider selected for the task.
Only use live provider calls or link launches if you trust that provider with the relevant location data.
Scope
This skill ONLY:
- selects providers and execution modes for map work
- normalizes place, geocode, route, and link workflows
- prepares safe request plans, links, or structured summaries
This skill NEVER:
- invent place data, ETAs, or coverage claims
- scrape undeclared providers behind anti-bot flows
- share map links externally without approval
- persist sensitive location history without telling the user first
Related Skills
Install with clawhub install <slug> if user confirms:
apple-maps - Open Apple Maps search and route flows on macOS with local command automation.
travel - Turn approved routes, places, and movement constraints into broader trip plans.
tripadvisor - Add venue comparison and official travel-data workflows to place shortlists.
car-rental - Connect route assumptions, pickup zones, and transport choices to rental planning.
Feedback
- If useful:
clawhub star maps
- Stay updated:
clawhub sync
1---2name: maps3description: Plan place search, geocoding, routing, and map-link workflows across Google Maps, Apple Maps, OpenStreetMap, and other providers.4---56## When to Use78User needs place search, forward geocoding, reverse geocoding, routing, travel-time estimates, static map links, or provider selection for a maps workflow.9Use this skill when the agent must move between Google Maps, Apple Maps, OpenStreetMap, Mapbox, or another provider without mixing schemas, wasting quota, or opening the wrong route.1011## Architecture1213Memory lives in `~/maps/`. If `~/maps/` does not exist, run `setup.md`. See `memory-template.md` for structure.1415```text16~/maps/17|-- memory.md # Activation rules, provider defaults, and privacy/cost boundaries18|-- provider-notes.md # Known provider quirks, quota notes, and verified workarounds19|-- recurring-places.md # User-approved recurring origins, destinations, and map contexts20`-- run-log.md # Optional notes on failures, ambiguous matches, and fixes21```2223## Quick Reference2425Load only the file needed for the current map task.2627| Topic | File |28|-------|------|29| Setup and activation behavior | `setup.md` |30| Memory schema and status model | `memory-template.md` |31| Provider choice by task and constraint | `provider-matrix.md` |32| Canonical schema and coordinate normalization | `normalization-guide.md` |33| Search, route, and launch workflows | `execution-patterns.md` |34| Cost controls and fallback logic | `cost-controls.md` |35| Common failures and recovery steps | `troubleshooting.md` |3637## Requirements3839- No credentials required for provider selection, normalization, and map-link planning.40- Live Google Maps, Mapbox, HERE, or other paid API calls need user-approved credentials.41- Apple Maps app launching is macOS-specific, but Apple Maps link generation works anywhere a browser can open `https://maps.apple.com`.42- Confirm before sending sensitive origin, destination, or itinerary data to a live provider.4344## Coverage4546This skill is designed for mixed map work that usually fails when an agent treats every provider as interchangeable:47- place search and place-detail workflows48- forward and reverse geocoding49- route and matrix calculations50- static map or shareable map-link generation51- provider fallback when quota, privacy, or coverage changes the right choice5253## Core Rules5455### 1. Separate structured data from launch actions56- Decide first whether the user wants machine-readable output, an interactive map, or both.57- Use APIs for structured records and calculations.58- Use app or browser links only when the user wants to open, preview, or share a map.5960### 2. Normalize every provider before comparing results61- Keep coordinates internally as decimal `lat` and `lng`, then serialize per provider.62- Track result type, confidence, place status, provider ID, timezone, and distance units before merging outputs.63- Use `normalization-guide.md` whenever provider schemas disagree.6465### 3. Bound ambiguous searches with context and confidence66- Add city, region, postal code, country, or nearby coordinates before calling search or geocode endpoints.67- If top candidates disagree on locality or type, ask a disambiguation question instead of guessing.68- Do not treat the first geocode result as truth when the provider reports approximate or partial matches.6970### 4. Route travel distance through a route engine71- Haversine is only for radius filters, rough proximity checks, and clustering.72- For ETA, driving distance, cycling, transit, or waypoint order, use a routing or matrix engine.73- Explicitly set travel mode and units before comparing providers.7475### 5. Choose the provider by task, cost, and privacy76- Use `provider-matrix.md` to pick the cheapest provider that still meets the accuracy and policy needs of the task.77- Default to Apple Maps for app-launch workflows, Google for broad place detail coverage, and the OpenStreetMap stack for low-cost open-data fallback.78- Switch providers only when the delta is clear: richer data, safer privacy posture, better coverage, or lower cost.7980### 6. Preview high-impact executions81- Show final route mode, origin, destination, and provider before opening routes or sharing links.82- For multiple links, repeated launches, or route changes, require explicit confirmation.83- If a link contains private notes or sensitive addresses, confirm again before execution.8485### 7. Degrade gracefully when providers fail86- Fall back from premium APIs to open-data providers when the result quality remains acceptable.87- Cache canonicalized queries and provider IDs so repeated geocodes do not burn quota.88- If no trustworthy fallback exists, stop and explain whether the blocker is quota, precision, coverage, or privacy.8990## Common Traps9192- Swapping `lat,lng` and `lng,lat` -> routes jump continents or geofences miss targets.93- Truncating coordinates below 5-6 decimals -> rooftop and curbside results drift by tens to hundreds of meters.94- Treating the first geocode result as final -> duplicate street names and chain locations cause silent errors.95- Using straight-line distance for delivery or commute promises -> travel times can be off by 2-5x.96- Mixing launch URLs with API schemas -> a valid Apple Maps link does not imply a complete structured place record.97- Ignoring place status and confidence -> closed businesses and approximate addresses leak into downstream logic.98- Repeating the same paid lookup -> avoidable quota burn and inconsistent results when provider ordering changes.99100## External Endpoints101102| Endpoint | Data Sent | Purpose |103|----------|-----------|---------|104| https://maps.googleapis.com | addresses, coordinates, place queries, route parameters | Google geocoding, places, routes, and static maps |105| https://maps.apple.com | search text, coordinates, and route parameters | Apple Maps links and app or browser launch |106| https://nominatim.openstreetmap.org | address text or reverse-geocode coordinates | OpenStreetMap geocoding fallback |107| https://router.project-osrm.org | coordinates and route mode | Open-source route estimates when supported |108| https://api.mapbox.com | queries, coordinates, and route parameters | Alternative geocoding, routing, and static maps |109110No other data should be sent externally unless the user approves another provider.111112## Security & Privacy113114Data that may leave your machine:115- address queries116- coordinates117- route origin and destination118- place-search text119- optional static-map parameters120121Data that stays local:122- notes in `~/maps/`123- provider preferences and fallback rules124- user-approved recurring contexts125- failure logs and verified fixes126127This skill does NOT:128- store API keys in local notes129- guess precise destinations from vague requests130- treat a launch URL as proof of data accuracy131- modify its own `SKILL.md`132133## Trust134135This skill can send addresses, coordinates, and route parameters to the map provider selected for the task.136Only use live provider calls or link launches if you trust that provider with the relevant location data.137138## Scope139140This skill ONLY:141- selects providers and execution modes for map work142- normalizes place, geocode, route, and link workflows143- prepares safe request plans, links, or structured summaries144145This skill NEVER:146- invent place data, ETAs, or coverage claims147- scrape undeclared providers behind anti-bot flows148- share map links externally without approval149- persist sensitive location history without telling the user first150151## Related Skills152Install with `clawhub install <slug>` if user confirms:153- `apple-maps` - Open Apple Maps search and route flows on macOS with local command automation.154- `travel` - Turn approved routes, places, and movement constraints into broader trip plans.155- `tripadvisor` - Add venue comparison and official travel-data workflows to place shortlists.156- `car-rental` - Connect route assumptions, pickup zones, and transport choices to rental planning.157158## Feedback159160- If useful: `clawhub star maps`161- Stay updated: `clawhub sync`