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>Child's Pose</title>
<path d="M 66.0 160.5 L 269.8 160.5 L 269.8 150.1 L 66.0 150.1 Z" fill="none" stroke="#b9bec9" stroke-width="3" stroke-linejoin="round"/>
<path id="arm_r" d="M 130.4 141.4 L 107.1 160.1 L 80.0 147.5" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 206.9 108.8 L 209.3 154.0 L 247.6 142.5 L 257.8 146.4" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 124.5 143.3 L 124.5 141.4 L 130.4 141.4" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 201.0 109.2 L 201.0 108.0 L 206.9 108.8" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 201.0 108.0 Q 155.8 111.8 124.5 141.4" stroke="#0d9488" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 124.5 143.3 L 109.0 168.6 L 84.0 152.3" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_l" d="M 201.0 109.2 L 203.4 154.5 L 241.7 142.9 L 251.9 146.8" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="111.3" cy="156.2" r="10" fill="white" stroke="#3a3f4b" stroke-width="6"/>
<line id="nose" x1="117.3" y1="164.3" x2="121.4" y2="169.9" stroke="#3a3f4b" stroke-width="4" 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>Child's Pose</title>
<path d="M 66.0 160.5 L 269.8 160.5 L 269.8 150.1 L 66.0 150.1 Z" fill="none" stroke="#b9bec9" stroke-width="3" stroke-linejoin="round"/>
<path id="arm_r" d="M 134.8 149.7 L 106.0 158.0 L 78.0 147.5" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 207.9 110.8 L 209.5 156.0 L 247.1 142.6 L 257.6 145.9" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 128.9 151.6 L 128.9 149.7 L 134.8 149.7" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 202.0 111.2 L 202.0 110.0 L 207.9 110.8" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 202.0 110.0 Q 156.7 116.3 128.9 149.7" stroke="#0d9488" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 128.9 151.6 L 105.8 170.3 L 82.0 152.3" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_l" d="M 202.0 111.2 L 203.6 156.5 L 241.2 143.0 L 251.7 146.4" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="118.0" cy="166.2" r="10" fill="white" stroke="#3a3f4b" stroke-width="6"/>
<line id="nose" x1="124.8" y1="173.6" x2="129.5" y2="178.7" stroke="#3a3f4b" stroke-width="4" 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

+40
View File
@@ -0,0 +1,40 @@
# Child's Pose
A restful kneeling fold that decompresses the spine and settles the breath —
the reset between harder efforts, or the quiet close to a morning routine.
- **Category:** Mobility / warm-up
- **Type:** Spinal decompression (timed hold)
- **Targets:** Lower back, hips, thighs, shoulders
- **Prescription:** Hold for 30 s, breathing slowly into the back of the ribs, then repeat once
- **Defaults:** 2 × 30 s
## Setup
Kneel with the knees about hip-width and the big toes together, then sit the
hips back toward the heels.
## Execution
1. Walk the hands forward and fold the chest down over the thighs.
2. Stretch the arms long on the floor overhead and rest the forehead on the mat.
3. Let the weight sink back toward the heels and the hips grow heavy.
4. Breathe slowly into the back of the ribs, lengthening a little with each
exhale.
## Cues
- Reach the fingertips forward and the hips back to grow long through the spine.
- Let the belly rest between the thighs so the breath can slow.
- Keep the forehead heavy and the neck completely relaxed.
## Common Mistakes
- Holding tension in the shoulders instead of letting them melt down.
- Lifting the hips away from the heels and losing the settle.
- Forcing the range and gripping the low back rather than releasing it.
## Progression
Knees together for a deeper fold, or wide knees to let the chest sink lower →
add a side-reach (walk the hands to each side) to open the lats
+29
View File
@@ -0,0 +1,29 @@
{
"name": "Child's Pose",
"primary": 2,
"working": ["spine"],
"frames": [
{
"hold": 2.4, "tween": 2.0,
"root": {"pos": [201, 108], "yaw": 180, "pitch": 89},
"spine": [15, 20],
"neck": 15, "head": -13,
"shoulder_r": 168, "elbow_r": 8,
"shoulder_l": 168, "elbow_l": 8,
"hip_r": 86, "knee_r": 104, "ankle_r": -52,
"hip_l": 86, "knee_l": 104, "ankle_l": -52,
"pins": {"hand_r": [80, 150], "hand_l": [84, 151]}
},
{
"hold": 2.6, "tween": 2.0,
"root": {"pos": [202, 110], "yaw": 180, "pitch": 92},
"spine": [16, 22],
"neck": 17, "head": -15,
"shoulder_r": 172, "elbow_r": 6,
"shoulder_l": 172, "elbow_l": 6,
"hip_r": 90, "knee_r": 108, "ankle_r": -52,
"hip_l": 90, "knee_l": 108, "ankle_l": -52,
"pins": {"hand_r": [78, 150], "hand_l": [82, 151]}
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

+19
View File
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 180" fill="none">
<title>Child's Pose</title>
<path d="M 66.0 160.5 L 269.8 160.5 L 269.8 150.1 L 66.0 150.1 Z" fill="none" stroke="#b9bec9" stroke-width="3" stroke-linejoin="round"/>
<path id="arm_r" d="M 134.8 149.7 L 106.0 158.0 L 78.0 147.5" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_r" d="M 207.9 110.8 L 209.5 156.0 L 247.1 142.6 L 257.6 145.9" stroke="#a9afba" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="girdle" d="M 128.9 151.6 L 128.9 149.7 L 134.8 149.7" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="pelvisBar" d="M 202.0 111.2 L 202.0 110.0 L 207.9 110.8" stroke="#0d9488" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path id="spine" d="M 202.0 110.0 Q 156.7 116.3 128.9 149.7" stroke="#0d9488" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="arm_l" d="M 128.9 151.6 L 105.8 170.3 L 82.0 152.3" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path id="leg_l" d="M 202.0 111.2 L 203.6 156.5 L 241.2 143.0 L 251.7 146.4" stroke="#3a3f4b" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<circle id="head" cx="118.0" cy="166.2" r="10" fill="white" stroke="#3a3f4b" stroke-width="6"/>
<line id="nose" x1="124.8" y1="173.6" x2="129.5" y2="178.7" stroke="#3a3f4b" stroke-width="4" 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