Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add geezerrrr/motive --skill local-placesgit clone --depth 1 https://github.com/geezerrrr/motiveWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/geezerrrr/motive/local-places)<a href="https://agentmods.dev/skills/geezerrrr/motive/local-places"><img src="https://agentmods.dev/badge/skills/geezerrrr/motive/local-places/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/geezerrrr/motive/local-places"><img src="https://agentmods.dev/badge/skills/geezerrrr/motive/local-places.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00022 | $0.00784 |
| Opus 5.5 | $0.00009 | $0.00314 |
| Sonnet 5.5 | $0.00004 | $0.00157 |
| Haiku 4.5 | $0.00002 | $0.00078 |
Grade A, and why
local-places scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
1. **Check server:** `curl http://127.0.0.1:8000/ping` Copies of this mod
8 near-identical copies found in the catalogue:
- local-places — 100% identical, 0 lines differ
- local-places — 100% identical, 0 lines differ
- local-places — 100% identical, 0 lines differ
- local-places — 100% identical, 0 lines differ
- local-places — 94% identical, 17 lines differ
- local-places — 94% identical, 19 lines differ
- local-places — 94% identical, 19 lines differ
- local-places — 92% identical, 17 lines differ
How it starts
The opening of the file, as written. The whole thing — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.
📍 Local Places
Find places, Go fast
Search for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.
Setup
cd {baseDir}
echo "GOOGLE_PLACES_API_KEY=your-key" > .env
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
Requires GOOGLE_PLACES_API_KEY in .env or environment.
Quick Start
-
Check server:
curl http://127.0.0.1:8000/ping -
Resolve location:
curl -X POST http://127.0.0.1:8000/locations/resolve \
-H "Content-Type: application/json" \
-d '{"location_text": "Soho, London", "limit": 5}'
- Search places:
curl -X POST http://127.0.0.1:8000/places/search \
-H "Content-Type: application/json" \
-d '{
"query": "coffee shop",
"location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000},
"filters": {"open_now": true, "min_rating": 4.0},
"limit": 10
}'
- Get details:
curl http://127.0.0.1:8000/places/{place_id}
Conversation Flow
- If user says "near me" or gives vague location → resolve it first
- If multiple results → show numbered list, ask user to pick
- Ask for preferences: type, open now, rating, price level
- Search with
location_biasfrom chosen location - Present results with name, rating, address, open status
- Offer to fetch details or refine search
Filter Constraints
filters.types: exactly ONE type (e.g., "restaurant", "cafe", "gym")filters.price_levels: integers 0-4 (0=free, 4=very expensive)filters.min_rating: 0-5 in 0.5 incrementsfilters.open_now: booleanlimit: 1-20 for search, 1-10 for resolvelocation_bias.radius_m: must be > 0
Response Format
{
"results": [
{
"place_id": "ChIJ...",
"name": "Coffee Shop",
"address": "123 Main St",
"location": { "lat": 51.5, "lng": -0.1 },
"rating": 4.6,
"price_level": 2,
"types": ["cafe", "food"],
"open_now": true
}
],
"next_page_token": "..."
}
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 103 lines · 22 tokens per session scan A b2e69841170c
local-places is a skill published in the GitHub repository geezerrrr/motive (118 stars, last pushed 18d ago), licensed MIT. It adds 22 tokens to every session and 784 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
issue-maintenance
Writes to a repo's open GitHub issues: fixes type and lifecycle labels, re-scores priority, fills sizing labels, cleans up issue prose, and proposes merging clusters of small issues. Auto-applies safe changes, flags the rest. Trigger on: "run issue maintenance", "tidy the backlog", "re-prioritize open issues"…
test-reaper
Finds and removes dead or trivial tests: duplicates, mock-only asserts, render checks that prove nothing. Also finds over-mocked tests and seam gaps, where no test sends a realistic payload across a boundary. Trigger on: "reap tests", "our tests don't test anything", "too much mocking", "why didn't tests catch this".
evidence-check
Honesty gate that backs claims with real evidence instead of stating guesses as fact. Runs always-on as a self-check before technical claims and recommendations. Invoke explicitly on: "show your work", "prove it", "how do you know that", "what's your source".
plain-language-audit
Sweeps comments, docstrings, docs, and UI copy for jargon, AI writing tells, and wordy text. Auto-fixes clear swaps and surfaces judgment calls. Prose and tone only. Trigger on: "plain language audit", "find jargon", "sounds like AI wrote this", "too wordy".
test-workflow
Automatically run after editing source files, before committing, to pick and run the right suite: unit, E2E, visual regression, or CSS lint. Do NOT wait for the user to ask. Protects running dev servers. Trigger on: src/ edits before a commit, "run tests", "check tests", "make sure tests pass".
comment-reaper
Finds and removes comments that add nothing: ones that restate the code, cite issue numbers, narrate refactor history, or pad a one-liner with JSDoc. Keeps the WHY comments. Trigger on: "reap comments", "remove unnecessary comments", "too many comments", "comment audit", "strip redundant JSDoc".