Skip to content
Back to skills

Sports Tracker

ASecurity

Sport- und Fitness-Tracking mit P90X, Fahrrad, Wandern, Laufen. SQLite-basiert mit automatischem Komoot-Import, Berichten (Woche, Monat), Emoji-Visualisierung, Kalorien-Berechnung und Workout-Tracking.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
databasespythongobashsqlapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill sports-tracker --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sports Tracker?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sports Tracker
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-sports-tracker/badge)](https://www.skillsdirectory.com/skills/aibot88-sports-tracker)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sports-tracker
description: Sport- und Fitness-Tracking mit P90X, Fahrrad, Wandern, Laufen. SQLite-basiert mit automatischem Komoot-Import, Berichten (Woche, Monat), Emoji-Visualisierung, Kalorien-Berechnung und Workout-Tracking.
---

# Sports Tracker v2.0

Track P90X workouts, cycling, hiking, running with SQLite, CLI reports, automatic calorie calculation, and automated Komoot tour import.

## Features

- **Manual Logging** - Log activities via CLI with automatic calorie calculation
- **Automated Komoot Import** - Fetches and imports tours automatically (every 4h)
- **Auto-Calorie Calculation** - Based on MET × weight × duration
- **Workout Tracking** - Training day management (Mon/Wed/Fri)
- **GPX Export** - Download GPX data from Komoot tours
- **Multi-format Reports** - Weekly, monthly, detailed stats
- **Dedup** - Prevents duplicate imports via Komoot tour ID

## CLI Usage

```bash
# Initialize / migrate database (safe to run on existing DB)
python3 skills/sports-tracker/scripts/sports_tracker.py --init

# ─── Add activities (auto-calculates calories) ───
python3 skills/sports-tracker/scripts/sports_tracker.py --add "5 km Wandern"
python3 skills/sports-tracker/scripts/sports_tracker.py --add "P90X"
python3 skills/sports-tracker/scripts/sports_tracker.py --add "P90X 45 min"
python3 skills/sports-tracker/scripts/sports_tracker.py --add "17.7 km Fahrrad"
python3 skills/sports-tracker/scripts/sports_tracker.py --add "5 km Wandern gestern"

# ─── Weight management ───
python3 skills/sports-tracker/scripts/sports_tracker.py --weight 115

# ─── Reports ───
python3 skills/sports-tracker/scripts/sports_tracker.py --week
python3 skills/sports-tracker/scripts/sports_tracker.py --month
python3 skills/sports-tracker/scripts/sports_tracker.py --month-full
python3 skills/sports-tracker/scripts/sports_tracker.py --list
python3 skills/sports-tracker/scripts/sports_tracker.py --stats

# ─── Workout Tracking (P90X) ───
python3 skills/sports-tracker/scripts/sports_tracker.py --done
python3 skills/sports-tracker/scripts/sports_tracker.py --done P90X3
python3 skills/sports-tracker/scripts/sports_tracker.py --missed
python3 skills/sports-tracker/scripts/sports_tracker.py --workout-status
python3 skills/sports-tracker/scripts/sports_tracker.py --workout-check
python3 skills/sports-tracker/scripts/sports_tracker.py --workout-stats

# ─── Komoot Import ───
python3 skills/sports-tracker/scripts/komoot_import.py
python3 skills/sports-tracker/scripts/komoot_import.py --full
python3 skills/sports-tracker/scripts/komoot_import.py --dry-run
python3 skills/sports-tracker/scripts/komoot_import.py --export-gpx
```

## Categories

| Category | Value type | Type | Emoji |
|----------|-----------|------|-------|
| P90X     | done (session count) | strength | 💪 |
| Fahrrad  | km        | cardio | 🚴 |
| Spazieren | km        | cardio | 🥾 |
| Laufen   | km        | cardio | 🏃 |

## Calorie Calculation (Automatic)

Formula: `Kcal = MET × weight_kg × duration_hours`

| Activity | MET | Speed | Duration Calculation |
|----------|-----|-------|---------------------|
| Fahrrad  | 8.0 | 18 km/h | `km / 18` hours |
| Wandern  | 3.5 | 4.5 km/h | `km / 4.5` hours |
| P90X     | 6.0 | — | 60 min (default) or specified |

**Default weight:** 120 kg (configurable via `--weight`)

## Komoot Import Details

The `komoot_import.py` script connects to the Komoot API and imports tours into the sports tracker database.

### What gets imported

- Distance in km
- Duration in minutes
- Calories via MET formula
- Elevation gain/loss in meters
- Average and max speed
- Sport type mapped to tracker categories

### Komoot Sport-Type Mapping

| Komoot Type | Sports Tracker |
|------------|---------------|
| touring_cycling, cycling, mtb, race_cycling | Fahrrad |
| hiking, hike | Spazieren |
| walking, walk, nordic_walking | Wandern |
| running, run, trail_running | Laufen |
| skiing, ski_touring, snowboard | Skifahren |

### Setup

Add to `.env`:
```bash
KOMOOT_EMAIL=your@email.com
KOMOOT_PASSWORD=your_password
KOMOOT_USER_ID=your_user_id
```

## Database

Path: `data/sports_tracker.db`

### Tables

**activities** (main tracking)

| Column      | Type    | Description |
|-------------|---------|-------------|
| id          | INTEGER | Primary key |
| date        | TEXT    | Activity date |
| category    | TEXT    | Activity category |
| value       | TEXT    | km or "done" |
| description | TEXT    | Activity description |
| created_at  | TEXT    | Timestamp |
| type        | TEXT    | 'cardio' or 'strength' |
| duration_min| INTEGER | Duration in minutes |
| calories    | INTEGER | Calculated calories |
| speed_kmh   | REAL    | Average speed |
| weight_kg   | REAL    | Weight at time of activity |

**workout_status** (P90X tracking)

| Column | Type | Description |
|--------|------|-------------|
| date    | TEXT | Unique date |
| is_training_day | BOOLEAN | Mo/We/Fr = true |
| status  | TEXT | done, missed, rest, pending |
| type    | TEXT | P90X, P90X2, P90X3 |
| notes   | TEXT | Notes |

**user_settings** (key/value store)

| Key | Default | Description |
|-----|---------|-------------|
| weight_kg | 120 | Current weight |

## Workout Rules

- **Training days:** Monday, Wednesday, Friday
- **Rest days:** Tuesday, Thursday, Saturday, Sunday
- "done" on training day or next day = counted as trained
- **Sarcasm trigger:** 2+ missed training days in last 14 days

## Date Parsing

Recognizes German phrases:
- `heute` → today
- `gestern` → yesterday
- `vorgestern` → day before yesterday
- `DD.MM.YYYY` → explicit date

## Migration

`--init` safely migrates existing v1 databases to v2 without data loss:
- Adds new columns (`type`, `duration_min`, `calories`, `speed_kmh`, `weight_kg`)
- Creates `workout_status`, `workout_rules`, and `user_settings` tables
- Preserves all existing activity data

Files in this skill

  • SKILL.md5.8 KB
  • source.json711 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.