nimbleway/agent-skills/local-places
Claude Code and agent skill by nimbleway/agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Discovers, enriches, and scores local businesses in any neighborhood using Nimble Web Search Agents (WSAs) and web data. Returns a structured, ranked list with confidence scores, reviews, social presence, and an interactive map. Use this skill when the user asks about local businesses, places, or neighborhood discovery. Common triggers: "find all coffee shops in", "map every bar in", "local businesses in", "discover gyms near", "what restaurants are in", "neighborhood guide for", "local places in", "find places near", "list all [business type] in [area]", "best [type] near [location]", "build a neighborhood guide", "local place search". Requires the Nimble CLI (nimble extract:templates run, nimble search, nimble extract) for live web data via WSAs and fallback search. Do NOT use for competitor analysis or monitoring (use competitor-intel), company research or deep dives (use company-deep-dive), general web search or extraction (use nimble-web-expert).
Install
npx vskill@latest install nimbleway/agent-skills/local-placesSKILL.md
Local Places
Location intelligence powered by Nimble Web Search Agents and web data APIs.
User request: $ARGUMENTS
Before running any commands, read references/nimble-playbook.md for Claude Code constraints (no shell state, no &/wait, sub-agent permissions, communication style).
Instructions
Step 0: Preflight
Follow the transport selection + standard preflight from references/nimble-playbook.md — pick CLI or MCP at session start, then run the standard preflight calls (date calc, today, profile, memory index) in parallel.
Also simultaneously:
mkdir -p ~/.nimble/memory/{reports,local-places/checkpoints}- Check for existing checkpoints:
ls ~/.nimble/memory/local-places/checkpoints/ 2>/dev/null
From the results:
- CLI missing or API key unset ->
references/profile-and-onboarding.md, stop - Tag all
nimbleCLI calls:nimble --client-source nimble-agent-skills <subcommand>. MCP requests are attributed at the transport level — seereferences/nimble-playbook.md. - Profile exists -> note the user's location preferences if any. Determine mode
using smart date windowing from references/nimble-playbook.md:
- Full mode: first run OR last run > 14 days ago
- Quick refresh: last run < 14 days ago (skip social enrichment, reviews only
for new places)
- Same-day repeat: if
last_runs.local-placesis today, check if a report
already exists at ~/.nimble/memory/reports/local-places-*[today].md. If so, ask: "Already ran today for this area. Run again for fresh data?" Don't silently re-run.
- Skip to Step 1
- No profile -> that's fine. Local places doesn't require onboarding. Proceed to Step 1.
Step 1: Parse Request & Starting Questions
Parse $ARGUMENTS for place type and location. Extract:
| Field | Required | Source | |
|---|---|---|---|
| Place type | Yes | User input ("coffee shops", "gyms", "restaurants") | |
| Location | Yes | User input ("Williamsburg", "downtown Austin", "Park Slope") | |
| Filters | Optional | User input ("with good reviews", "open late", "cheap") | |
| Output preference | Optional | User input ("map", "list", "guide") |
If both place type and location are clear from $ARGUMENTS, confirm briefly and proceed: "Searching for coffee shops in Williamsburg, Brooklyn..."
If partial or ambiguous, ask one combined question in plain text:
"What type of places are you looking for, and where? (e.g., 'coffee shops inWilliamsburg' or 'gyms near downtown Austin')"
If the user provided both but you want to scope further, use AskUserQuestion (counts as 1 of max 2 prompts):
How thorough should this search be?- Quick scan -- top results from Google Maps + Yelp (~20 places)- Comprehensive -- full discovery + social enrichment + reviews (~50+ places)- Deep dive with map -- everything above + interactive neighborhood map
Step 2: Location Disambiguation
Before any API calls, resolve the location to avoid wasted searches.
Disambiguation triggers:
- Location name exists in multiple cities/states (e.g., "Williamsburg" = Brooklyn NY
vs. Williamsburg VA)
- Location is a broad area (e.g., "downtown Austin" = multiple neighborhoods)
- Location is informal (e.g., "Soho" = NYC vs. London)
If ambiguous, ask the user (counts toward 2-prompt max):
"There are a few places called Williamsburg. Which one?"- Williamsburg, Brooklyn, NY- Williamsburg, VA- Other -- I'll specify
If unambiguous, infer the full location (city + state/country) and confirm inline: "Searching Williamsburg, Brooklyn, NY..."
After disambiguation, derive the slug for checkpointing and file paths: lowercase, hyphenated, includes city + state/country (e.g., williamsburg-brooklyn-ny).
Step 3: Check for Existing Checkpoint
Follow the Checkpointing & Resume pattern from references/memory-and-distribution.md.
Check: cat ~/.nimble/memory/local-places/checkpoints/{slug}/discovery.json 2>/dev/null
- Checkpoint found -> offer: "Found previous run ({N} places from {date}).
Resume and fill gaps, or start fresh?"
- No checkpoint -> proceed to Step 4
Step 4: WSA Discovery
Discover available WSAs for all phases before execution. Run these searches simultaneously:
From the combined results:
- Filter by
entity_type: SERP for discovery, PDP/Profile for enrichment/detail - Prefer
managed_by: "nimble"overmanaged_by: "community" - Classify into phases -- see
references/wsa-pipeline.mdfor classification strategy - Validate each with
nimble extract:templates get --extract-template-name {name}to confirm params - Cache all discovered WSA names + validated params for the rest of the run
If no WSAs found for a phase, that phase falls back to nimble search. Log which phases had WSA coverage and which are using fallback.
Step 5: Primary Search (Phase 1)
Read references/wsa-pipeline.md for category detection logic.
Run discovered maps/location WSAs simultaneously, using the validated params from Step 4:
Tertiary (conditional): Run discovered credibility WSAs only if primary + secondary return < 10 combined unique results, or if the user asked for credibility/trust data.
If any WSA fails or returns empty, fall back to: nimble search --query "[place-type] in [location]" --max-results 20 --search-depth lite
After discovery:
- Parse all results into a unified entity list
- Deduplicate following the Entity Deduplication pattern from
references/nimble-playbook.md: place_id exact match -> domain normalization -> fuzzy name + city
- Save checkpoint:
~/.nimble/memory/local-places/checkpoints/{slug}/discovery.json
Step 6: Social Enrichment (Phase 2)
For each discovered place that has a Facebook page or Instagram handle, run the social WSAs discovered in Step 4. Batch max 4 concurrent Bash calls.
Run each discovered social WSA for places with matching handles. Skip social platforms for which no WSA was discovered. If no social WSAs were found in Step 4, skip this phase entirely.
Save checkpoint: ~/.nimble/memory/local-places/checkpoints/{slug}/social.json
Step 7: Reviews (Phase 3)
For the top places (by source count and data completeness), run the review WSAs discovered in Step 4:
Batch max 4 concurrent calls. Focus on places that have a place_id or equivalent identifier from Phase 1 discovery. If no review WSAs were found in Step 4, fall back to: nimble search --query "[place-name] reviews" --max-results 5 --search-depth lite
Save checkpoint: ~/.nimble/memory/local-places/checkpoints/{slug}/reviews.json
Step 8: Food/Drink Bonus (Phase 4)
Auto-trigger when the place type category matches food/drink keywords. See references/wsa-pipeline.md for the category detection logic.
If triggered, run the delivery/food WSAs discovered in Step 4. Discovery first, then detail:
For places found on delivery platforms, fetch full details using discovered detail WSAs:
If no delivery WSAs were found in Step 4, fall back to: nimble search --query "[place-name] [location] delivery" --max-results 3 --search-depth lite
Only run for food/drink categories. Skip if category doesn't match.
Step 9: Deduplication & Confidence Scoring
Deduplication: Run a final dedup pass across all phases following the Entity Deduplication pattern from references/nimble-playbook.md. Merge fields from multiple sources into a single enriched record per place.
Confidence scoring: Follow the Entity Confidence Scoring pattern from references/nimble-playbook.md. Skill-specific target fields (N=8):
| Field | Description | |
|---|---|---|
| name | Business name | |
| address | Full street address | |
| phone | Phone number | |
| website | Website URL | |
| rating | Average rating | |
| review_count | Number of reviews | |
| social | At least one social profile | |
| hours | Operating hours |
Scoring criteria:
- High (8/8 fields + 2+ sources + 10+ reviews) -> display as
*** High - Medium (5-7/8 fields OR 2+ sources with partial data) ->
** Medium - Low (<=4/8 fields, single source, few/no reviews) ->
* Low
Step 10: Output
Present results as a numbered table sorted by confidence (High first), then by rating within each tier.
Source links are mandatory. Every place must have at least one clickable source URL (Google Maps link, Yelp listing, website, or social profile). Places without any source link should be noted in "What's Missing" but still included if they have sufficient data from WSA results.
Drill-down: After presenting, tell the user:
"Want details on any place? Say 'tell me more about #3' or ask for theinteractive map."
Step 11: Interactive Map (on request or "Deep dive" mode)
Generate an HTML file with Leaflet.js + OpenStreetMap tiles. See references/wsa-pipeline.md for the full map generation pattern and color scheme.
Save to: ~/.nimble/memory/local-places/{slug}-map-{date}.html
Open in browser: open ~/.nimble/memory/local-places/{slug}-map-{date}.html
Only generate automatically if the user chose "Deep dive with map" in Step 1. For map generation details, see references/wsa-pipeline.md. Otherwise, offer it as a follow-up action.
Step 12: Save to Memory
Make all Write calls simultaneously:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/local-places/SKILL.md
Popularity
- Repository stars
- 50
- Repository forks
- 16
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/nimbleway/agent-skills/local-places)