Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

slc-eats

A Claude Code / Claude Desktop agent skill that picks where to eat in the Salt Lake City metro and Utah County — researched live, every time, for one specific event.

There's no restaurant database to maintain and nothing to keep up to date. Each invocation does a fresh sweep: local food editorial and influencers for what's new and buzzing, Reddit for what locals actually say, and the Google Places API for the facts that have to be right (is it open that night, what's it really rated, where is it).

It knows two things about you, and only two, both in files you own: a Taste Profile (what you like, how high your "special" bar is, your home base) and a Dining Log (where you've been and what you thought). Everything else is researched at ask time.

Built for use cases like:

  • "Date night Friday, somewhere we haven't been, impress me"
  • "Double date with a couple coming from Orem — where's the midpoint?"
  • "Visitors in town, what's the only-in-Utah pick?"
  • "What's new and buzzing in the last six weeks?"
  • "Log last night's dinner"
  • "Write me something I can text the other couple with the shortlist"

What it actually does differently

Most "recommend a restaurant" prompts fail in the same few ways. This skill is mostly a pile of scar tissue from those failures:

  • It verifies the place is open on your actual date before recommending it. Every finalist gets a live Places API hours check against the real calendar date. Utah is full of Sunday closures and short weekdays (open till 9 most nights, closing at 5 on a Tuesday), and a recommendation you can't act on is worthless.
  • It trusts Google's rating over search snippets. Yelp and TripAdvisor numbers in search results go stale and disagree. One spot showed 3.4 on a snippet and 4.7 across 1,709 reviews on Places. The snippet would have killed a top pick.
  • It reads review text, not star ratings, for vibe. Stars don't tell you if you can hear each other.
  • It scores an "experiential hook" separately from freshness. A new opening can be dull and a twenty-year-old room can have the best hook in the valley. When you ask for "cool" or "unique," it leads with the concept, not the opening date.
  • It gives you 5–8 options grouped by angle, not a tidy top three, plus one wildcard that's allowed to break your constraints as long as it says so.
  • It won't re-recommend a place you disliked, and it deprioritizes anything it suggested in the last 30 days.
  • It doesn't fabricate. Every claim about a restaurant needs a source found in that session, and unknowns get marked as unknown.

What's in this repo

File Purpose
SKILL.md The skill itself. Frontmatter + instructions Claude reads when triggered.
templates/Taste Profile.md Starter for your taste file. Copy and fill in.
templates/Dining Log.md Starter for your visit log. Copy; it fills itself in over time.
README.md Install + setup (this file).
LICENSE MIT.

Install

git clone https://github.com/Gunshipz/slc-eats.git ~/.claude/skills/slc-eats

On Windows (Git Bash):

git clone https://github.com/Gunshipz/slc-eats.git "$HOME/.claude/skills/slc-eats"

Claude Code auto-discovers skills in ~/.claude/skills/. New sessions pick it up automatically; restart your current one.

To update later:

cd ~/.claude/skills/slc-eats && git pull

Setup — three things before first use

1. Create your two state files

Put them anywhere you like (an Obsidian vault, a Dropbox folder, plain ~/dining/). They're yours, they never travel with the skill, and they're the only memory it has.

mkdir -p ~/dining
cp ~/.claude/skills/slc-eats/templates/"Taste Profile.md" ~/dining/
cp ~/.claude/skills/slc-eats/templates/"Dining Log.md" ~/dining/

2. Point the skill at them

Open SKILL.md and replace <DINING_DIR> with your actual folder path:

sed -i 's|<DINING_DIR>|/home/you/dining|g' ~/.claude/skills/slc-eats/SKILL.md

Use the full absolute path. On Windows, something like C:\Users\you\Documents\vault\Dining.

3. Get a Google Places API key

This is what makes the open-hours and rating checks real instead of remembered. It's free at personal scale.

  1. Create a project at console.cloud.google.com.
  2. Enable Places API (New) — not the legacy Places API.
  3. Create an API key, and restrict it to Places API (New) only.
  4. Set it as an environment variable named GOOGLE_PLACES_API_KEY.
# macOS / Linux — add to ~/.zshrc or ~/.bashrc
export GOOGLE_PLACES_API_KEY="your-key-here"
# Windows — persists for your user
[Environment]::SetEnvironmentVariable("GOOGLE_PLACES_API_KEY", "your-key-here", "User")

The skill keeps its FieldMasks minimal so calls stay on the cheaper SKUs. It only requests review snippets when it actually needs them (those are the Enterprise SKU, 1,000 free per month). A normal recommendation session is a handful of calls.

Fill in the Taste Profile properly — this is the whole ballgame

The skill is only as good as this file, and the two sections people skip are the two that matter most:

Calibration notes. Name the places that didn't impress you and why. Without this, every model on earth will hand you the same three famous upscale spots in your county forever. One honest line — " = fine, but not that special" — is worth more than any list of cuisines you enjoy.

Standing hunts. If you're looking for a specific thing locally — some dish done the way it's done somewhere else — write down the benchmark and what actually defines it. The fresh mode checks every sweep. Vague hunts get lookalike chains; defined hunts get real matches.

Optional: Tavily and Reddit

The buzz sweep uses Tavily (free tier is plenty) for editorial and influencer search. Without it the skill still works off Places plus whatever web search you have, but it loses most of the "what's new" signal.

Reddit buzz comes from the free Arctic Shift archive API — no key, no auth. It's flaky and returns 503s; the skill retries once and moves on rather than blocking.

How to ask Claude to use it

It auto-triggers on the obvious phrasings. Just ask:

  • "where should we eat friday"
  • "date night idea, somewhere new"
  • "double date saturday, they're coming from Sandy"
  • "what's new and buzzing"
  • "log last night's dinner"

Explicit invocation works too:

/slc-eats date night friday, want something unique

One invocation = one event. It'll ask you a short intake question first — occasion, who's coming, what night, what you're in the mood for — before it does any research. That's deliberate. Answer it and the slate gets much better.

Adapting it to another city

The skill is SLC/Utah County by design, and the curated local source list is most of what makes it good. To move it, edit step 2 of SKILL.md: swap the editorial sites, the influencer handles, and the subreddits for your metro's. The rest — the verification discipline, the scoring axes, the profile/log memory — is city-agnostic.

License

MIT.

About

Claude Code agent skill: per-event restaurant recommender for the SLC metro and Utah County. Live buzz research + Google Places verification, no database to maintain.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors