Tracks fitness workouts (reps, sets, weight) using a local SQLite database and smart scripts. Supports image recognition for equipment.
A skill to log and track fitness activities using a local SQLite database.
When the user says "I did 5 sets of Bench Press at 60kg for 8 reps", parse the details and run:
cd skills/workout-tracker/scripts && uv run log.py \
--exercise "Bench Press" \
--weight 60 \
--unit kg \
--sets 5 \
--reps 8 \
--body_part "Chest" \
--rest_time 90 # Optional: User provided or leave empty to auto-fill
--notes "Optional notes"
Parameters:
--exercise (Required): Name of the movement.--body_part: (New) Target muscle group (e.g. Chest, Back, Legs). INFER THIS from the exercise if not provided (e.g. Bench -> Chest).--weight (Required): Weight value.--unit: 'kg' or 'lb' (default kg).--sets: Number of sets.--reps: Reps per set.--rest_time: Seconds. OMIT THIS if the user didn't specify. The script will auto-fill from history.When the user asks "How is my Squat progress?" or "Show last workouts":
cd skills/workout-tracker/scripts && uv run render.py --exercise "Squat"
Then send the generated image:
message(action="send", filePath="/tmp/workout_report.png", message="Here is your report:")
If the user uploads an image (e.g., of a machine):
log.py script as usual.body_part from the exercise name (e.g., "Bench Press" -> "Chest") without asking, unless ambiguous.render.py.figsize width ~6).0 between drop set segments.Data is stored in skills/workout-tracker/workout.db (SQLite).
The schema includes date, exercise, weight, unit, sets, reps, rest_time, notes.
This skill uses uv for Python package management.
uv is installed: brew install uvcd skills/workout-tracker/scripts
uv sync
The SQLite database (workout.db) uses the following schema:
id: Integer (PK)date: ISO8601 Stringexercise: Stringbody_part: String (Target muscle group)weight: Floatunit: String (default "kg")sets: Integerreps: Integerrest_time: Integer (Seconds, optional)notes: String (Optional)