Skip to main content Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/Demerzels-lab/elsamultiskillagent --skill location-awarenessThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Related occupations SOC
Based on SOC occupation classification
name location-awareness description Location awareness via privacy-friendly GPS tracking (Home Assistant, OwnTracks, GPS Logger). Set location-based reminders and ask about movement history, travel time, and nearby POIs. metadata {"clawdbot":{"emoji":"📍","requires":{"bins":["python3"]}}}
Location Awareness
This skill provides commands to execute. When the user asks about location, RUN the appropriate command below.
⚠️ IMPORTANT: All commands use scripts/location.sh
Every command must be run via scripts/location.sh. Example:
User asks: "How long to walk home?"
You run:
scripts/location.sh eta home --mode walk
Output: 4.6 km, about 45 min walk
You reply with the output directly.
Do NOT run eta or other subcommands directly — they don't exist as standalone commands.
Quick Reference — What to Run
User says Run this (copy exactly) Reply with "Where am I?" scripts/location.sh statusZone name only "Map" / "map link" scripts/location.sh herewegoJust the URL "What are my coordinates?"
scripts/location.sh status
"How long to walk home?" scripts/location.sh eta home --mode walkDistance + duration
"How long to bike to X?" scripts/location.sh eta X --mode bikeDistance + duration
"How far is X by car?" scripts/location.sh eta X --mode carDistance + duration
"Remind me to X when I get to Y" scripts/location.sh remind "X" YBrief confirm
"What reminders do I have?" scripts/location.sh remindersBullet list or "None"
"List my places" scripts/location.sh placesBullet list
"List places nearby" scripts/location.sh places --nearSorted by distance
"List my pubs downtown" scripts/location.sh places --region downtown --category pubFiltered list
"Save this spot as X" scripts/location.sh addplace "X"Confirm
"Delete place X" scripts/location.sh delplace XConfirm
"Disable the grocery rule" scripts/location.sh disable groceryConfirm
"List my geofence rules" scripts/location.sh geofencesBullet list
"When was I last at X?" scripts/location.sh history XDate/time
"Where have I been today?" scripts/location.sh history --days 1List of places
"Find me a cafe nearby" scripts/location.sh nearby cafePOI list with distances
"Any pubs within 1km?" scripts/location.sh nearby pub 1000Filtered POI list
"How long was I at work this week?" scripts/location.sh stats --days 7Hours per place
Response style: Terse. No preamble. No "Here's your location:". Just the answer.
All Commands All via scripts/location.sh <command>:
Command Description statusCurrent location, geofences inside, map link herewegoJust the HERE WeGo map link checkCheck for triggered actions/reminders (used by cron) places [--near] [--region R] [--category C]List saved places geofencesList all geofences with full details remind <text> <place_id>Add one-shot location reminder remindersList pending reminders addplace <name> [radius] [--region R] [--category C]Save current location editplace <id> [--name] [--radius] [--region] [--category] [--action] [--cooldown]Modify a place delplace <id>Delete a place enable <id> / disable <id>Toggle geofence on/off history [place] [--days N]When was I last at a place? nearby <category> [radius]Find nearby POIs (cafe, pub, restaurant, etc.) stats [--days N]Time spent at each place, visit counts proximity <text> <place/lat> [lon] [radius]Alert when approaching a location eta <place> [--mode walk|bike|car]Travel time and distance to a place
Note: eta accepts saved place names, coordinates (lat,lon), or any place name (geocoded via OpenStreetMap, biased to current location).
Note: status returns the zone name if in a known place, otherwise reverse geocodes to a street address (e.g., "123 Main Street, Downtown").
Concepts Geofences — Saved places with lat/lon, radius, and optional action. Persistent.
Reminders — One-shot alerts tied to a place. Deleted after delivery.
Region/Category — Optional tags for filtering (e.g., "downtown", "pub").
Setup (for administrators)
Provider Configuration Edit scripts/config.json:
Home Assistant (default):
{
"provider" : "homeassistant" ,
"homeassistant" : {
"url" : "https://your-ha.example.com" ,
"token" : "your-long-lived-token" ,
"entity_id" : "device_tracker.phone"
}
}
{
"provider" : "owntracks" ,
"owntracks" : {
"url" : "https://owntracks.example.com" ,
"user" : "username" ,
"device" : "phone"
}
}
{
"provider" : "http" ,
"http" : {
"url" : "https://your-api.com/location" ,
"headers" : { "Authorization" : "Bearer token" }
}
}
{
"provider" : "gpslogger" ,
"gpslogger" : {
"file" : "/path/to/location.json"
}
}
Secrets support: "env:VAR", "pass:path", "cmd:command", or plain string.
Alternative: Set HA_URL and HA_TOKEN environment variables instead of editing config.json.
Output format: Most query commands output human-readable text by default. Add --json for JSON output (useful for scripting).
Travel Speeds Customize walking/biking speeds for ETA calculations in scripts/config.json:
{
"speeds_kmh" : {
"walk" : 6 ,
"bike" : 15
}
}
Geofence Config Edit scripts/geofences.json:
{
"geofences" : [
{
"id" : "grocery" ,
"name" : "Grocery Store" ,
"lat" : 40.7128 ,
"lon" : -74.0060 ,
"radius_m" : 30 ,
"action" : "shopping_tasks" ,
"cooldown_hours" : 4 ,
"enabled" : true ,
"region" : "downtown" ,
"category" : "shop"
}
] ,
"location_reminders" : [ ] ,
"proximity_alerts" : [ ]
}
Cron Setup (Automatic Notifications) For automatic location-based notifications, set up a systemd timer:
Configure notification target (env var):
export CLAWDBOT_NOTIFY_TARGET="+1234567890"
Create systemd service (~/.config/systemd/user/location-check.service):
[Unit]
Description =Location check
[Service]
Type =on eshot
Environment =CLAWDBOT_NOTIFY_TARGET=+1234567890
ExecStart =%h/clawd/skills/location-awareness/scripts/location_cron.sh
Create timer (~/.config/systemd/user/location-check.timer):
[Unit]
Description =Run location check every 5 minutes
[Timer]
OnBootSec =2 min
OnUnitActiveSec =5 min
[Install]
WantedBy =timers.target
Enable : systemctl --user enable --now location-check.timer
Notifications use clawdbot message send, so they work with any configured channel (Signal, Telegram, etc.).