Files
Chris Farhood f6dd9dfc27 feat: add cycling-training Claude skill (MCP companion)
Modular cycling-training skill: periodization logic, workout design, and
research-backed protocols that companion an Intervals.icu MCP server (the
server owns all data + computed metrics; the skill owns knowledge + reasoning).

Structure:
- SKILL.md router + README (companion-to-MCP architecture, install steps)
- references/: durability, mtb-xco-demands, strength-for-cyclists,
  vo2max-intervals, periodization, data-confounds, citations
- assets/: base + build plan templates, durability field-test protocol

Every quantitative claim carries an inline citation; citations.md is the
single source of truth with PMID/DOI, each verified against PubMed on
2026-07-20. Notable honesty flags baked in:
- VO2 rep-length: running (Fleckenstein 2025) vs cycling (Ronnestad) conflict
  documented rather than asserted; cycling evidence favors short intervals.
- 'Yu et al. 2025' (frequency > distribution) could not be found; not cited.
- Under-researched doses (durability, taper TSB, CTL ramp) flagged 'track response'.
- HR-confound doc forbids naive decoupling<5% / RHR+5 rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqrhBhC3GEcKyaw8RTk8G6
2026-07-20 18:59:37 -04:00

4.3 KiB

Data confounds — when to trust HR, RHR, HRV, and decoupling

Load this doc when: interpreting heart rate, resting HR, HRV, sleep, or aerobic decoupling — i.e. any time a number is about to drive a training decision.

Data/knowledge split: MCP gives you the raw and computed signals (HR streams, RHR, HRV, sleep, readiness, decoupling). This doc governs whether that signal is trustworthy today and forbids naive single-number rules.


Core stance: power governs; HR is conditional

Prescribe from power. Heart rate is a response variable contaminated by many non-training factors. Use HR only where it is genuinely informative:

  • Aerobic decoupling on steady rides (Pw:HR drift) — valid only on steady efforts.
  • Recovery trends (RHR, HRV) — as trends, screened for the confounds below.

Do not use HR to prescribe or judge intensity for intermittent efforts — see the MTB dissociation below.

The confounds (screen every HR-based signal against these)

Any of these can move HR, RHR, HRV, or decoupling independent of fitness or fatigue:

Confound Effect Implication
Heat / dehydration ↑ HR, ↑ cardiac drift, ↑ decoupling High decoupling on a hot ride ≠ poor fitness
Alcohol (prior evening) ↑ RHR, ↓ HRV, disrupted sleep A bad HRV morning after drinking is not overtraining
Travel (jet lag, altitude, transit) ↑ RHR, ↓ HRV, poor sleep Expected; not a training signal
Poor / short sleep ↑ RHR, ↓ HRV, ↑ perceived effort Fatigue signal, but from sleep — adjust the day, don't panic
Illness / stress / caffeine timing ↑ RHR, altered HRV Interpret in context, not in isolation
Intermittent effort (MTB) HR lags surges; VO2 stays high on descents HR mis-reads MTB intensity entirely (see below)

⚠️ The MTB / intermittent-effort dissociation

In intermittent off-road riding, HR, power, and VO2 dissociate: VO2 stays elevated on descents where power drops, and HR lags the short bursts that define the effort. In XCO, %VO2max did not correlate with %HRmax or %MAP (Hays et al. 2018, Front Physiol 9:1062; PMID 30158873; DOI 10.3389/fphys.2018.01062). For MTB, HR is unreliable for intensity — power governs. See mtb-xco-demands.md.

Do NOT hardcode naive rules

These single-number rules are wrong as written because they ignore the confounds above:

  • "Decoupling < 5% = fresh / fit." Decoupling is inflated by heat, dehydration, fueling, and any non-steady effort. It is only interpretable on a steady ride in controlled conditions, and even then as a trend, not a threshold. High decoupling on a hot, long, or surgey ride tells you little about fitness.
  • "RHR + 5 bpm = overtrained." A single elevated RHR morning is far more often alcohol, short sleep, travel, heat, or illness. Overtraining/non-functional overreaching is a multi-signal, multi-day picture (RHR trend + HRV trend + performance + mood + sleep + training load), never one morning's number.

The correct pattern: look at trends across days, corroborate across signals (RHR + HRV + sleep + performance + subjective), and explain-away confounds first before attributing a change to training fatigue.

Using decoupling for durability (the one HR job that's valid)

On a steady endurance ride, Pw:HR decoupling is a reasonable aerobic-durability signal: as aerobic fitness/durability improves, HR drifts less for the same power late in a long ride. Use it:

  • Only on steady rides (not intervals, not MTB).
  • Only when conditions are controlled (not a heat outlier, not dehydrated, not post-alcohol).
  • As a trend across comparable rides, alongside the power-based durability field test (../assets/field-test-durability.md), which is the more direct measure.

Practical workflow

  1. Pull the signal from MCP (HR stream, RHR, HRV, sleep, decoupling, readiness).
  2. Screen for confounds (table above). If a confound is present, discount the signal.
  3. Corroborate across signals and across days before acting.
  4. Prescribe from power; use HR only for steady decoupling and recovery trends.
  5. When signals conflict and confounds are present, default to caution (easier day) rather than trusting one number in either direction.