.claude/skills/training-load/SKILL.md
Compute Performance Management Chart (CTL/ATL/TSB) from the user's training history. Use when the user asks about fitness, fatigue, form, training load, or how their condition is trending.
npx skillsauth add AlvaroLaraFF/strava-coach training-loadInstall 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.
Computes the Banister Performance Management Chart over the local activity history:
Daily load is derived from each activity using power-based TSS when watts are available, otherwise a TRIMP-style HR score. Activities with neither are counted as load=0.
python3 -c "
import sys, time
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/read_snapshot.py
Extract ftp_w, hr_max_bpm, hr_rest_bpm from the snapshot and pass them
as --ftp, --hr-max, --hr-rest below. If no snapshot exists, use script
defaults.
python3 .claude/skills/training-load/scripts/training_load.py --days 120
Optional flags: --days N (window length, default 120), --ftp <watts>, --hr-max <bpm>, --hr-rest <bpm> to override the autodetected values.
Parse the JSON data block and show:
After presenting results, persist the computed load metrics:
python3 .claude/skills/athlete-snapshot/scripts/update_snapshot.py --source training-load --ctl <CTL> --atl <ATL> --tsb <TSB>
Replace <CTL>, <ATL>, <TSB> with the values from the script output.
If the response contains alerts, show them to the user.
If the script returns "success": false, interpret the error and chain:
| Error contains | Action |
|---|---|
| No token / NO_TOKEN / StravaAuthError | Invoke skill strava-setup, then re-run this script |
| No activities / Sync first / No usable HR or power | Invoke skill strava-sync with --level summary, then re-run this script |
| anything else | Show the error to the user |
Only chain ONCE — if the second attempt also fails, surface the error.
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".