Individual skill
geo-sleuth
Geolocate or chronolocate a photo with tool-verified reasoning (where was this taken / when was it taken / photo geolocation / geo-guessing). Given one or more photos, intake.py does metadata, OCR and reverse image search (Baidu/Yandex) in one command; clues and candidates go on a candidate board (board.py) that ranks them and gives the next step; clues.py looks up calling codes, driving side, plates and area codes from region packs; for satellite and street view the machine ranks first and you look only at the top few (CLIP in sat_scan.py, DINOv2+SIFT in match.py); plus sun and shadow math, OSM Overpass and DEM skylines. Every conclusion is checked against real data; output is coordinates + error radius, evidence images and tiered confidence. Use when the user shares a photo and asks where was this taken / geolocate this / when was this taken / 这是哪 / 在哪拍的 / 帮我定位这张照片 / 网络迷踪 / 图寻 / 几点拍的.
skills/geo-sleuth/SKILL.md
Source commit 5aeec412c5496136b4b36259679f79b8a2d09cec
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 6,665
- Repository last updated
- Nov 5, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- claude-code Repository topic
- geoguessr Repository topic
- geolocation Repository topic
- osint Repository topic
- agent-skills Repository topic
- geoint Repository topic
- openstreetmap Repository topic
- photo-geolocation Repository topic
- computer-vision Repository topic
- image-geolocation Repository topic
- data Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesSKILL.mdcore · 27,456 bytesdata/README.mddoc · 2,725 bytesdata/calling_codes.jsonasset · 20,961 bytesdata/country_names.jsonasset · 28,841 bytesdata/driving_side.jsonasset · 32,964 bytesdata/territories.jsonasset · 14,436 bytesreferences/aerial.mddoc · 6,257 bytesreferences/clues/README.mddoc · 2,406 bytesreferences/clues/global.mddoc · 20,412 bytesreferences/corridors.mddoc · 20,335 bytesreferences/data-sources.mddoc · 13,054 bytesreferences/geometry.mddoc · 38,163 bytesreferences/observe.mddoc · 8,479 bytesreferences/search.mddoc · 17,951 bytesreferences/sky.mddoc · 13,217 bytesreferences/skyline-fallback.mddoc · 5,991 bytesreferences/verify.mddoc · 14,465 bytesregions/README.mddoc · 7,557 bytesregions/_template/README.mddoc · 309 bytesregions/_template/clues.mddoc · 581 bytesregions/_template/region.jsonasset · 211 bytesregions/ca/clues.mddoc · 1,108 bytesregions/ca/region.jsonasset · 154 bytesregions/cn/clues.mddoc · 19,243 bytesregions/cn/data/admin.jsonasset · 332,965 bytesregions/cn/data/area_codes.jsonasset · 62,183 bytesregions/cn/data/plates.jsonasset · 46,640 bytesregions/cn/region.jsonasset · 1,362 bytesregions/cn/search.mddoc · 2,792 bytesregions/cn/tests.jsonasset · 1,190 bytesregions/il/clues.mddoc · 1,884 bytesregions/il/data/admin.jsonasset · 2,751 bytesregions/il/data/area_codes.jsonasset · 2,704 bytesregions/il/region.jsonasset · 616 bytesregions/il/tests.jsonasset · 1,061 bytesregions/jp/clues.mddoc · 2,395 bytesregions/jp/region.jsonasset · 149 bytesregions/kg/clues.mddoc · 8,861 bytesregions/kg/data/admin.jsonasset · 2,701 bytesregions/kg/data/area_codes.jsonasset · 9,686 bytesregions/kg/data/plates.jsonasset · 2,055 bytesregions/kg/data/plates_1994.jsonasset · 2,527 bytesregions/kg/region.jsonasset · 1,245 bytesregions/kg/tests.jsonasset · 2,456 bytesregions/lk/clues.mddoc · 3,198 bytesregions/lk/data/admin.jsonasset · 4,297 bytesregions/lk/data/area_codes.jsonasset · 8,150 bytesregions/lk/data/plates.jsonasset · 1,255 bytesregions/lk/region.jsonasset · 574 bytesregions/lk/tests.jsonasset · 3,242 bytesregions/mm/clues.mddoc · 509 bytesregions/mm/region.jsonasset · 164 bytesregions/mx/clues.mddoc · 1,316 bytesregions/mx/region.jsonasset · 167 bytesregions/nz/clues.mddoc · 4,797 bytesregions/nz/region.jsonasset · 518 bytesregions/tr/clues.mddoc · 6,170 bytesregions/tr/data/admin.jsonasset · 6,713 bytesregions/tr/data/area_codes.jsonasset · 4,919 bytesregions/tr/data/plates.jsonasset · 4,997 bytesregions/tr/region.jsonasset · 628 bytesregions/tr/tests.jsonasset · 1,046 bytesregions/us/clues.mddoc · 628 bytesregions/us/region.jsonasset · 204 bytesscripts/_browser.pyruns · 1,205 bytesscripts/_device.pyruns · 1,160 bytesscripts/_image.pyruns · 12,521 bytesscripts/_net.pyruns · 1,672 bytesscripts/baidu_pano.pyruns · 17,750 bytesscripts/board.pyruns · 66,285 bytesscripts/clues.pyruns · 12,885 bytesscripts/doctor.pyruns · 9,988 bytesscripts/evidence.pyruns · 8,098 bytesscripts/exif.pyruns · 3,971 bytesscripts/gazetteer.pyruns · 21,726 bytesscripts/geo.pyruns · 65,142 bytesscripts/gsv.pyruns · 22,403 bytesscripts/imgprep.pyruns · 17,107 bytesscripts/intake.pyruns · 22,870 bytesscripts/match.pyruns · 22,535 bytesscripts/ocr.pyruns · 8,380 bytesscripts/osm.pyruns · 50,485 bytesscripts/poi.pyruns · 11,138 bytesscripts/pose.pyruns · 26,506 bytesscripts/refresh.pyruns · 27,083 bytesscripts/regions.pyruns · 27,905 bytesscripts/revimg.pyruns · 21,786 bytesscripts/sat_scan.pyruns · 16,396 bytesscripts/sun.pyruns · 31,171 bytesscripts/terrain.pyruns · 99,947 bytesscripts/tiles.pyruns · 15,333 bytestests/test_board.pyruns · 13,484 bytestests/test_gazetteer.pyruns · 14,379 bytestests/test_match.pyruns · 4,729 bytestests/test_regions.pyruns · 20,347 bytestests/test_runtime.pyruns · 79,952 bytestests/test_sun.pyruns · 2,379 bytestests/test_terrain.pyruns · 13,185 bytes
Read excerpt
# geo-sleuth (v2)
Goal: find a location that **holds up under checking**. Every conclusion must point to the clue it used, the command it ran and the file it produced.
> `${CLAUDE_SKILL_DIR}` in commands means the directory containing this SKILL.md (the same for commands in references). Claude Code substitutes it automatically; in other agents, first `export CLAUDE_SKILL_DIR=<absolute path of this directory>` before running (if the shell doesn't keep variables between commands, prefix every command with it), or replace it with that path directly.
The work is split into three layers. Remember this first, then read the flow:
| Layer | Who | Tools |
|---|---|---|
| Decision: which candidates exist, how evidence is scored, whether a candidate can be excluded, what to scan next | **Script** (candidate board) | `board.py` |
| Perception: reading text, table lookups, finding targets in satellite imagery, street-view matching | **Scripts compute and rank first; you look only at the top few** | `intake.py` `ocr.py` `clues.py` `sat_scan.py` `match.py` `geo.py bearings` |
| Judgment: pulling clues out of the image, proposing hypotheses when the tables have nothing, deciding among the machine's top few | **You** | — |