endurance-coach 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/cli.js +318 -35
- package/dist/expander/expander.d.ts +20 -0
- package/dist/expander/expander.js +339 -0
- package/dist/expander/index.d.ts +8 -0
- package/dist/expander/index.js +9 -0
- package/dist/expander/types.d.ts +169 -0
- package/dist/expander/types.js +6 -0
- package/dist/expander/zones.d.ts +50 -0
- package/dist/expander/zones.js +159 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -1
- package/dist/schema/compact-plan.d.ts +175 -0
- package/dist/schema/compact-plan.js +64 -0
- package/dist/schema/compact-plan.schema.d.ts +277 -0
- package/dist/schema/compact-plan.schema.js +205 -0
- package/dist/templates/index.d.ts +10 -0
- package/dist/templates/index.js +13 -0
- package/dist/templates/interpolate.d.ts +51 -0
- package/dist/templates/interpolate.js +204 -0
- package/dist/templates/loader.d.ts +19 -0
- package/dist/templates/loader.js +129 -0
- package/dist/templates/template.schema.d.ts +401 -0
- package/dist/templates/template.schema.js +101 -0
- package/dist/templates/template.types.d.ts +155 -0
- package/dist/templates/template.types.js +7 -0
- package/dist/templates/yaml-parser.d.ts +15 -0
- package/dist/templates/yaml-parser.js +18 -0
- package/package.json +2 -1
- package/templates/bike/CLAUDE.md +7 -0
- package/templates/bike/easy.yaml +38 -0
- package/templates/bike/endurance.yaml +42 -0
- package/templates/bike/hills.yaml +80 -0
- package/templates/bike/overunders.yaml +81 -0
- package/templates/bike/rest.yaml +16 -0
- package/templates/bike/sweetspot.yaml +80 -0
- package/templates/bike/tempo.yaml +79 -0
- package/templates/bike/threshold.yaml +83 -0
- package/templates/bike/vo2max.yaml +84 -0
- package/templates/brick/CLAUDE.md +7 -0
- package/templates/brick/halfironman.yaml +72 -0
- package/templates/brick/ironman.yaml +72 -0
- package/templates/brick/olympic.yaml +70 -0
- package/templates/brick/sprint.yaml +70 -0
- package/templates/plan-viewer.html +22 -22
- package/templates/run/CLAUDE.md +7 -0
- package/templates/run/easy.yaml +36 -0
- package/templates/run/fartlek.yaml +40 -0
- package/templates/run/hills.yaml +36 -0
- package/templates/run/intervals.1k.yaml +63 -0
- package/templates/run/intervals.400.yaml +63 -0
- package/templates/run/intervals.800.yaml +63 -0
- package/templates/run/intervals.mile.yaml +64 -0
- package/templates/run/long.yaml +41 -0
- package/templates/run/progression.yaml +49 -0
- package/templates/run/race.5k.yaml +36 -0
- package/templates/run/recovery.yaml +36 -0
- package/templates/run/rest.yaml +16 -0
- package/templates/run/strides.yaml +49 -0
- package/templates/run/tempo.yaml +56 -0
- package/templates/run/threshold.yaml +56 -0
- package/templates/strength/CLAUDE.md +7 -0
- package/templates/strength/core.yaml +56 -0
- package/templates/strength/foundation.yaml +65 -0
- package/templates/strength/full.yaml +73 -0
- package/templates/strength/maintenance.yaml +62 -0
- package/templates/swim/CLAUDE.md +7 -0
- package/templates/swim/aerobic.yaml +67 -0
- package/templates/swim/easy.yaml +51 -0
- package/templates/swim/openwater.yaml +60 -0
- package/templates/swim/rest.yaml +16 -0
- package/templates/swim/technique.yaml +67 -0
- package/templates/swim/threshold.yaml +75 -0
- package/templates/swim/vo2max.yaml +88 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
id: brick.ironman
|
|
2
|
+
name: Ironman Brick
|
|
3
|
+
sport: brick
|
|
4
|
+
type: brick
|
|
5
|
+
category: race
|
|
6
|
+
|
|
7
|
+
params:
|
|
8
|
+
bike_hrs:
|
|
9
|
+
type: number
|
|
10
|
+
required: true
|
|
11
|
+
default: 5
|
|
12
|
+
min: 4
|
|
13
|
+
max: 6
|
|
14
|
+
description: Bike duration in hours
|
|
15
|
+
run_mins:
|
|
16
|
+
type: int
|
|
17
|
+
required: true
|
|
18
|
+
default: 60
|
|
19
|
+
min: 30
|
|
20
|
+
max: 75
|
|
21
|
+
description: Run duration in minutes
|
|
22
|
+
|
|
23
|
+
structure:
|
|
24
|
+
main:
|
|
25
|
+
- type: work
|
|
26
|
+
name: Bike - Endurance
|
|
27
|
+
duration: "${(bike_hrs - 1.5) * 60}min"
|
|
28
|
+
power: "56-70% FTP"
|
|
29
|
+
intensity: Zone 2
|
|
30
|
+
- type: work
|
|
31
|
+
name: Bike - Race simulation
|
|
32
|
+
duration: 90min
|
|
33
|
+
power: "65-75% FTP"
|
|
34
|
+
intensity: Zone 2
|
|
35
|
+
description: "Final 90min at race effort"
|
|
36
|
+
- type: rest
|
|
37
|
+
name: T2
|
|
38
|
+
duration: 5min
|
|
39
|
+
description: "Transition - change clothes if needed"
|
|
40
|
+
- type: work
|
|
41
|
+
name: Run - Easy
|
|
42
|
+
duration: "${run_mins}min"
|
|
43
|
+
pace: "${paces.easy} or easier"
|
|
44
|
+
intensity: Zone 1-2
|
|
45
|
+
|
|
46
|
+
humanReadable: |
|
|
47
|
+
IRONMAN BRICK
|
|
48
|
+
|
|
49
|
+
BIKE: ${bike_hrs} hours total
|
|
50
|
+
- ${bike_hrs - 1.5} hr Zone 2 endurance
|
|
51
|
+
- 90 min @ race effort (65-75% FTP)
|
|
52
|
+
|
|
53
|
+
T2: Full transition practice (may include clothes change)
|
|
54
|
+
|
|
55
|
+
RUN: ${run_mins} min easy
|
|
56
|
+
Pace: ${paces.easy} or easier
|
|
57
|
+
|
|
58
|
+
Purpose: Pacing and nutrition practice for Ironman.
|
|
59
|
+
This is NOT about going hard - it's about:
|
|
60
|
+
- Practicing race nutrition (80g carbs/hour)
|
|
61
|
+
- Learning your sustainable bike power
|
|
62
|
+
- Running on extremely fatigued legs
|
|
63
|
+
|
|
64
|
+
You should feel tired but controlled.
|
|
65
|
+
If you can't run after - bike was too hard.
|
|
66
|
+
|
|
67
|
+
Total: ~${bike_hrs * 60 + run_mins + 5} min
|
|
68
|
+
|
|
69
|
+
estimatedDuration: "${bike_hrs * 60 + run_mins + 5}"
|
|
70
|
+
targetZone: Z2
|
|
71
|
+
rpe: "5"
|
|
72
|
+
notes: Ironman race simulation - pacing and nutrition
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
id: brick.olympic
|
|
2
|
+
name: Olympic Brick
|
|
3
|
+
sport: brick
|
|
4
|
+
type: brick
|
|
5
|
+
category: race
|
|
6
|
+
|
|
7
|
+
params:
|
|
8
|
+
bike_mins:
|
|
9
|
+
type: int
|
|
10
|
+
required: true
|
|
11
|
+
default: 90
|
|
12
|
+
min: 60
|
|
13
|
+
max: 120
|
|
14
|
+
description: Bike duration in minutes
|
|
15
|
+
run_mins:
|
|
16
|
+
type: int
|
|
17
|
+
required: true
|
|
18
|
+
default: 30
|
|
19
|
+
min: 15
|
|
20
|
+
max: 45
|
|
21
|
+
description: Run duration in minutes
|
|
22
|
+
race_effort_mins:
|
|
23
|
+
type: int
|
|
24
|
+
default: 30
|
|
25
|
+
description: Minutes at race effort on bike
|
|
26
|
+
|
|
27
|
+
structure:
|
|
28
|
+
main:
|
|
29
|
+
- type: work
|
|
30
|
+
name: Bike - Warmup/Endurance
|
|
31
|
+
duration: "${bike_mins - race_effort_mins}min"
|
|
32
|
+
power: "56-75% FTP"
|
|
33
|
+
intensity: Zone 2
|
|
34
|
+
- type: work
|
|
35
|
+
name: Bike - Race effort
|
|
36
|
+
duration: "${race_effort_mins}min"
|
|
37
|
+
power: "76-90% FTP"
|
|
38
|
+
intensity: Zone 3-4
|
|
39
|
+
- type: rest
|
|
40
|
+
name: T2
|
|
41
|
+
duration: 2min
|
|
42
|
+
description: "Quick transition practice"
|
|
43
|
+
- type: work
|
|
44
|
+
name: Run - Race pace
|
|
45
|
+
duration: "${run_mins}min"
|
|
46
|
+
pace: "${paces.tempo} to ${paces.threshold}"
|
|
47
|
+
intensity: Zone 3-4
|
|
48
|
+
|
|
49
|
+
humanReadable: |
|
|
50
|
+
OLYMPIC BRICK
|
|
51
|
+
|
|
52
|
+
BIKE: ${bike_mins} min total
|
|
53
|
+
- ${bike_mins - race_effort_mins} min Zone 2 warmup/endurance
|
|
54
|
+
- ${race_effort_mins} min @ race effort (76-90% FTP)
|
|
55
|
+
|
|
56
|
+
T2: Quick transition practice
|
|
57
|
+
|
|
58
|
+
RUN: ${run_mins} min @ race pace
|
|
59
|
+
Pace: ${paces.tempo} to ${paces.threshold}
|
|
60
|
+
|
|
61
|
+
Purpose: Pace calibration for Olympic distance.
|
|
62
|
+
Practice race nutrition during bike portion.
|
|
63
|
+
Run should feel "comfortably hard."
|
|
64
|
+
|
|
65
|
+
Total: ~${bike_mins + run_mins + 2} min
|
|
66
|
+
|
|
67
|
+
estimatedDuration: "${bike_mins + run_mins + 2}"
|
|
68
|
+
targetZone: Z3-Z4
|
|
69
|
+
rpe: "6-7"
|
|
70
|
+
notes: Olympic triathlon race simulation and pacing
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
id: brick.sprint
|
|
2
|
+
name: Sprint Brick
|
|
3
|
+
sport: brick
|
|
4
|
+
type: brick
|
|
5
|
+
category: race
|
|
6
|
+
|
|
7
|
+
params:
|
|
8
|
+
bike_mins:
|
|
9
|
+
type: int
|
|
10
|
+
required: true
|
|
11
|
+
default: 45
|
|
12
|
+
min: 30
|
|
13
|
+
max: 60
|
|
14
|
+
description: Bike duration in minutes
|
|
15
|
+
run_mins:
|
|
16
|
+
type: int
|
|
17
|
+
required: true
|
|
18
|
+
default: 15
|
|
19
|
+
min: 10
|
|
20
|
+
max: 25
|
|
21
|
+
description: Run duration in minutes
|
|
22
|
+
race_effort_mins:
|
|
23
|
+
type: int
|
|
24
|
+
default: 10
|
|
25
|
+
description: Minutes at race effort on bike
|
|
26
|
+
|
|
27
|
+
structure:
|
|
28
|
+
main:
|
|
29
|
+
- type: work
|
|
30
|
+
name: Bike - Warmup
|
|
31
|
+
duration: "${bike_mins - race_effort_mins}min"
|
|
32
|
+
power: "56-75% FTP"
|
|
33
|
+
intensity: Zone 2
|
|
34
|
+
- type: work
|
|
35
|
+
name: Bike - Race effort
|
|
36
|
+
duration: "${race_effort_mins}min"
|
|
37
|
+
power: "Race pace"
|
|
38
|
+
intensity: Zone 4
|
|
39
|
+
- type: rest
|
|
40
|
+
name: T2
|
|
41
|
+
duration: 2min
|
|
42
|
+
description: "Quick transition practice"
|
|
43
|
+
- type: work
|
|
44
|
+
name: Run - Race pace
|
|
45
|
+
duration: "${run_mins}min"
|
|
46
|
+
pace: "${paces.threshold}"
|
|
47
|
+
intensity: Zone 4
|
|
48
|
+
|
|
49
|
+
humanReadable: |
|
|
50
|
+
SPRINT BRICK
|
|
51
|
+
|
|
52
|
+
BIKE: ${bike_mins} min total
|
|
53
|
+
- ${bike_mins - race_effort_mins} min Zone 2
|
|
54
|
+
- ${race_effort_mins} min @ race effort (Zone 4)
|
|
55
|
+
|
|
56
|
+
T2: Quick transition - practice speed!
|
|
57
|
+
|
|
58
|
+
RUN: ${run_mins} min @ race pace
|
|
59
|
+
Pace: ${paces.threshold}
|
|
60
|
+
|
|
61
|
+
Purpose: Practice running off the bike at race pace.
|
|
62
|
+
Legs will feel heavy initially - that's normal.
|
|
63
|
+
Focus on quick cadence to find your run legs.
|
|
64
|
+
|
|
65
|
+
Total: ~${bike_mins + run_mins + 2} min
|
|
66
|
+
|
|
67
|
+
estimatedDuration: "${bike_mins + run_mins + 2}"
|
|
68
|
+
targetZone: Z4
|
|
69
|
+
rpe: "7"
|
|
70
|
+
notes: Sprint triathlon race simulation
|