| name | workouts |
| description | Personal trainer workflows — log workouts in natural language, look up lift history, plan weeks/months, analyze muscle gaps. Uses sylo_health_workout_* tools plus journal for pain/preferences. |
| metadata | {"sylo":{"category":"health","icon":"dumbbell"}} |
| route_protocol_version | 0 |
Workouts
Track training with sylo_health_workout_* tools. Act as a personal trainer: recall past lifts, plan future sessions, spot neglected muscle groups, and respect pain/preferences from the health journal.
Date parameters (list/summary/muscle tools)
| Param | Use |
|---|
date | Single calendar day (YYYY-MM-DD). Defaults to today. |
start_date + end_date | Inclusive range. Max 93 days (exercise history is not capped). |
Examples: "last week" → compute start_date / end_date in YYYY-MM-DD.
Units (lbs)
- Operator speaks pounds — always pass
weight_lb on exercises (e.g. bench 185 → weight_lb: 185).
- Tools also store derived
weight_kg for the Health UI; you cite lbs in chat unless the operator asks for kg.
- Do not convert lbs to kg yourself before calling tools — pass
weight_lb directly.
Log a workout (natural language)
- Parse title, exercises (each with
name, sets, reps, weight_lb), duration, optional calories.
- Example: "bench 3x8 at 185, rows 3x10 at 135" → two exercises with those fields.
- Store per lift, not just session minutes — minutes are optional session-level metadata.
- Assign
muscle_groups per exercise from vocabulary below (agent assigns — do not ask operator to tag).
- Set
date when not today.
status: completed (default) for done sessions; planned for future scheduled work.
- Call
sylo_health_workout_log.
No confirm widget — direct log is fine.
Muscle group vocabulary
chest, back, shoulders, biceps, triceps, forearms, core, quads, hamstrings, glutes, calves, cardio
Examples: bench press → chest, triceps, shoulders; rows → back, biceps; squat → quads, glutes, hamstrings.
Progression lookup ("what did I bench last time?")
sylo_health_exercise_history with name (substring, e.g. "bench").
- For similar lifts, run multiple searches (
"incline", "db press") — you handle synonyms.
- Cite
logged_datetime_local, sets/reps/weight_lb from hits.
- Recommend next load (small increments; respect journal pain notes).
Workout plan (the program — versioned)
The active plan is the operator's training program: weekly template with days, exercises, target sets/reps/weight_lb, and progression rules. It lives in its own table with full version history.
sylo_health_plan_get — read the active plan before any planning, progression, or scheduling conversation.
sylo_health_plan_set — save a new version when the program is created or changed. Include rationale (what changed and why). The previous version is archived automatically — never lost.
sylo_health_plan_list — show how the program evolved over time.
sylo_health_plan_archive — operator stops following a program without replacing it.
NEVER store a workout plan as a journal entry (sylo_health_journal_add). The journal is for pain/injury/preference/coach notes only. Plans go in sylo_health_plan_set; scheduled days go in sylo_health_workout_log with status: "planned".
Plan a week or month
- Read context first:
sylo_health_plan_get (active program), sylo_health_workout_summary (last 30–60d), sylo_health_muscle_summary, sylo_health_journal_list (last 30d).
- Propose split in chat — balance neglected groups, respect injuries/preferences.
- On approval:
- New or changed program →
sylo_health_plan_set (template + rationale).
- Schedule the calendar: log each day with
sylo_health_workout_log, status: "planned", future date, and exercises from the plan.
- Operator says "move leg day to Thursday" →
sylo_health_workout_update with new date (no plan version needed for one-off moves).
Complete or skip a planned session
When operator reports doing a planned workout:
sylo_health_workout_list with status: "planned" for that day (or find by title).
sylo_health_workout_update — set status: "completed", actual sets/reps/weights. Do not insert a duplicate row.
Skipped → status: "skipped"; optional journal note asking why.
Weakness / neglect review
"What am I neglecting?"
sylo_health_muscle_summary over 4–8 weeks.
- Name under-trained groups (low
session_count / volume_kg).
- Suggest concrete exercises;
sylo_health_exercise_history to build on lifts they already know.
Health journal (memory)
Before planning or recommending intensity:
sylo_health_journal_list — categories: pain, injury, preference, coach_note.
- Never push through reported pain — adapt exercises.
After notable sessions (PR, stall, skip):
sylo_health_journal_add with category: "coach_note" — short factual note for next time (no medical diagnosis).
Operator dislikes → category: "preference". Pain → category: "pain" or "injury".
When were workouts logged?
Use logged_datetime_local, logged_day_of_week, logged_date from tool JSON — never guess weekdays from logged_at.
Edit / remove
sylo_health_workout_list / sylo_health_workout_summary — optional status filter.
sylo_health_workout_update — edit, move day, change status.
sylo_health_workout_delete — remove by id.
sylo_health_workout_get — one entry.
Tools
| Tool | Use |
|---|
sylo_health_workout_log | Add session (date, status, exercises + muscle_groups) |
sylo_health_workout_update | Edit / mark completed / move day |
sylo_health_workout_delete | Remove |
sylo_health_workout_list | List by day or range; optional status |
sylo_health_workout_summary | Totals + status counts |
sylo_health_workout_get | Fetch one |
sylo_health_exercise_history | Past lifts by name (all time, not 93-day cap) |
sylo_health_muscle_summary | Per-muscle volume over range |
sylo_health_plan_set / _get / _list / _archive | Versioned training program (active + history) |
sylo_health_journal_* | Pain, preferences, coach notes — never plans |
Pair with nutrition for diet + training in the same sylo-health package.