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"
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.
| 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. |
git clone https://github.com/Gunshipz/slc-eats.git ~/.claude/skills/slc-eatsOn 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 pullPut 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/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.mdUse the full absolute path. On Windows, something like
C:\Users\you\Documents\vault\Dining.
This is what makes the open-hours and rating checks real instead of remembered. It's free at personal scale.
- Create a project at console.cloud.google.com.
- Enable Places API (New) — not the legacy Places API.
- Create an API key, and restrict it to Places API (New) only.
- 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.
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.
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.
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.
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.
MIT.