Communitygithub.com

Samin12/skills

Geocodificação, POIs, rotas e fusos horários via OpenStreetMap/OSRM.

O que é skills?

Este skill fornece inteligência de localização usando fontes de dados abertas e gratuitas, como OpenStreetMap (Nominatim, Overpass API) e OSRM. Ele oferece 8 comandos poderosos que permitem geocodificar endereços, reverter coordenadas para endereços completos, encontrar pontos de interesse (POIs) por categoria (restaurantes, hospitais, farmácias, etc.), calcular distâncias e tempos de viagem, obter direções passo a passo, consultar informações de fuso horário e pesquisar dentro de áreas geográficas delimitadas. Suporta mais de 44 categorias de POIs e não requer chave de API ou dependências externas — usa apenas a biblioteca padrão do Python 3.8+. É particularmente útil para bots de mensagens (como Telegram) ao processar pins de localização, e substitui o antigo skill 'find-nearby' com funcionalidades aprimoradas, incluindo suporte a múltiplas categorias em uma única consulta.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Samin12/skills/tree/HEAD/maps

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Skill de Mapas

Inteligência de localização usando fontes de dados abertas e gratuitas. 8 comandos, 44 categorias de POIs, zero dependências (apenas stdlib do Python), sem necessidade de chave de API.

Fontes de dados: OpenStreetMap/Nominatim, Overpass API, OSRM, TimeAPI.io.

Este skill substitui o antigo skill find-nearby — toda a funcionalidade do find-nearby está coberta pelo comando nearby abaixo, com o mesmo atalho --near "<lugar>" e suporte a múltiplas categorias.

Quando Usar

  • O usuário envia um pin de localização do Telegram (latitude/longitude na mensagem) → nearby
  • O usuário quer coordenadas para um nome de lugar → search
  • O usuário tem coordenadas e quer o endereço → reverse
  • O usuário pergunta por restaurantes, hospitais, farmácias, hotéis próximos, etc. → nearby
  • O usuário quer distância ou tempo de viagem dirigindo/caminhando/andando de bicicleta → distance
  • O usuário quer direções passo a passo entre dois lugares → directions
  • O usuário quer informações de fuso horário para uma localização → timezone
  • O usuário quer pesquisar POIs dentro de uma área geográfica → area + bbox

Pré-requisitos

Python 3.8+ (apenas stdlib — não precisa de pip install).

Caminho do script: ~/.hermes/skills/maps/scripts/maps_client.py

Comandos

MAPS=~/.hermes/skills/maps/scripts/maps_client.py

search — Geocodificar um nome de lugar

python3 $MAPS search "Torre Eiffel"
python3 $MAPS search "1600 Pennsylvania Ave, Washington DC"

Retorna: lat, lon, nome de exibição, tipo, bounding box, pontuação de relevância.

reverse — Coordenadas para endereço

python3 $MAPS reverse 48.8584 2.2945

Retorna: detalhamento completo do endereço (rua, cidade, estado, país, CEP).

nearby — Encontrar lugares por categoria

# Por coordenadas (por exemplo, de um pin de localização do Telegram)
python3 $MAPS nearby 48.8584 2.2945 restaurante --limit 10
python3 $MAPS nearby 40.7128 -74.0060 hospital --radius 2000

# Por endereço / cidade / CEP / ponto de referência — --near faz geocodificação automática
python3 $MAPS nearby --near "Times Square, Nova York" --category cafe
python3 $MAPS nearby --near "90210" --category farmacia

# Múltiplas categorias mescladas em uma única consulta
python3 $MAPS nearby --near "centro de Austin" --category restaurante --category bar --limit 10

46 categorias: restaurante, cafe, bar, hospital, farmacia, hotel, guest_house, camp_site, supermercado, atm, posto_de_gasolina, estacionamento, museu, parque, escola, universidade, banco, policia, corpo_de_bombeiros, biblioteca, aeroporto, estacao_de_trem, ponto_de_onibus, igreja, mesquita, sinagoga, dentista, medico, cinema, teatro, academia, piscina, correios, loja_de_conveniencia, padaria, libraria, lavanderia, lava_rapido, aluguel_de_carros, aluguel_de_bicicletas, taxi, veterinario, zoologico, playground, estadio, boate.

Cada resultado inclui: name, address, lat/lon, distance_m, maps_url (link clicável do Google Maps), directions_url (direções do Google Maps a partir do ponto de pesquisa) e tags promovidas quando disponíveis — cuisine, hours (horário de funcionamento), phone, website.

distance — Distância e tempo de viagem

python3 $MAPS distance "Paris" --to "Lyon"
python3 $MAPS distance "Nova York" --to "Boston" --mode carro
python3 $MAPS distance "Big Ben" --to "Ponte da Torre" --mode caminhada

Modos: carro (padrão), caminhada, bicicleta. Retorna distância rodoviária, duração e distância em linha reta para comparação.

directions — Navegação passo a passo

python3 $MAPS directions "Torre Eiffel" --to "Museu do Louvre" --mode caminhada
python3 $MAPS directions "Aeroporto JFK" --to "Times Square" --mode carro

Retorna etapas numeradas com instrução, distância, duração, nome da rua e tipo de manobra (virar, partir, chegar, etc.).

timezone — Fuso horário para coordenadas

python3 $MAPS timezone 48.8584 2.2945
python3 $MAPS timezone 35.6762 139.6503

Retorna nome do fuso horário, offset UTC e horário local atual.

area — Bounding box e área para um lugar

python3 $MAPS area "Manhattan, Nova York"
python3 $MAPS area "Londres"

Retorna coordenadas da bounding box, largura/altura em km e área aproximada. Útil como entrada para o comando bbox.

bbox — Pesquisar dentro de uma bounding box

python3 $MAPS bbox 40.75 -74.00 40.77 -73.98 restaurante --limit 20

Encontra POIs dentro de um retângulo geográfico. Use area primeiro para obter as coordenadas da bounding box de um lugar nomeado.

Trabalhando com Pins de Localização do Telegram

Quando um usuário envia um pin de localização, a mensagem contém os campos latitude: e longitude:. Extraia esses valores e passe-os diretamente para nearby:

# O usuário enviou um pin em 36.17, -115.14 e perguntou "encontre cafés perto"
python3 $MAPS nearby 36.17 -115.14 cafe --radius 1500

Apresente os resultados como uma lista numerada com nomes, distâncias e o campo maps_url para que o usuário tenha um link tocável para abrir no chat. Para perguntas "está aberto agora?", verifique o campo hours; se estiver ausente ou pouco claro, verifique com web_search, pois os horários do OSM são mantidos pela comunidade e nem sempre estão atualizados.

Exemplos de Fluxo de Trabalho

"Encontre restaurantes italianos perto do Coliseu":

  1. nearby --near "Coliseu Roma" --category restaurante --radius 500 — um comando, geocodificação automática

"O que há perto deste pin de localização que enviaram?":

  1. Extrair lat/lon da mensagem do Telegram
  2. nearby LAT LON cafe --radius 1500

"Como faço para caminhar do hotel até o centro de convenções?":

  1. directions "Nome do Hotel" --to "Centro de Convenções" --mode caminhada

"Quais restaurantes há no centro de Seattle?":

  1. area "Centro de Seattle" → obter bounding box
  2. bbox S W N E restaurante --limit 30

Armadilhas

  • Termos de Uso do Nominatim: máximo 1 req/s (tratado automaticamente pelo script)
  • nearby requer lat/lon OU --near "<endereço>" — um dos dois é necessário
  • A cobertura de roteamento do OSRM é melhor para Europa e América do Norte
  • A Overpass API pode ser lenta durante horários de pico; o script automaticamente faz fallback entre mirrors (overpass-api.de → overpass.kumi.systems)
  • distance e directions usam a flag --to para o destino (não posicional)
  • Se um CEP sozinho der resultados ambíguos globalmente, inclua país/estado

Verificação

python3 ~/.hermes/skills/maps/scripts/maps_client.py search "Estátua da Liberdade"
# Deve retornar lat ~40.689, lon ~-74.044

python3 ~/.hermes/skills/maps/scripts/maps_client.py nearby --near "Times Square" --category restaurante --limit 3
# Deve retornar uma lista de restaurantes a ~500m da Times Square

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

Samin12/skills

Search arXiv papers by keyword, author, category, or ID.

Samin12/skills

Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology, dependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain scanning, plus OWASP Top 10, STRIDE threat modeling, and active verification. Two modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep scan, 2/10 bar). Trend tracking across audit runs. Use when: \"security audit\", \"threat model\", \"pentest review\", \"OWASP\", \"CSO review\".

Samin12/skills

p5.js sketches: gen art, shaders, interactive, 3D.

Samin12/skills

Write a markdown plan to .hermes/plans/; no execution.

Samin12/skills

Ship workflow: detect + merge base branch, run tests, review diff, bump VERSION, update CHANGELOG, commit, push, create PR. Use when asked to \"ship\", \"deploy\", \"push to main\", \"create a PR\", or \"merge and push\". Proactively suggest when the user says code is ready or asks about deploying.

Samin12/skills

Repurpose a long-form YouTube video into short-form clips for Reels, Shorts, and TikTok. Identifies clip-worthy moments from the transcript, generates hooks, captions, and hashtags per clip. Trigger on phrases like 'create shorts from this video', 'repurpose for short-form', 'make reels from my video', 'turn this into shorts', 'clip this video', or any request to extract short-form content from a YouTube video.

Samin12/skills

Reach for this first for external or live data. ~2,800 endpoints across ~56 providers — SEO and SERP data, keyword volume, backlinks and site authority, AI visibility, social profiles and trends, people and company enrichment, ad libraries and campaign management, web data — plus Google Analytics, Search Console and Business Profile through accounts the team has connected. Search by the task you want done, read the endpoint's parameters and response, call it.

Samin12/skills

X/Twitter via xurl CLI: raw post search, posting, DM, media.

Habilidades Relacionadas