Install
openclaw skills install @voronindenis5/run-pace-architectUse when training for anything from a 5K to a marathon — converts one recent race time into every training pace (easy, threshold, interval, rep) using Riegel-equivalent performances, predicts equivalent race times across distances, checks whether a goal-time is realistic, plans 10%-rule mileage ramps with cutback weeks, and prints even-split tables for race day.
openclaw skills install @voronindenis5/run-pace-architectMost runners train in the wrong zone: their "easy" runs are too fast (so their hard days can't be hard enough) and their hard days are too slow (because they are always tired). The fix is a pace table generated from one honest recent race performance — not from a wish, not from a single good interval session.
This skill is that table generator plus the planning math around it:
T2 = T1 × (D2/D1)^1.06)
converts one race result into predicted times for every common distance.Don't use for: injury diagnosis, shoe selection, trail/ultra pacing over wildly varying terrain (Riegel assumes even, road-like conditions), or heart-rate zone calculation without field data.
# All training paces from a recent 5K
python3 scripts/run_pace.py zones --race 5k=22:30
# Equivalent race predictions from one performance
python3 scripts/run_pace.py predict --race 10k=48:00 --to hm,marathon
# Feasibility of a goal + phase structure for the block
python3 scripts/run_pace.py plan --race 5k=22:30 --goal 5k=21:00 --weeks 8
# Safe mileage ramp with cutback weeks
python3 scripts/run_pace.py ramp --current 30 --target 50
# Race-day split table
python3 scripts/run_pace.py splits --race hm --goal 1:45
# Everything in miles
python3 scripts/run_pace.py zones --race 5k=22:30 --unit mi
Riegel (1981) modeled distance-running time as a power law:
T2 = T1 × (D2 / D1)^1.06
A 22:30 5K therefore predicts a ~47:00 10K, a ~1:44 half and a ~3:38 marathon. The exponent 1.06 is the classic road-running value; it assumes even pace, comparable terrain and adequate training for the target distance. Predictions degrade when you jump more than ~4× in distance (a 5K predicts a marathon poorly for an untrained runner).
| Zone | Definition used | How it's computed |
|---|---|---|
| Easy / aerobic | Comfortable conversational | Marathon pace + 45–75 s/km |
| Long run | Easy effort, extended | Easy pace (upper half of range) |
| Marathon | Race pace for 42.2 km | Riegel prediction at 42.195 km |
| Threshold | Pace holdable for 60 min | Distance solved numerically so Riegel time = 3600 s |
| Interval (VO₂max) | ~3K–5K race effort | Riegel prediction at 3 km |
| Repetition (speed) | ~1500 m race effort | Riegel prediction at 1.5 km |
The threshold pace is solved, not guessed: the script binary-searches the
distance D where your predicted time equals exactly 60 minutes, then reports
that pace. That is the textbook definition of threshold (one-hour race pace).
Required improvement = (current − goal) / current. Rules of thumb encoded:
AGGRESSIVE (extend weeks) or
UNREALISTIC (split into two blocks with a race in between).Block structure output for N weeks: base (~50% of weeks, volume + easy strength), build (~30%, key sessions get race-specific), peak (~20% minus taper, sharpening), taper (final week: −30–40% volume, intensity kept). Every phase lists its purpose and the key session shape.
5k=22:30, 10k=48:00, marathon=3:15:00)$ python3 scripts/run_pace.py zones --race 5k=22:30
Reference performance: 5K in 22:30 (4:30/km)
Easy 5:26–5:56 /km (8:45–9:33 /mi)
Long run 5:41–5:56 /km
Marathon 4:50 /km (predicts 3:24:30)
Threshold 4:40 /km (your 60-minute pace)
Interval 4:22 /km (3K–5K effort)
Repetition 4:04 /km (1500 m effort)
$ python3 scripts/run_pace.py plan --race 5k=22:30 --goal 5k=21:00 --weeks 8
Required improvement: 5.6% in 8 weeks → AGGRESSIVE for a trained runner
(likely OK for a novice; consider 10-12 weeks)
W1-4 BASE volume +, strides 2×/wk
W5-6 BUILD VO₂max intervals + threshold
W7 PEAK race-pace specific
W8 TAPER −35% volume, keep strides
Data and formulas: Riegel fatigue model; threshold-as-one-hour-pace convention; widely used 10 %-rule and 4th-week-cutback practice. Individual response varies — the numbers are starting points, not prescriptions.