.claude/skills/athlete-snapshot/SKILL.md
Compute and store a complete physiological profile snapshot, track metric evolution, and alert on significant changes. Use when the user asks to update their profile, refresh metrics, check how metrics have changed, or asks about their physiological state.
npx skillsauth add AlvaroLaraFF/strava-coach athlete-snapshotInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Recomputes all variable physiological metrics from the local activity database
and writes a timestamped snapshot row to the athlete_snapshots table. Each
snapshot captures:
Tier 1 — Input parameters (used as flags by other skills):
Tier 2 — Load state (fitness/fatigue/form):
Tier 3 — Trend markers:
The script compares against the previous snapshot and generates alerts when metrics cross significant thresholds.
python3 -c "
import sys
sys.path.insert(0, '.')
from strava.db import load_token
from strava.client import get_default_db_path
t = load_token(get_default_db_path())
print('OK' if t else 'NO_TOKEN')
"
If NO_TOKEN, tell the user to run the strava-setup wizard first.
python3 .claude/skills/athlete-snapshot/scripts/full_refresh_snapshot.py --days 90
Optional flags: --days N (analysis window, default 90).
Parse the JSON data block and show:
Current profile snapshot — table of all metrics with their values.
Use fmt_pace for threshold_pace, format durations where applicable.
Alerts — if the alerts array is non-empty, present each alert
prominently. Group by severity:
Comparison — if previous_captured_at is not null, show a delta
column (current vs previous) for metrics that changed.
Overall trend — one sentence: "Mejorando", "Manteniendo", or "Empeorando" based on the combination of CTL trend, VDOT, and decoupling.
Write a memory entry (project type) capturing the qualitative observation about the user's current physiological state — NOT the raw numbers. Example: "User's fitness is building steadily, threshold pace improving, decoupling stable — good aerobic base development."
Only write if the observation is NEW or CHANGED since the last memory entry.
| Error contains | Action |
|---|---|
| No token / NO_TOKEN | Invoke skill strava-setup, then re-run |
| No activities / Sync first | Invoke skill strava-sync with --level details, then re-run |
| anything else | Show the error to the user |
Only chain ONCE.
data-ai
Show a weekly training log: activities grouped by ISO week and sport, with totals for distance, time and elevation. Use when the user asks "what did I do this week", "weekly summary", "training log".
tools
Cross-reference recent runs/rides with historical weather (temperature, humidity, wind) from Open-Meteo to find correlations with performance. Use when the user asks "do I run worse in the heat", "weather impact", "temperature vs pace".
testing
Show how the user's training time and volume distribute across run, ride and swim, and flag underweighted disciplines. Use when the user asks "am I balanced", "discipline balance", "which sport am I neglecting".
data-ai
Compute a combined CTL/ATL/TSB across run, ride and swim for triathletes. Use when the user asks "my combined load", "triathlon training load", "total TSS across sports".