Awesome-omni-skill workout-tracker
Tracks fitness workouts (reps, sets, weight) using a local SQLite database and smart scripts. Supports image recognition for equipment.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/workout-tracker-neversight" ~/.claude/skills/diegosouzapw-awesome-omni-skill-workout-tracker && rm -rf "$T"
manifest:
skills/development/workout-tracker-neversight/SKILL.mdsource content
Workout Tracker
A skill to log and track fitness activities using a local SQLite database.
Capabilities
- Log Workout: Record exercise details.
- View History: See past performance.
- Smart Rest Time: Auto-fills rest time based on previous sessions if not provided.
- Visual Recognition: Can identify gym equipment from images to suggest exercises.
Usage
1. Logging a Workout
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:
(Required): Name of the movement.--exercise
: (New) Target muscle group (e.g. Chest, Back, Legs). INFER THIS from the exercise if not provided (e.g. Bench -> Chest).--body_part
(Required): Weight value.--weight
: 'kg' or 'lb' (default kg).--unit
: Number of sets.--sets
: Reps per set.--reps
: Seconds. OMIT THIS if the user didn't specify. The script will auto-fill from history.--rest_time
2. Viewing 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:")
3. Image Recognition (Vision)
If the user uploads an image (e.g., of a machine):
- Analyze the image using your vision capabilities.
- Identify the equipment (e.g., "Leg Press Machine", "Dumbbells").
- Ask the user: "This looks like a Leg Press. Do you want to log a set? How much weight?"
- Once they reply, use the
script as usual.log.py
Design & Behavior Rules (User Preferences)
1. User Profile
- Type: General User (Casual).
- Interaction: Use natural language. Automatically infer the
from the exercise name (e.g., "Bench Press" -> "Chest") without asking, unless ambiguous.body_part
2. Display Format (Mobile Portrait)
- Preferred Output: Always generate an Image for reports using
.render.py - Style: Vertical (Portrait) aspect ratio optimized for mobile screens.
- Layout:
- Narrow width (
width ~6).figsize - Wrap long text in "Notes" column.
- Hide "Exercise" column if filtering by a single exercise (title context is enough).
- Sort chronologically (Oldest -> Newest) within the day/session.
- Narrow width (
3. Logging Logic
- Drop Sets: Must be logged as separate rows for data accuracy.
- Rest Time: Set to
between drop set segments.0 - Notes: Mark as "Drop set part X/Y" for clarity.
- Rest Time: Set to
- Units: User prefers lb (pounds).
Database
Data is stored in
skills/workout-tracker/workout.db (SQLite).
The schema includes date, exercise, weight, unit, sets, reps, rest_time, notes.
Technical Setup (Maintenance)
This skill uses uv for Python package management.
Installation
- Ensure
is installed:uvbrew install uv - Sync dependencies:
cd skills/workout-tracker/scripts uv sync
Database Schema (SQLModel)
The SQLite database (
workout.db) uses the following schema:
: Integer (PK)id
: ISO8601 Stringdate
: Stringexercise
: String (Target muscle group)body_part
: Floatweight
: String (default "kg")unit
: Integersets
: Integerreps
: Integer (Seconds, optional)rest_time
: String (Optional)notes