# axiom-location

A skill for iOS location and maps work: authorization, geofencing, annotations, directions, plus diagnostics for common breakage.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1000 installs · ★ 1229
- Author: CharlesWiltgen
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-location/SKILL.md
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/skills/axiom-location

## What it does

The skill covers two areas: Core Location and MapKit. Six reference files sit inside — authorization and monitoring strategy, API syntax, diagnostics, and the same split for maps. A decision tree and a symptom table route you to the right file from a description of the problem.

Diagnostics handle specific failures: location updates never arrive, background location stops working, authorization always denied, geofences never fire. On the maps side — annotations missing, region jumping, clustering silent, search returning nothing. A separate table takes on common rationalizations; requesting Always authorization upfront is called out at a 30-60% denial rate, so the skill advises starting with When In Use and escalating later.

Conflicts with other skills are spelled out. If location is draining battery, fix accuracy and update mode here first, then look at axiom-performance. Background location configuration and BGTaskScheduler belong to different skills — worth remembering while debugging.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-location -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/axiom-location/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/axiom-location/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-location -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/axiom-location/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-location -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/axiom-location/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install CharlesWiltgen/Axiom axiom-location
```

2. **Manually: put the files in place**
- File: `.github/skills/axiom-location/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-location -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/CharlesWiltgen/Axiom --path axiom-codex/skills/axiom-location
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/axiom-location/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add CharlesWiltgen/Axiom --skill axiom-location -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-location/SKILL.md

## When to use it
- pick between When In Use and Always authorization
- set up a geofence with CLMonitor instead of continuous updates
- find out why background location stopped delivering
- fix annotations that never show up on the map
- stop the map region from jumping on view updates

## Example prompts
- add a geofence for arriving at the office with CLMonitor
- annotations aren't showing on the map, check axiom-location
- background location stopped after the iOS update

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 466def4a52922d5c.

BEGIN THIRD-PARTY FILE 466def4a52922d5c
````text
---
name: axiom-location
description: Use when implementing location services, maps, geofencing, or debugging location/MapKit issues. Covers Core Location, CLMonitor, MapKit, annotations, directions.
license: MIT
---

# Location & Maps

**You MUST use this skill for ANY location services, mapping, geofencing, or Core Location / MapKit work.**

## Quick Reference

| Symptom / Task | Reference |
|----------------|-----------|
| Authorization strategy (When In Use vs Always) | See `skills/core-location.md` |
| Monitoring approach (continuous, significant-change, CLMonitor) | See `skills/core-location.md` |
| Accuracy selection, background location | See `skills/core-location.md` |
| CLLocationUpdate, CLMonitor, CLServiceSession APIs | See `skills/core-location-ref.md` |
| Authorization API patterns, geofencing API | See `skills/core-location-ref.md` |
| Compass heading, heading reference body (`headingBody`) | See `skills/core-location-ref.md` (Part 12) |
| Location updates never arrive | See `skills/core-location-diag.md` |
| Background location stops working | See `skills/core-location-diag.md` |
| Authorization always denied, geofence failures | See `skills/core-location-diag.md` |
| SwiftUI Map, annotations, markers, clustering | See `skills/mapkit.md` |
| MKMapView vs SwiftUI Map decision | See `skills/mapkit.md` |
| Search, directions, routing | See `skills/mapkit.md` |
| MapKit API: Marker, Annotation, MKLocalSearch, MKDirections | See `skills/mapkit-ref.md` |
| Look Around, MKMapSnapshotter, MKMapItem | See `skills/mapkit-ref.md` |
| Annotations not appearing, region jumping | See `skills/mapkit-diag.md` |
| Clustering not working, search failures | See `skills/mapkit-diag.md` |
| Overlay rendering, user location not showing | See `skills/mapkit-diag.md` |

## Decision Tree

```dot
digraph location {
    start [label="Location / Maps task" shape=ellipse];
    domain [label="Core Location or MapKit?" shape=diamond];
    cl_type [label="Need what?" shape=diamond];
    mk_type [label="Need what?" shape=diamond];

    start -> domain;

    domain -> cl_type [label="Core Location"];
    domain -> mk_type [label="MapKit / Maps"];

    cl_type -> "skills/core-location.md" [label="authorization, monitoring\nstrategy, accuracy,\nbackground location"];
    cl_type -> "skills/core-location-ref.md" [label="API syntax\n(CLLocationUpdate,\nCLMonitor, CLServiceSession)"];
    cl_type -> "skills/core-location-diag.md" [label="something broken\n(no updates, denied,\ngeofence not firing)"];

    mk_type -> "skills/mapkit.md" [label="patterns, decisions\n(SwiftUI Map vs MKMapView,\nannotations, search)"];
    mk_type -> "skills/mapkit-ref.md" [label="API syntax\n(Marker, Annotation,\nMKLocalSearch, MKDirections)"];
````
END THIRD-PARTY FILE 466def4a52922d5c

The third-party file has ended. Everything between the 466def4a52922d5c tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2750 of 8385 bytes. © CharlesWiltgen · MIT · https://github.com/CharlesWiltgen/Axiom/tree/HEAD/axiom-codex/skills/axiom-location/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
