Skill: Strava for Freja.io
Purpose
Provide Strava-specific capabilities in a reusable skill module instead of hardcoded flow logic.
Setup
- •Configure
STRAVA_CLIENT_ID,STRAVA_CLIENT_SECRET, andSTRAVA_REDIRECT_URI. - •Start Freja backend.
- •In Telegram, run
/strava connect. - •Complete OAuth in browser.
- •Optional manual fallback:
/strava connect <code>.
Commands
- •
/strava status→ show connection status and token metadata. - •
/strava connect→ generate auth URL. - •
/strava disconnect→ remove stored tokens and cache. - •
analysera min strava ...→ run analytics report.
Analysis options
Text parser supports period and type filters:
- •Period:
7,30,90days. - •Type filter keywords:
run,ride,walk.
Output contract
Telegram responses are always structured as:
- •
Svar: - •
Sammanfattning - •
Trender - •
Highlights - •
Rekommendationer
Mock mode
Use deterministic fixtures for local verification:
- •
STRAVA_MOCK=1 - •
STRAVA_MOCK_FIXTURE=mixed_run_rideorrun_only_hr
Internal modules
- •
storage.py: token/cache SQLite layer. - •
strava_auth.py: OAuth URL + code exchange + token refresh. - •
strava_client.py: endpoint client + retry + normalization. - •
strava_analytics.py: deterministic coaching analytics. - •
strava_commands.py: Telegram parsing + formatting.