Wko Bot banner
shadwhand shadwhand

Wko Bot

Development community

Description

WKO5 Claude Code skills for cycling power analysis, training methodology, and exercise physiology

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

WKO5 Analyzer

A Python library for WKO5-style cycling power analysis built on a local DuckDB database of Garmin FIT file data. Includes a power duration model, training load tracking (CTL/ATL/TSB), individualized training zones, ride analysis, power profiling, and Jupyter notebooks for visualization.

**Your data stays local.** This repo provides the tools and training science knowledge base. You bring your own ride data by syncing from Garmin Connect, Strava, or importing FIT files. Your ride database, personal ride logs, race plans, and reports are gitignored — they live on your machine only.

Quick Start

The fastest way to get up and running:

bash setup.sh

This walks you through Python environment, athlete config, data source connection, and knowledge base setup interactively.

Or follow the manual steps below.

1. Create Python environment

python3 -m venv .venv
source .venv/bin/activate
pip install numpy pandas scipy matplotlib fitdecode garth httpx duckdb

2. Get your data

You need cycling activities with power meter data. Choose one:

**Option A: Garmin Connect (recommended)**

Syncs directly from your Garmin account. First run prompts for credentials; tokens are saved to `~/.garth/` for future syncs.

python wko5/garmin_sync.py --days 90
# Sync since last activity in DB
python wko5/garmin_sync.py

# Sync from a specific date
python wko5/garmin_sync.py --from 2024-01-01

# Also save FIT files locally
python wko5/garmin_sync.py --save-fit

**Option B: Strava**

Syncs via the Strava API. Requires a free Strava API app (one-time setup):

  1. Go to Strava API Settings
  2. Create an application (set callback domain to localhost)
  3. Note your Client ID and Client Secret
  4. Run the sync:
python wko5/strava_sync.py --days 90

First run prompts for credentials and opens a browser for OAuth authorization. Tokens are saved to `~/.strava_tokens/` for fut