Add generic watch-tracked Cardio exercise and starter split

A single "Cardio" library entry (running-in-place figure, duration-logged)
plus a matching Cardio starter split tagged .cardio (HealthKit .mixedCardio),
so the Apple Watch records the real aerobic workout while the phone logs the
time — no per-machine cardio entries or schema changes.

Claude-Session: https://claude.ai/code/session_012qw2itfzKyEJ1HpsFt8Ex4
This commit is contained in:
2026-07-09 18:20:05 -04:00
parent e12fe31152
commit ae3aa15019
10 changed files with 235 additions and 7 deletions
@@ -0,0 +1,41 @@
# Cardio
A steady aerobic session — run in place, ride, row, or use the machine of your
choice and just keep moving. It's logged as a single timed block; your Apple
Watch records the real effort — heart rate, calories, and duration — as a
cardio workout.
- **Category:** Cardio
- **Type:** Aerobic / conditioning
- **Targets:** Heart, lungs, endurance
- **Prescription:** 1530 minutes at a conversational-to-brisk pace
- **Defaults:** 1 × 1200 s
## Setup
Pick your mode — treadmill, bike, rower, or simply running in place — and let
your watch start the session so the effort is tracked on your wrist.
## Execution
1. Ease in for the first minute or two, letting your heart rate climb.
2. Settle into a steady pace you can hold for the whole block.
3. Keep your breathing rhythmic and your shoulders relaxed.
4. Cool down with an easy minute before you stop.
## Cues
- Aim for a pace where you could speak in short sentences, not full paragraphs.
- Stay tall and loose — don't grip the rails or hunch over the machine.
- Let the watch handle the numbers; just hold your effort steady.
## Common Mistakes
- Starting too hard and fading long before the time is up.
- Leaning on the handrails, which quietly drops the real workload.
- Skipping the warm-up and cool-down minutes at either end.
## Progression
Add minutes, lift the pace, or fold in short faster intervals to raise the
challenge over time.
@@ -0,0 +1,52 @@
{
"name": "Cardio",
"primary": 1,
"camera": {"zoom": 0.7},
"working": ["leg_r", "leg_l"],
"frames": [
{
"hold": 0.1, "tween": 0.3,
"root": {"pos": [160, 62], "pitch": 4},
"spine": [0, 0],
"neck": 2, "head": -6,
"shoulder_r": -28, "elbow_r": 82,
"shoulder_l": 34, "elbow_l": 78,
"hip_r": 68, "knee_r": 88, "ankle_r": -8,
"hip_l": 2, "knee_l": 4, "ankle_l": 0,
"pins": {"foot_l": [162, 150]}
},
{
"hold": 0.08, "tween": 0.26,
"root": {"pos": [160, 64], "pitch": 4},
"spine": [0, 0],
"neck": 2, "head": -6,
"shoulder_r": 3, "elbow_r": 64,
"shoulder_l": 3, "elbow_l": 64,
"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.1, "tween": 0.3,
"root": {"pos": [160, 62], "pitch": 4},
"spine": [0, 0],
"neck": 2, "head": -6,
"shoulder_r": 34, "elbow_r": 78,
"shoulder_l": -28, "elbow_l": 82,
"hip_r": 2, "knee_r": 4, "ankle_r": 0,
"hip_l": 68, "knee_l": 88, "ankle_l": -8,
"pins": {"foot_r": [158, 148]}
},
{
"hold": 0.08, "tween": 0.26,
"root": {"pos": [160, 64], "pitch": 4},
"spine": [0, 0],
"neck": 2, "head": -6,
"shoulder_r": 3, "elbow_r": 64,
"shoulder_l": 3, "elbow_l": 64,
"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]}
}
]
}
@@ -0,0 +1,23 @@
{
"activityType" : 4,
"color" : "red",
"createdAt" : "2020-01-01T00:00:00Z",
"exercises" : [
{
"durationSeconds" : 1200,
"id" : "01DXF6DT0032GKBRB638SQX8M3",
"loadType" : 2,
"name" : "Cardio",
"order" : 0,
"reps" : 0,
"sets" : 1,
"weight" : 0
}
],
"id" : "01DXF6DT00BXJ6N63ZBX9M9VNH",
"name" : "Cardio",
"order" : 12,
"schemaVersion" : 3,
"systemImage" : "figure.run",
"updatedAt" : "2020-01-01T00:00:00Z"
}