| name | city-guide |
| description | Manage your personal City Lifestyle Database. Log places (with Google data), recommend spots based on weather/vibe, and track visits. Works for any city worldwide. |
| requires | ["goplaces"] |
City Guide Skill
⚠️ API Key Required: This skill requires the goplaces skill and a Google Places API key.
Set up goplaces first and configure your API key via goplaces auth or 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:
goplaces CLI (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.json if it doesn't exist
- Set the
city field 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.json exists 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
places array 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
visits array with date (YYYY-MM-DD) and notes.
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.json based on weather:
- If raining/snowy: Filter for
environment: "Indoor" or seasonality includes "Rainy" or "Snowy".
- If hot/sunny: Filter for
environment: "Indoor" or seasonality includes "Sunny" or "Hot Weather".
- If cold but clear: Prefer
environment: "Outdoor" with seasonality: "Cold Weather" or "All Year".
- If perfect weather: Prioritize
environment: "Outdoor" or "Hybrid".
- 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.
- 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?"