marswangyang/workout-tracker
Overview
This skill logs and tracks strength and conditioning workouts using a local SQLite database and lightweight Python scripts. It captures sets, reps, weight, rest time and notes, and can auto-fill rest intervals from past sessions. It also analyzes images to identify equipment and offer quick logging suggestions.
How this skill works
The skill parses natural-language workout inputs and runs small scripts to insert structured records into a local SQLite database (date, exercise, body_part, weight, unit, sets, reps, rest_time, notes). If rest_time is omitted it infers a sensible default from the user’s recent history. When given an image, the vision component recognizes equipment, suggests the exercise, and prompts the user to confirm weight/sets before logging.
When to use it
- Quickly log a completed set or full workout from a short message.
- Check progress for a specific exercise or view recent sessions with a visual report.
- Upload a photo of a machine or dumbbells to identify equipment and log a set.
- Let the skill infer rest times based on your prior sessions when you don’t specify them.
- Track drop sets as separate rows for accurate analytics.
Best practices
- Provide exercise name, weight and reps in one phrase (e.g., “5x8 Bench Press 135lb”) to minimize follow-ups.
- Omit rest_time if you want the system to auto-fill from history; only specify it when deviating from your norm.
- Prefer pounds (lb) for units—this profile defaults to lb but accepts kg if specified.
- Log drop sets as separate entries; the system will set rest_time to 0 and mark notes as “Drop set part X/Y.”
- Upload clear photos of equipment (single item, well-lit) for reliable visual identification.
Example use cases
- User: “I did 4 sets of Squat at 225lb for 5 reps” → skill parses and logs the workout with inferred body_part = Legs.
- User uploads a picture of a leg press machine → skill identifies it, asks for weight, then logs the set on confirmation.
- User: “Show my Bench Press progress” → skill generates a mobile-optimized portrait report image summarizing historical reps/weights and sends it.
- User performs drop sets and reports segments separately → each segment is stored as its own row with rest_time=0 and an explanatory note.
FAQ
The skill infers body_part from the exercise name automatically (e.g., Bench Press -> Chest) and only asks if the name is ambiguous.
How are rest times handled when omitted?
If rest_time is omitted the skill looks up your recent sessions for that exercise or similar exercises and auto-fills a typical rest interval; you can override it by specifying rest_time.