The library grows to 64 exercises: arm circles, torso twist, leg swings, hip and neck mobility, marching, calf raises, and a full stretching set (forward fold, quad, calf, chest, triceps, hip flexor, butterfly, cobra, child's pose), each with an authored motion rig and reference page. Eight new starter splits join the catalog — Upper and Lower Body Warm-Up, Morning Wake-Up, Morning Mobility, Full Body Stretch, Evening Stretch, Free Weight Basics, and Full Body Machines — regenerated deterministically at split schema v3 with fixed ULIDs. Claude-Session: https://claude.ai/code/session_01HJDQQDA9QdP8zByg43H5v3
Exercise Library
Reference material for exercises the app knows about — one folder per exercise, named exactly as the exercise appears in the app.
Each entry contains:
info.md— the details, always in this order: a one-line summary, quick facts (Category, Type, Targets, Prescription), then Setup, Execution, Cues, Common Mistakes, and Progression (easier → harder — get strong by making the move harder, not by endless reps).motion.json— the exercise scripted as key frames of joint angles on the shared rig (proportions in the library-levelbody.json), with IK pins for planted hands/feet and tween timings. This is the canonical source for all visuals and for the in-app animation planned for the lower half of the exercise screen.- Generated from it by
render.py(never hand-edited):frames/frame-N.svg(one per key frame),preview.gif(the tweened loop), andvisual.svg(the primary frame, for static contexts).
Which exercises the library must contain — the movement-pattern × modality
matrix, the gym-floor census, and the considered exclusions — is defined in
COVERAGE.md; judge additions and removals against it.
The rig and the visual language — right limbs dark / left limbs light with an
embedded R/L legend, nose tick for facing, teal on the working parts, timing
that encodes tempo, plus figure profiles, flipping, and theming — are defined
in SYSTEM.md, along with the motion.json schema and rendering
instructions.
The library lives at the repo root, deliberately outside the app targets' source folders, and is not bundled into the app yet — the in-app presentation format is still being worked out.