Claude-skill-registry local-places
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/local-places-youjjwal-clawdbot" ~/.claude/skills/majiayu000-claude-skill-registry-local-places && rm -rf "$T"
manifest:
skills/data/local-places-youjjwal-clawdbot/SKILL.mdsource content
📍 Local Places
Find places, Go fast
Search for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.
Setup
cd {baseDir} echo "GOOGLE_PLACES_API_KEY=your-key" > .env uv venv && uv pip install -e ".[dev]" uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
Requires
GOOGLE_PLACES_API_KEY in .env or environment.
Quick Start
-
Check server:
curl http://127.0.0.1:8000/ping -
Resolve location:
curl -X POST http://127.0.0.1:8000/locations/resolve \ -H "Content-Type: application/json" \ -d '{"location_text": "Soho, London", "limit": 5}'
- Search places:
curl -X POST http://127.0.0.1:8000/places/search \ -H "Content-Type: application/json" \ -d '{ "query": "coffee shop", "location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000}, "filters": {"open_now": true, "min_rating": 4.0}, "limit": 10 }'
- Get details:
curl http://127.0.0.1:8000/places/{place_id}
Conversation Flow
- If user says "near me" or gives vague location → resolve it first
- If multiple results → show numbered list, ask user to pick
- Ask for preferences: type, open now, rating, price level
- Search with
from chosen locationlocation_bias - Present results with name, rating, address, open status
- Offer to fetch details or refine search
Filter Constraints
: exactly ONE type (e.g., "restaurant", "cafe", "gym")filters.types
: integers 0-4 (0=free, 4=very expensive)filters.price_levels
: 0-5 in 0.5 incrementsfilters.min_rating
: booleanfilters.open_now
: 1-20 for search, 1-10 for resolvelimit
: must be > 0location_bias.radius_m
Response Format
{ "results": [ { "place_id": "ChIJ...", "name": "Coffee Shop", "address": "123 Main St", "location": {"lat": 51.5, "lng": -0.1}, "rating": 4.6, "price_level": 2, "types": ["cafe", "food"], "open_now": true } ], "next_page_token": "..." }
Use
next_page_token as page_token in next request for more results.