
Mapkit
Implement SwiftUI MapKit store locators with search, markers, routing, and location privacy on iOS 18.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill mapkitWhat is this skill?
- SwiftUI-first MapKit: Map, Marker/Annotation, MapCameraPosition, MapPolyline—not legacy MKMapView by default
- MKLocalSearchCompleter autocomplete plus MKLocalSearch for results with debounced input
- Directions via MKDirections.Request and route overlay with MapPolyline(route.polyline)
- Selection binding with matching map tags and detail UI on marker tap
- NSLocationWhenInUseUsageDescription, denied-location UX, and lifecycle-scoped task cancellation
Adoption & trust: 1.2k installs on skills.sh; 713 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Vercel React Native Skillsvercel-labs/agent-skills
Firebase Basicsfirebase/agent-skills
Building Native Uiexpo/skills
Firebase Ai Logic Basicsfirebase/agent-skills
Native Data Fetchingexpo/skills
Firebase Firestorefirebase/agent-skills
Journey fit
Common Questions / FAQ
Is Mapkit safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Mapkit
{ "skill_name": "mapkit", "evals": [ { "id": 0, "prompt": "I'm building a SwiftUI store locator for iOS 18. Sketch the MapKit implementation for a searchable map with autocomplete, markers for results, marker selection that shows details, a route overlay to the selected store, and a user-location button. Include the privacy and cancellation details that matter.", "expected_output": "A SwiftUI MapKit implementation plan that uses Map, Marker or Annotation, MapCameraPosition, MKLocalSearchCompleter plus MKLocalSearch, Map selection tags, MKDirections and MapPolyline, UserAnnotation or MapUserLocationButton, and CoreLocation authorization/task cancellation guidance.", "files": [], "expectations": [ "Uses SwiftUI MapKit APIs such as Map, Marker or Annotation, MapCameraPosition, map controls, and MapPolyline rather than defaulting to MKMapView.", "Describes MKLocalSearchCompleter for autocomplete and MKLocalSearch.Request(completion:) or naturalLanguageQuery for full search results, with debounced input.", "Handles map selection with a binding and tags whose type matches the selected value.", "Builds directions with MKDirections.Request and displays the selected route with MapPolyline(route.polyline).", "Includes NSLocationWhenInUseUsageDescription and a denied-location UI path such as a Settings deep link.", "Cancels or scopes live location/search tasks to the view lifecycle and avoids running location updates indefinitely." ] }, { "id": 1, "prompt": "Review this location feature plan: create a CLMonitor every time the view appears, monitor 45 circular regions for coupons, request Always location on launch, start liveUpdates forever, and use background location without a Live Activity or CLBackgroundActivitySession. What should I change for iOS 18+?", "expected_output": "A correction-focused CoreLocation review that uses CLServiceSession only for active user-facing features, limits CLMonitor conditions, keeps monitor/event subscriptions stable, uses CLLocationUpdate.liveUpdates with filtering and cancellation, and explains the background-location requirements.", "files": [], "expectations": [ "Rejects requesting Always authorization on launch and recommends when-in-use first, with CLServiceSession scoped to the feature lifetime on iOS 18+.", "States that CLMonitor condition monitoring is limited to 20 conditions per app and the app must prioritize or rotate regions.", "Warns against rapidly recreating CLMonitor instances with the same name and recommends a long-lived monitor plus add/remove diffing.", "Uses CLLocationUpdate.liveUpdates() as an async sequence and filters invalid or inaccurate locations while cancelling the task when not needed.", "Explains that background updates require the Location updates background mode and either a CLBackgroundActivitySession or Live Activity, with active update or monitor subscriptions.", "Mentions handling denied/global-denied/location-unavailable diagnostics or degraded behavior instead of silently failing." ] }, { "id": 2, "prompt": "I need a navigation experience that shows a map inside CarPlay, opens a small App Clip from a place card, and pairs a BLE beacon when the user enters a geofence. Which parts belong in this MapKit skill, and where should the other pieces go?", "expected_output": "A boundary-aware answer that keeps MapKit/CoreLocation responsibilities in scope while routing CarPlay templates, App Clip invocation, and BLE accessory setup to the appropriate sibling skills or frameworks.", "files": [], "expectations": [ "Keeps MapKit/CoreLocation scope to maps, annotations, routes, geocoding/search, user location, CLMonitor geofencing, and background location constraints.", "Routes CarPlay map templates, navigation alerts, and CarPlay-specific UI t