[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74MZ95VRYC0QT42BEMCTY5Q":3,"skill-same:01M74MZ95VRYC0QT42BEMCTY5Q":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":13,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M74MZ95VRYC0QT42BEMCTY5Q","maps",null,"Geocode, POIs, routes, timezones via OpenStreetMap\u002FOSRM.","LyrikNilpferd71\u002FHermes-Backup","LyrikNilpferd71","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F187173780?v=4","01M727S8GPB77P0S9ECRRMZT58","01M727S8HF63B0MD53F496MK1V",0,"MIT","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-08-02T14-00-40+0200\u002Fskills\u002Fproductivity\u002Fmaps\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: maps\ndescription: \"Geocode, POIs, routes, timezones via OpenStreetMap\u002FOSRM.\"\nversion: 1.2.0\nauthor: Mibayy\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [maps, geocoding, places, routing, distance, directions, nearby, location, openstreetmap, nominatim, overpass, osrm]\n    category: productivity\n    requires_toolsets: [terminal]\n    supersedes: [find-nearby]\n---\n\n# Maps Skill\n\nLocation intelligence using free, open data sources. 8 commands, 44 POI\ncategories, zero dependencies (Python stdlib only), no API key required.\n\nData sources: OpenStreetMap\u002FNominatim, Overpass API, OSRM, TimeAPI.io.\n\nThis skill supersedes the old `find-nearby` skill — all of find-nearby's\nfunctionality is covered by the `nearby` command below, with the same\n`--near \"\u003Cplace>\"` shortcut and multi-category support.\n\n## When to Use\n\n- User sends a Telegram location pin (latitude\u002Flongitude in the message) → `nearby`\n- User wants coordinates for a place name → `search`\n- User has coordinates and wants the address → `reverse`\n- User asks for nearby restaurants, hospitals, pharmacies, hotels, etc. → `nearby`\n- User wants driving\u002Fwalking\u002Fcycling distance or travel time → `distance`\n- User wants turn-by-turn directions between two places → `directions`\n- User wants timezone information for a location → `timezone`\n- User wants to search for POIs within a geographic area → `area` + `bbox`\n\n## Prerequisites\n\nPython 3.8+ (stdlib only — no pip installs needed).\n\nScript path: `~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py`\n\n## Commands\n\n```bash\nMAPS=~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py\n```\n\n### search — Geocode a place name\n\n```bash\npython3 $MAPS search \"Eiffel Tower\"\npython3 $MAPS search \"1600 Pennsylvania Ave, Washington DC\"\n```\n\nReturns: lat, lon, display name, type, bounding box, importance score.\n\n### reverse — Coordinates to address\n\n```bash\npython3 $MAPS reverse 48.8584 2.2945\n```\n\nReturns: full address breakdown (street, city, state, country, postcode).\n\n### nearby — Find places by category\n\n```bash\n# By coordinates (from a Telegram location pin, for example)\npython3 $MAPS nearby 48.8584 2.2945 restaurant --limit 10\npython3 $MAPS nearby 40.7128 -74.0060 hospital --radius 2000\n\n# By address \u002F city \u002F zip \u002F landmark — --near auto-geocodes\npython3 $MAPS nearby --near \"Times Square, New York\" --category cafe\npython3 $MAPS nearby --near \"90210\" --category pharmacy\n\n# Multiple categories merged into one query\npython3 $MAPS nearby --near \"downtown austin\" --category restaurant --category bar --limit 10\n```\n\n46 categories: restaurant, cafe, bar, hospital, pharmacy, hotel, guest_house,\ncamp_site, supermarket, atm, gas_station, parking, museum, park, school,\nuniversity, bank, police, fire_station, library, airport, train_station,\nbus_stop, church, mosque, synagogue, dentist, doctor, cinema, theatre, gym,\nswimming_pool, post_office, convenience_store, bakery, bookshop, laundry,\ncar_wash, car_rental, bicycle_rental, taxi, veterinary, zoo, playground,\nstadium, nightclub.\n\nEach result includes: `name`, `address`, `lat`\u002F`lon`, `distance_m`,\n`maps_url` (clickable Google Maps link), `directions_url` (Google Maps\ndirections from the search point), and promoted tags when available —\n`cuisine`, `hours` (opening_hours), `phone`, `website`.\n\n### distance — Travel distance and time\n\n```bash\npython3 $MAPS distance \"Paris\" --to \"Lyon\"\npython3 $MAPS distance \"New York\" --to \"Boston\" --mode driving\npython3 $MAPS distance \"Big Ben\" --to \"Tower Bridge\" --mode walking\n```\n\nModes: driving (default), walking, cycling. Returns road distance, duration,\nand straight-line distance for comparison.\n\n### directions — Turn-by-turn navigation\n\n```bash\npython3 $MAPS directions \"Eiffel Tower\" --to \"Louvre Museum\" --mode walking\npython3 $MAPS directions \"JFK Airport\" --to \"Times Square\" --mode driving\n```\n\nReturns numbered steps with instruction, distance, duration, road name, and\nmaneuver type (turn, depart, arrive, etc.).\n\n### timezone — Timezone for coordinates\n\n```bash\npython3 $MAPS timezone 48.8584 2.2945\npython3 $MAPS timezone 35.6762 139.6503\n```\n\nReturns timezone name, UTC offset, and current local time.\n\n### area — Bounding box and area for a place\n\n```bash\npython3 $MAPS area \"Manhattan, New York\"\npython3 $MAPS area \"London\"\n```\n\nReturns bounding box coordinates, width\u002Fheight in km, and approximate area.\nUseful as input for the bbox command.\n\n### bbox — Search within a bounding box\n\n```bash\npython3 $MAPS bbox 40.75 -74.00 40.77 -73.98 restaurant --limit 20\n```\n\nFinds POIs within a geographic rectangle. Use `area` first to get the\nbounding box coordinates for a named place.\n\n## Working With Telegram Location Pins\n\nWhen a user sends a location pin, the message contains `latitude:` and\n`longitude:` fields. Extract those and pass them straight to `nearby`:\n\n```bash\n# User sent a pin at 36.17, -115.14 and asked \"find cafes nearby\"\npython3 $MAPS nearby 36.17 -115.14 cafe --radius 1500\n```\n\nPresent results as a numbered list with names, distances, and the\n`maps_url` field so the user gets a tap-to-open link in chat. For \"open\nnow?\" questions, check the `hours` field; if missing or unclear, verify\nwith `web_search` since OSM hours are community-maintained and not always\ncurrent.\n\n## Workflow Examples\n\n**\"Find Italian restaurants near the Colosseum\":**\n1. `nearby --near \"Colosseum Rome\" --category restaurant --radius 500`\n   — one command, auto-geocoded\n\n**\"What's near this location pin they sent?\":**\n1. Extract lat\u002Flon from the Telegram message\n2. `nearby LAT LON cafe --radius 1500`\n\n**\"How do I walk from hotel to conference center?\":**\n1. `directions \"Hotel Name\" --to \"Conference Center\" --mode walking`\n\n**\"What restaurants are in downtown Seattle?\":**\n1. `area \"Downtown Seattle\"` → get bounding box\n2. `bbox S W N E restaurant --limit 30`\n\n## Pitfalls\n\n- Nominatim ToS: max 1 req\u002Fs (handled automatically by the script)\n- `nearby` requires lat\u002Flon OR `--near \"\u003Caddress>\"` — one of the two is needed\n- OSRM routing coverage is best for Europe and North America\n- Overpass API can be slow during peak hours; the script automatically\n  falls back between mirrors (overpass-api.de → overpass.kumi.systems)\n- `distance` and `directions` use `--to` flag for the destination (not positional)\n- If a zip code alone gives ambiguous results globally, include country\u002Fstate\n\n## Verification\n\n```bash\npython3 ~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py search \"Statue of Liberty\"\n# Should return lat ~40.689, lon ~-74.044\n\npython3 ~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py nearby --near \"Times Square\" --category restaurant --limit 3\n# Should return a list of restaurants within ~500m of Times Square\n```\n","# Maps Skill\n\nLocation intelligence using free, open data sources. 8 commands, 44 POI\ncategories, zero dependencies (Python stdlib only), no API key required.\n\nData sources: OpenStreetMap\u002FNominatim, Overpass API, OSRM, TimeAPI.io.\n\nThis skill supersedes the old `find-nearby` skill — all of find-nearby's\nfunctionality is covered by the `nearby` command below, with the same\n`--near \"\u003Cplace>\"` shortcut and multi-category support.\n\n## When to Use\n\n- User sends a Telegram location pin (latitude\u002Flongitude in the message) → `nearby`\n- User wants coordinates for a place name → `search`\n- User has coordinates and wants the address → `reverse`\n- User asks for nearby restaurants, hospitals, pharmacies, hotels, etc. → `nearby`\n- User wants driving\u002Fwalking\u002Fcycling distance or travel time → `distance`\n- User wants turn-by-turn directions between two places → `directions`\n- User wants timezone information for a location → `timezone`\n- User wants to search for POIs within a geographic area → `area` + `bbox`\n\n## Prerequisites\n\nPython 3.8+ (stdlib only — no pip installs needed).\n\nScript path: `~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py`\n\n## Commands\n\n```bash\nMAPS=~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py\n```\n\n### search — Geocode a place name\n\n```bash\npython3 $MAPS search \"Eiffel Tower\"\npython3 $MAPS search \"1600 Pennsylvania Ave, Washington DC\"\n```\n\nReturns: lat, lon, display name, type, bounding box, importance score.\n\n### reverse — Coordinates to address\n\n```bash\npython3 $MAPS reverse 48.8584 2.2945\n```\n\nReturns: full address breakdown (street, city, state, country, postcode).\n\n### nearby — Find places by category\n\n```bash\n# By coordinates (from a Telegram location pin, for example)\npython3 $MAPS nearby 48.8584 2.2945 restaurant --limit 10\npython3 $MAPS nearby 40.7128 -74.0060 hospital --radius 2000\n\n# By address \u002F city \u002F zip \u002F landmark — --near auto-geocodes\npython3 $MAPS nearby --near \"Times Square, New York\" --category cafe\npython3 $MAPS nearby --near \"90210\" --category pharmacy\n\n# Multiple categories merged into one query\npython3 $MAPS nearby --near \"downtown austin\" --category restaurant --category bar --limit 10\n```\n\n46 categories: restaurant, cafe, bar, hospital, pharmacy, hotel, guest_house,\ncamp_site, supermarket, atm, gas_station, parking, museum, park, school,\nuniversity, bank, police, fire_station, library, airport, train_station,\nbus_stop, church, mosque, synagogue, dentist, doctor, cinema, theatre, gym,\nswimming_pool, post_office, convenience_store, bakery, bookshop, laundry,\ncar_wash, car_rental, bicycle_rental, taxi, veterinary, zoo, playground,\nstadium, nightclub.\n\nEach result includes: `name`, `address`, `lat`\u002F`lon`, `distance_m`,\n`maps_url` (clickable Google Maps link), `directions_url` (Google Maps\ndirections from the search point), and promoted tags when available —\n`cuisine`, `hours` (opening_hours), `phone`, `website`.\n\n### distance — Travel distance and time\n\n```bash\npython3 $MAPS distance \"Paris\" --to \"Lyon\"\npython3 $MAPS distance \"New York\" --to \"Boston\" --mode driving\npython3 $MAPS distance \"Big Ben\" --to \"Tower Bridge\" --mode walking\n```\n\nModes: driving (default), walking, cycling. Returns road distance, duration,\nand straight-line distance for comparison.\n\n### directions — Turn-by-turn navigation\n\n```bash\npython3 $MAPS directions \"Eiffel Tower\" --to \"Louvre Museum\" --mode walking\npython3 $MAPS directions \"JFK Airport\" --to \"Times Square\" --mode driving\n```\n\nReturns numbered steps with instruction, distance, duration, road name, and\nmaneuver type (turn, depart, arrive, etc.).\n\n### timezone — Timezone for coordinates\n\n```bash\npython3 $MAPS timezone 48.8584 2.2945\npython3 $MAPS timezone 35.6762 139.6503\n```\n\nReturns timezone name, UTC offset, and current local time.\n\n### area — Bounding box and area for a place\n\n```bash\npython3 $MAPS area \"Manhattan, New York\"\npython3 $MAPS area \"London\"\n```\n\nReturns bounding box coordinates, width\u002Fheight in km, and approximate area.\nUseful as input for the bbox command.\n\n### bbox — Search within a bounding box\n\n```bash\npython3 $MAPS bbox 40.75 -74.00 40.77 -73.98 restaurant --limit 20\n```\n\nFinds POIs within a geographic rectangle. Use `area` first to get the\nbounding box coordinates for a named place.\n\n## Working With Telegram Location Pins\n\nWhen a user sends a location pin, the message contains `latitude:` and\n`longitude:` fields. Extract those and pass them straight to `nearby`:\n\n```bash\n# User sent a pin at 36.17, -115.14 and asked \"find cafes nearby\"\npython3 $MAPS nearby 36.17 -115.14 cafe --radius 1500\n```\n\nPresent results as a numbered list with names, distances, and the\n`maps_url` field so the user gets a tap-to-open link in chat. For \"open\nnow?\" questions, check the `hours` field; if missing or unclear, verify\nwith `web_search` since OSM hours are community-maintained and not always\ncurrent.\n\n## Workflow Examples\n\n**\"Find Italian restaurants near the Colosseum\":**\n1. `nearby --near \"Colosseum Rome\" --category restaurant --radius 500`\n   — one command, auto-geocoded\n\n**\"What's near this location pin they sent?\":**\n1. Extract lat\u002Flon from the Telegram message\n2. `nearby LAT LON cafe --radius 1500`\n\n**\"How do I walk from hotel to conference center?\":**\n1. `directions \"Hotel Name\" --to \"Conference Center\" --mode walking`\n\n**\"What restaurants are in downtown Seattle?\":**\n1. `area \"Downtown Seattle\"` → get bounding box\n2. `bbox S W N E restaurant --limit 30`\n\n## Pitfalls\n\n- Nominatim ToS: max 1 req\u002Fs (handled automatically by the script)\n- `nearby` requires lat\u002Flon OR `--near \"\u003Caddress>\"` — one of the two is needed\n- OSRM routing coverage is best for Europe and North America\n- Overpass API can be slow during peak hours; the script automatically\n  falls back between mirrors (overpass-api.de → overpass.kumi.systems)\n- `distance` and `directions` use `--to` flag for the destination (not positional)\n- If a zip code alone gives ambiguous results globally, include country\u002Fstate\n\n## Verification\n\n```bash\npython3 ~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py search \"Statue of Liberty\"\n# Should return lat ~40.689, lon ~-74.044\n\npython3 ~\u002F.hermes\u002Fskills\u002Fmaps\u002Fscripts\u002Fmaps_client.py nearby --near \"Times Square\" --category restaurant --limit 3\n# Should return a list of restaurants within ~500m of Times Square\n```\n",{"name":5,"author":23,"license":14,"version":24,"metadata":25,"description":7},"Mibayy","1.2.0",{"hermes":26},{"tags":27,"category":39,"supersedes":40,"requires_toolsets":42},[5,28,29,30,31,32,33,34,35,36,37,38],"geocoding","places","routing","distance","directions","nearby","location","openstreetmap","nominatim","overpass","osrm","productivity",[41],"find-nearby",[43],"terminal","main","404fd33aabef3b6bc1cc913117ba2160ade62625","snapshots\u002F2026-08-02T14-00-40+0200\u002Fskills\u002Fproductivity\u002Fmaps","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71","2026-11-08 20:00:57",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add LyrikNilpferd71\u002FHermes-Backup --skill maps",{"tool":56,"command":57},"bunx","bunx skills add LyrikNilpferd71\u002FHermes-Backup --skill maps",{"tool":59,"command":60},"pnpm","pnpm dlx skills add LyrikNilpferd71\u002FHermes-Backup --skill maps","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-08-02T14-00-40+0200\u002Fskills\u002Fproductivity\u002Fmaps\u002FSKILL.md",true,[64],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Fmaps_client.py","SCRIPT","脚本",46688,"https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-08-02T14-00-40+0200\u002Fskills\u002Fproductivity\u002Fmaps\u002Fscripts\u002Fmaps_client.py",[71,79,86,93,100,107],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":78},"01M76BBCCNA7WQ82Q8QNZH8PBK","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":78},"01M76BB8YS41CA3NKW0YMSSB88","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":78},"01M76BB680FPNT998E1GM2QW10","subagent-driven-development","Execute plans via delegate_task subagents (2-stage review).","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fsubagent-driven-development\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":78},"01M76BB3C4ZB9S4RWPMM8MX0YB","plan","Write a markdown plan to .hermes\u002Fplans\u002F; no execution.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fplan\u002FSKILL.md",[],[],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":78},"01M76BB0NK28KMP51YDB5R3EXA","hermes-agent-skill-authoring","Author in-repo SKILL.md files: frontmatter and structure.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fhermes-agent-skill-authoring\u002FSKILL.md",[],[],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":78},"01M76BAYV58H0CKNSTZE3ZH4NY","debugging-hermes-tui-commands","Debug Hermes TUI slash commands: Python, gateway, Ink UI.","https:\u002F\u002Fgithub.com\u002FLyrikNilpferd71\u002FHermes-Backup\u002Fblob\u002Fmain\u002Fsnapshots\u002F2026-11-08T13-00-51+0100\u002Fskills\u002Fsoftware-development\u002Fdebugging-hermes-tui-commands\u002FSKILL.md",[],[]]