Add 17 warm-up, stretch, and mobility exercises with new starter splits

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
This commit is contained in:
2026-07-08 12:49:18 -04:00
parent 394ec0989e
commit 60927b5d1f
170 changed files with 4502 additions and 15 deletions
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 180" fill="none">
<title>Standing Calf Raise</title>
<path d="M 147.7 157.5 L 178.5 157.5 L 178.5 150.2 L 147.7 150.2 Z" fill="none" stroke="#b9bec9" stroke-width="2.1" stroke-linejoin="round"/>
<path id="leg_l" d="M 164.1 90.9 L 168.9 122.3 L 161.4 148.9 L 168.8 150.9" stroke="#86cfc5" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 160.0 91.3 L 165.6 122.5 L 158.6 149.2 L 166.1 151.1" stroke="#0d9488" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 166.2 31.9 L 166.9 52.5 L 169.9 73.0" stroke="#a9afba" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 166.2 31.9 L 162.1 31.8 L 162.1 33.2" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 164.1 90.9 L 160.0 90.4 L 160.0 91.3" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 160.0 90.4 Q 161.1 60.4 162.1 31.8" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_r" d="M 162.1 33.2 L 162.8 53.8 L 165.7 74.3" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="163.1" cy="18.1" r="7.0" fill="white" stroke="#3a3f4b" stroke-width="4.2"/>
<line id="nose" x1="170.1" y1="18.1" x2="175.0" y2="18.1" stroke="#3a3f4b" stroke-width="2.8" stroke-linecap="round"/>
<g font-family="-apple-system, Helvetica, sans-serif" font-size="11" fill="#6b7180">
<line x1="224" y1="16" x2="238" y2="16" stroke="#3a3f4b" stroke-width="4" stroke-linecap="round"/>
<text x="243" y="20">near</text>
<line x1="273" y1="16" x2="287" y2="16" stroke="#a9afba" stroke-width="4" stroke-linecap="round"/>
<text x="292" y="20">far</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 180" fill="none">
<title>Standing Calf Raise</title>
<path d="M 147.7 157.4 L 178.5 157.4 L 178.5 150.1 L 147.7 150.1 Z" fill="none" stroke="#b9bec9" stroke-width="2.1" stroke-linejoin="round"/>
<path id="leg_l" d="M 164.1 84.6 L 168.9 116.0 L 161.4 142.6 L 164.8 149.3" stroke="#86cfc5" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 160.0 85.0 L 165.6 116.2 L 158.6 142.9 L 162.1 149.6" stroke="#0d9488" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 166.2 25.6 L 166.9 46.2 L 169.9 66.7" stroke="#a9afba" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 166.2 25.6 L 162.1 25.5 L 162.1 26.9" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 164.1 84.6 L 160.0 84.1 L 160.0 85.0" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 160.0 84.1 Q 161.1 54.1 162.1 25.5" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_r" d="M 162.1 26.9 L 162.8 47.5 L 165.7 68.0" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="163.1" cy="11.8" r="7.0" fill="white" stroke="#3a3f4b" stroke-width="4.2"/>
<line id="nose" x1="170.1" y1="11.8" x2="175.0" y2="11.8" stroke="#3a3f4b" stroke-width="2.8" stroke-linecap="round"/>
<g font-family="-apple-system, Helvetica, sans-serif" font-size="11" fill="#6b7180">
<line x1="224" y1="16" x2="238" y2="16" stroke="#3a3f4b" stroke-width="4" stroke-linecap="round"/>
<text x="243" y="20">near</text>
<line x1="273" y1="16" x2="287" y2="16" stroke="#a9afba" stroke-width="4" stroke-linecap="round"/>
<text x="292" y="20">far</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1,40 @@
# Standing Calf Raise
Rise onto the balls of both feet, lifting the heels as high as they'll go,
then lower under control. The simplest way to train the calves and strengthen
the ankles — no equipment, just bodyweight and a slow tempo.
- **Category:** Mobility / warm-up
- **Type:** Bodyweight calf raise
- **Targets:** Gastrocnemius, soleus, ankle stability
- **Prescription:** 23 × 1520, slow up and down with a pause at the top
- **Defaults:** 3 × 15 bodyweight
## Setup
Stand tall with feet hip-width, weight even across both feet. Rest a hand on
a wall for balance if needed.
## Execution
1. Press through the balls of the feet and lift both heels as high as you can.
2. Pause for a beat at the top, standing tall on your toes.
3. Lower the heels slowly back to the floor under control.
4. Repeat for the set without bouncing off the bottom.
## Cues
- Push all the way up to a full stretch at the top of each rep.
- Keep the knees straight but soft, so the calves do the work.
- Lower slowly — the descent builds as much strength as the lift.
## Common Mistakes
- Short, bouncy reps that never reach a full heel lift.
- Rolling the weight to the outside of the feet.
- Bending the knees to bob up instead of driving through the ankles.
## Progression
Pause longer at the top, slow the lowering phase, then progress to single-leg
raises or add load with a dumbbell or a step for extra range.
@@ -0,0 +1,30 @@
{
"name": "Standing Calf Raise",
"primary": 2,
"camera": {"zoom": 0.7},
"working": ["leg_r", "leg_l"],
"frames": [
{
"hold": 0.3, "tween": 0.6,
"root": {"pos": [160, 64], "pitch": 2},
"spine": [0, 0],
"neck": 2, "head": -4,
"shoulder_r": 4, "elbow_r": 6,
"shoulder_l": 4, "elbow_l": 6,
"hip_r": 4, "knee_r": 4, "ankle_r": 0,
"hip_l": 4, "knee_l": 4, "ankle_l": 0,
"pins": {"foot_r": [158, 148], "foot_l": [162, 150]}
},
{
"hold": 0.4, "tween": 0.9,
"root": {"pos": [160, 55], "pitch": 2},
"spine": [0, 0],
"neck": 2, "head": -4,
"shoulder_r": 4, "elbow_r": 6,
"shoulder_l": 4, "elbow_l": 6,
"hip_r": 4, "knee_r": 3, "ankle_r": -48,
"hip_l": 4, "knee_l": 3, "ankle_l": -48,
"pins": {"foot_r": [158, 139], "foot_l": [162, 141]}
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 180" fill="none">
<title>Standing Calf Raise</title>
<path d="M 147.7 157.4 L 178.5 157.4 L 178.5 150.1 L 147.7 150.1 Z" fill="none" stroke="#b9bec9" stroke-width="2.1" stroke-linejoin="round"/>
<path id="leg_l" d="M 164.1 84.6 L 168.9 116.0 L 161.4 142.6 L 164.8 149.3" stroke="#86cfc5" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 160.0 85.0 L 165.6 116.2 L 158.6 142.9 L 162.1 149.6" stroke="#0d9488" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 166.2 25.6 L 166.9 46.2 L 169.9 66.7" stroke="#a9afba" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 166.2 25.6 L 162.1 25.5 L 162.1 26.9" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 164.1 84.6 L 160.0 84.1 L 160.0 85.0" stroke="#3a3f4b" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 160.0 84.1 Q 161.1 54.1 162.1 25.5" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_r" d="M 162.1 26.9 L 162.8 47.5 L 165.7 68.0" stroke="#3a3f4b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="163.1" cy="11.8" r="7.0" fill="white" stroke="#3a3f4b" stroke-width="4.2"/>
<line id="nose" x1="170.1" y1="11.8" x2="175.0" y2="11.8" stroke="#3a3f4b" stroke-width="2.8" stroke-linecap="round"/>
<g font-family="-apple-system, Helvetica, sans-serif" font-size="11" fill="#6b7180">
<line x1="224" y1="16" x2="238" y2="16" stroke="#3a3f4b" stroke-width="4" stroke-linecap="round"/>
<text x="243" y="20">near</text>
<line x1="273" y1="16" x2="287" y2="16" stroke="#a9afba" stroke-width="4" stroke-linecap="round"/>
<text x="292" y="20">far</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB