City Guide Skill
⚠️ API Key Required: This skill requires the
goplacesskill and a Google Places API key. Set upgoplacesfirst and configure your API key viagoplaces author environment variable.
Manage your personal city database — log places, get smart recommendations based on weather and vibe, and track your visits. Works for any city worldwide.
Data Source
- •File:
memory/city-tracker.json - •Helper:
goplacesCLI (for fetching address, rating, location data)
First-Time Setup
If memory/city-tracker.json doesn't exist, the skill will create it with this structure:
{
"city": "Your City Name",
"places": []
}
Actions
1. Set Your City
Trigger: "Set city to [City Name]", "I'm in [City]", "Change city to [City]" Procedure:
- •Create
memory/city-tracker.jsonif it doesn't exist - •Set the
cityfield to the user's city - •Confirm: "City set to [City]. Ready to log places!"
2. Log a New Place
Trigger: "Log [Place Name]", "I went to [Place]", "Add [Place]" Procedure:
- •Check City: Ensure
memory/city-tracker.jsonexists and has a city set. If not, ask the user to set their city first. - •Search: Run
goplaces search "[Place Name] [City Name]" --limit 1 --json. - •Verify: Check if the result matches the user's intent.
- •Read DB: Read
memory/city-tracker.json. - •Append: Add a new entry to the
placesarray using the Schema below.- •Auto-fill: Name, Google Place ID, Details (rating, address), Location.
- •Infer: Area (from address), Type (from
types), Environment (Indoor/Outdoor based on type/photos if available, or ask user). - •Ask User: specific notes, "Good for what weather?" (rain, snow, heat, etc.), "Vibe".
- •Save: Write back to
memory/city-tracker.json.
3. Log a Repeat Visit
Trigger: "We went back to [Place]", "Visited [Place] again" Procedure:
- •Find: Locate the place in
memory/city-tracker.json. - •Update: Add a new object to the
visitsarray withdate(YYYY-MM-DD) andnotes.
4. Recommend
Trigger: "Where should I go?", "Suggest a place for [activity]", "Dinner spot?", "It's raining, where's good?" Procedure:
- •Analyze Context:
- •Weather: Ask or infer current conditions — hot, cold, rainy, snowy, humid, windy?
- •Vibe: Chill, fancy, work, kids?
- •Filter DB: Query
memory/city-tracker.jsonbased on weather:- •If raining/snowy: Filter for
environment: "Indoor"orseasonalityincludes "Rainy" or "Snowy". - •If hot/sunny: Filter for
environment: "Indoor"orseasonalityincludes "Sunny" or "Hot Weather". - •If cold but clear: Prefer
environment: "Outdoor"withseasonality: "Cold Weather"or "All Year". - •If perfect weather: Prioritize
environment: "Outdoor"or "Hybrid".
- •If raining/snowy: Filter for
- •Vibe Check (Consensus Search):
- •For the top candidate, run multiple targeted searches across different platforms:
- •Reddit: "[Place] [City] reddit review tips"
- •Twitter/X: "[Place] [City] twitter review experience"
- •TripAdvisor: "[Place] [City] tripadvisor review"
- •Google Reviews: "[Place] [City] google reviews recent"
- •Blogs: "[Place] [City] blog review 2026"
- •Look for: Parking chaos, best arrival times, hidden gems, "tourist trap" warnings, crowd levels, and recent experiences.
- •For the top candidate, run multiple targeted searches across different platforms:
- •Output: Present 3 top options with their status (Visited/Wishlist) and a "Pro Tip" derived from the search.
JSON Schema (Enforced)
{
"city": "string (City Name)",
"places": [
{
"name": "string (Official Name)",
"area": "string (e.g. Downtown, Waterfront)",
"type": "string (Cafe, Beach, Mall, Dinner, Activity)",
"environment": "Indoor ❄️ | Outdoor ☀️ | Hybrid 🌓",
"seasonality": "All Year 🗓️ | Sunny ☀️ | Rainy 🌧️ | Snowy ❄️ | Hot Weather 🔥 | Cold Weather 🧊",
"vibe": "comma-separated tags (e.g. work, date-night, loud, quiet)",
"status": "Visited ✅ | Wishlist 📌",
"google_place_id": "string",
"details": {
"rating": number,
"address": "string",
"location": { "lat": number, "lng": number }
},
"visits": [
{
"date": "YYYY-MM-DD",
"notes": "User comments (parking, food, service)",
"companions": ["names"]
}
]
}
]
}
Nuance Guide
- •Sunny/Hot Weather: Malls, AC'd cafes, indoor play areas, beaches (with shade), pools.
- •Rainy Weather: Covered walkways, indoor markets, museums, cafes with good window views.
- •Snowy Weather: Heated indoor venues, winter markets, cozy cafes, places with fireplaces.
- •Cold but Clear: Outdoor terraces with heaters, winter activities, scenic viewpoints.
- •Humid: Places with good ventilation or AC, indoor venues.
- •Windy: Sheltered outdoor spots, indoor alternatives.
- •Parking: Always note if parking is "Valet only", "Easy", or "Street parking".
Examples
Setting up:
- •"Set my city to Dubai"
- •"I'm in London now"
Logging places:
- •"Log Black Tap"
- •"Add The Shard to my wishlist"
- •"I visited Dubai Mall yesterday"
Getting recommendations:
- •"Where should I go for dinner?"
- •"Suggest a cafe for working"
- •"It's raining, where's good indoors?"
- •"It's snowing, something cozy?"
- •"Hot day, need AC!"
- •"Where's good on a sunny day?"