name: personal-heatmap description: > Generate a personal heatmap of every place the user has trained, from activity polylines. Use when the user asks for a heatmap, "where have I ridden", "show me my routes on a map". allowed-tools: Bash(python3 *), Read
personal-heatmap
Reads summary_polyline from each activity in the local DB, decodes them, and
renders a single self-contained HTML file with a Leaflet heatmap layer.
Run
python3 .claude/skills/personal-heatmap/scripts/heatmap.py --output ~/strava_heatmap.html
Optional: --sport Run, --days 365.
Present
Tell the user where the file was saved and that they can open it in any browser. Show the JSON summary (number of activities, points plotted, bounding box).
On error: auto-recovery chain
| Error contains | Action |
|---|---|
No token / StravaAuthError | Invoke strava-setup, retry |
No activities / No GPS data | Invoke strava-sync --level summary, retry |
| anything else | Surface |
After presenting: persist to memory (MANDATORY)
Save a qualitative observation to memory — opinions, patterns, coaching notes. Never store raw numeric values (those are recomputable from the DB). Only write if the observation is NEW or CHANGED vs existing memory. See CLAUDE.md → Memory protocol.