Overview

geo-sleuth is an Agent Skill for photo geolocation: hand a coding agent a picture, say "find where this photo was taken", and it comes back with an estimated camera position with an error radius, the direction the camera was facing, a satellite evidence image and a graded confidence. It is a standard skill folder — `SKILL.md` plus plain Python scripts, reference notes and lookup data — so the same folder runs in Claude Code, Codex, Cursor, Gemini CLI, OpenCode, GitHub Copilot and any other agent that reads `SKILL.md` and can run shell commands.
The design splits the work into three layers. Scripts decide: a candidate board (`board.py`) tracks clues, likelihood ratios, exclusions and the next place to scan. Scripts perceive and rank: around twenty single-purpose tools handle EXIF, OCR, reverse image search, OpenStreetMap Overpass queries, sun and shadow geometry, elevation skylines, CLIP-scored satellite tiles and DINOv2 + SIFT street-view matching. The model only judges — reading clues from the frame, proposing hypotheses and picking among the few candidates the scripts have ranked. Every conclusion must cite a command that actually ran in the session and the file it produced.
That approach is aimed at photos with nothing to read. Instead of signs or landmarks, the skill turns geometry into evidence: evenly spaced bridge piers become a distance ruler, shadows become a bearing, and a mountain ridge line becomes a fingerprint matched against horizons rendered from elevation data. The README walks through three worked cases (a rice paddy with a railway viaduct, a desert skyline photographed with a slightly tilted phone, and a cherry-lined street in Vancouver) step by step, and reports per-script benchmarks; the project itself notes that its blind re-runs are regression checks on already-solved photos, not accuracy on unseen ones.

OpenStreetMap data is queried live rather than shipped, elevation comes from AWS Terrain Tiles, and the project asks that it only be run on your own photos or ones you have permission to analyse — never to find people who have not agreed to be found.
What it does
- One-sentence interface: give the agent a photo and ask where it was taken; the skill returns coordinates with an error radius, camera heading, an evidence image and a graded confidence

- Skyline matching against elevation data: region scans along OSM features, ridge extraction from the photo, batch skyline scoring and a camera-roll solve in `terrain.py fit`
- OpenStreetMap Overpass tooling for feature co-occurrence, route corridors, line intersections and street-grid templates
- Image tooling: EXIF, OCR (Apple Vision on macOS, RapidOCR elsewhere), Baidu and Yandex reverse image search, CLIP-scored satellite tiles and DINOv2 + SIFT street-view ranking
- A script-driven candidate board that records clues, likelihood ratios and exclusions, so every claim points at a command and an output file
- One portable skill folder for Claude Code, Codex, Cursor, Gemini CLI, OpenCode and GitHub Copilot, with extensible per-country region packs

Getting started
geo-sleuth needs Python 3.10+, uv, curl and an agent that can run shell commands; each script declares its own dependencies and uv installs them on first use. Reverse image search also needs Google Chrome or Playwright Chromium.
Install the skill
The skills CLI installs it and asks which agents to add it to.
npx skills add Oldcircle/geo-sleuthOr install for all six agents user-wide
npx skills add Oldcircle/geo-sleuth -g -a claude-code -a codex -a cursor -a gemini-cli -a opencode -a github-copilot -yOr copy the folder by hand
`~/.agents/skills/` is read by Codex, Cursor, Gemini CLI, OpenCode and GitHub Copilot; Claude Code reads `~/.claude/skills/`.
git clone https://github.com/Oldcircle/geo-sleuth
mkdir -p ~/.agents/skills ~/.claude/skills
cp -r geo-sleuth/skills/geo-sleuth ~/.agents/skills/
ln -s ~/.agents/skills/geo-sleuth ~/.claude/skills/geo-sleuthInstall a browser for reverse image search
Only needed when neither Chrome nor Playwright Chromium is present. On Linux, add `--with-deps` for the browser system libraries.
uvx playwright install chromiumRun the environment check
From a clone of the repository (or ask your agent to run the installed skill's `scripts/doctor.py`). `--network` also probes the online services without uploading photos.
uv run skills/geo-sleuth/scripts/doctor.py
uv run skills/geo-sleuth/scripts/doctor.py --network
Ask your agent
Attach a photo and say the sentence below. The agent reads SKILL.md, runs the scripts and reports the camera position, heading and an evidence image.
find where this photo was takenCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Locate your own photos that lost their GPS data, down to the spot and direction the camera faced
- Practise open-source geolocation on photos you have permission to analyse, with every step traceable to a script output
- Work out landscape shots with no text or landmarks by matching the skyline against elevation data
- Extend the method for a country by contributing a region pack of plates, area codes and clues
How geo-sleuth compares
geo-sleuth alongside other open-source agent skills & plugins tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Superpowers | ★ 304k | A composable skills plugin that installs a spec-first, TDD, subagent-driven development methodology into Claude Code, Codex, Cursor, Gemini CLI and other coding harnesses. |
| Skills for Real Engineers | ★ 301k | Matt Pocock's everyday agent skills for coding agents, covering alignment grilling, planning, code review and research — small, composable and meant to be edited. |
| ECC | ★ 287k | An installable plugin that adds 68 agents, 286 skills, hooks, rules, memory and an agent-config security scanner to Claude Code, Codex and other coding harnesses. |
| Karpathy Coding Guidelines | ★ 223k | A Claude Code plugin and CLAUDE.md rule set built from Andrej Karpathy's observations on LLM coding pitfalls: think before coding, keep it simple, make surgical changes, and work to verifiable success criteria. |
| Ponytail | ★ 174k | A skill and plugin that makes a coding agent take the laziest correct route — a seven-rung ladder from "does this need to exist?" to "the minimum that works" — while keeping validation, security and accessibility off the chopping block. |
| Caveman | ★ 114k | A skill plus local proxy that shortens an AI coding agent's prose while leaving code, commands and paths untouched — the rule file cuts what the agent writes, the proxy compresses what it reads. |
| Addy’s Agent Skills | ★ 110k | A pack of production engineering skills for AI coding agents, with nine lifecycle slash commands — /spec, /plan, /build, /test, /review, /ship — installable into 70+ agents. |
| geo-sleuth | ★ 3.9k | An agent skill that works out where a photo was taken, and shows its evidence |