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?"
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: city-guide3description: 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. Use when this capability is needed.4---56# City Guide Skill78> **⚠️ API Key Required:** This skill requires the `goplaces` skill and a Google Places API key. 9> Set up `goplaces` first and configure your API key via `goplaces auth` or environment variable.1011Manage your personal city database — log places, get smart recommendations based on weather and vibe, and track your visits. Works for **any city worldwide**.1213## Data Source14- **File:** `memory/city-tracker.json`15- **Helper:** `goplaces` CLI (for fetching address, rating, location data)1617## First-Time Setup1819If `memory/city-tracker.json` doesn't exist, the skill will create it with this structure:2021```json22{23 "city": "Your City Name",24 "places": []25}26```2728## Actions2930### 1. Set Your City31**Trigger:** "Set city to [City Name]", "I'm in [City]", "Change city to [City]"32**Procedure:**331. Create `memory/city-tracker.json` if it doesn't exist342. Set the `city` field to the user's city353. Confirm: "City set to [City]. Ready to log places!"3637### 2. Log a New Place38**Trigger:** "Log [Place Name]", "I went to [Place]", "Add [Place]"39**Procedure:**401. **Check City:** Ensure `memory/city-tracker.json` exists and has a city set. If not, ask the user to set their city first.412. **Search:** Run `goplaces search "[Place Name] [City Name]" --limit 1 --json`.423. **Verify:** Check if the result matches the user's intent.434. **Read DB:** Read `memory/city-tracker.json`.445. **Append:** Add a new entry to the `places` array using the **Schema** below.45 * *Auto-fill:* Name, Google Place ID, Details (rating, address), Location.46 * *Infer:* Area (from address), Type (from `types`), Environment (Indoor/Outdoor based on type/photos if available, or ask user).47 * *Ask User:* specific notes, "Good for what weather?" (rain, snow, heat, etc.), "Vibe".485. **Save:** Write back to `memory/city-tracker.json`.4950### 3. Log a Repeat Visit51**Trigger:** "We went back to [Place]", "Visited [Place] again"52**Procedure:**531. **Find:** Locate the place in `memory/city-tracker.json`.542. **Update:** Add a new object to the `visits` array with `date` (YYYY-MM-DD) and `notes`.5556### 4. Recommend57**Trigger:** "Where should I go?", "Suggest a place for [activity]", "Dinner spot?", "It's raining, where's good?"58**Procedure:**591. **Analyze Context:**60 * **Weather:** Ask or infer current conditions — hot, cold, rainy, snowy, humid, windy?61 * **Vibe:** Chill, fancy, work, kids?622. **Filter DB:** Query `memory/city-tracker.json` based on weather:63 * *If raining/snowy:* Filter for `environment: "Indoor"` or `seasonality` includes "Rainy" or "Snowy".64 * *If hot/sunny:* Filter for `environment: "Indoor"` or `seasonality` includes "Sunny" or "Hot Weather".65 * *If cold but clear:* Prefer `environment: "Outdoor"` with `seasonality: "Cold Weather"` or "All Year".66 * *If perfect weather:* Prioritize `environment: "Outdoor"` or "Hybrid".673. **Vibe Check (Consensus Search):**68 * For the top candidate, run multiple targeted searches across different platforms:69 * **Reddit:** "[Place] [City] reddit review tips"70 * **Twitter/X:** "[Place] [City] twitter review experience"71 * **TripAdvisor:** "[Place] [City] tripadvisor review"72 * **Google Reviews:** "[Place] [City] google reviews recent"73 * **Blogs:** "[Place] [City] blog review 2026"74 * Look for: Parking chaos, best arrival times, hidden gems, "tourist trap" warnings, crowd levels, and recent experiences.754. **Output:** Present 3 top options with their status (Visited/Wishlist) and a **"Pro Tip"** derived from the search.7677## JSON Schema (Enforced)7879```json80{81 "city": "string (City Name)",82 "places": [83 {84 "name": "string (Official Name)",85 "area": "string (e.g. Downtown, Waterfront)",86 "type": "string (Cafe, Beach, Mall, Dinner, Activity)",87 "environment": "Indoor ❄️ | Outdoor ☀️ | Hybrid 🌓",88 "seasonality": "All Year 🗓️ | Sunny ☀️ | Rainy 🌧️ | Snowy ❄️ | Hot Weather 🔥 | Cold Weather 🧊",89 "vibe": "comma-separated tags (e.g. work, date-night, loud, quiet)",90 "status": "Visited ✅ | Wishlist 📌",91 "google_place_id": "string",92 "details": {93 "rating": number,94 "address": "string",95 "location": { "lat": number, "lng": number }96 },97 "visits": [98 {99 "date": "YYYY-MM-DD",100 "notes": "User comments (parking, food, service)",101 "companions": ["names"]102 }103 ]104 }105 ]106}107```108109## Nuance Guide110- **Sunny/Hot Weather:** Malls, AC'd cafes, indoor play areas, beaches (with shade), pools.111- **Rainy Weather:** Covered walkways, indoor markets, museums, cafes with good window views.112- **Snowy Weather:** Heated indoor venues, winter markets, cozy cafes, places with fireplaces.113- **Cold but Clear:** Outdoor terraces with heaters, winter activities, scenic viewpoints.114- **Humid:** Places with good ventilation or AC, indoor venues.115- **Windy:** Sheltered outdoor spots, indoor alternatives.116- **Parking:** Always note if parking is "Valet only", "Easy", or "Street parking".117118## Examples119120**Setting up:**121- "Set my city to Dubai"122- "I'm in London now"123124**Logging places:**125- "Log Black Tap"126- "Add The Shard to my wishlist"127- "I visited Dubai Mall yesterday"128129**Getting recommendations:**130- "Where should I go for dinner?"131- "Suggest a cafe for working"132- "It's raining, where's good indoors?"133- "It's snowing, something cozy?"134- "Hot day, need AC!"135- "Where's good on a sunny day?"136137---138> Converted and distributed by [TomeVault](https://tomevault.io/claim/hashmil) — claim your Tome and manage your conversions.139<!-- tomevault:4.0:skill_md:2026-04-11 -->