Files
cycling-training/README.md
T
Chris Farhood 4e4f719670 fix: resolve code-review correctness bugs in README + build template
Three CONFIRMED defects, all from template/README text written before the
vo2max conflict section was revised, now reconciled with the corrected docs:

- README taper example said TSB '−5 to +5' (under-recovered) — corrected to
  the doctrinal +5 to +15 that periodization.md and both plan templates use.
- plan-template-build.md VO2 prescription said 'bias toward longer reps
  (3–5 min)... accumulate more time >90% VO2max than 30/30s' — contradicted
  its own cited source and was self-contradictory (140s ≠ 3–5 min). Replaced
  with the neutral menu: default medium (~2–4 min, near the ~140s optimum),
  short/long by goal, 'no rep length proven superior in cycling.'
- plan-template-build.md cited the phantom 'Yu et al.' (marked  NOT FOUND in
  citations.md) — re-grounded the frequency heuristic in Seiler 2024.

DRY findings (inline PMID/DOI duplication, restated rhythm/field-test tables)
left as-is: inline citations and self-contained, independently-loadable docs
were explicit design requirements for this skill.

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

89 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# cycling-training
A modular **Claude skill** that provides periodization logic, workout design, research-backed
protocols, and interpretation guidance for endurance and off-road cycling training — designed to
**companion an Intervals.icu MCP server**, not replace it.
## The companion-to-MCP architecture
This skill deliberately holds **no data and no calculators**. It is the *reasoning* half of a
two-part system:
| Layer | Owns | Examples |
|-------|------|----------|
| **Intervals.icu MCP server** (data + computed metrics) | Fetching and computing everything numeric | activities, wellness, power curves, CTL / ATL / TSB, training-load ramp, zones, TSS, best efforts, streams |
| **`cycling-training` skill** (knowledge + reasoning) | Deciding what the numbers *mean* and what to do next | periodization logic, workout design, research-backed protocols, interpretation of trends, confound-aware caveats |
**The split is a hard rule.** If a script would only reproduce math the MCP API already returns
(zones, TSS, load metrics, CTL/ATL/TSB), it is intentionally absent. Ask the MCP server for the
number; ask this skill what to do about it.
### How they work together (typical flow)
1. **MCP** returns the data — e.g. `get_athlete_summary` (CTL/ATL/TSB), `get_wellness_data`
(HRV, RHR, sleep), `get_athlete_power_curves`, `get_activities`.
2. **Skill** supplies the reasoning — e.g. "TSB is 25 eight days out from an A-race; the taper
doc targets +5 to +15 by race day, so shed fatigue," or "this VO2 session banked little time
≥90% VO2max; the interval doc says check whether rep length / work:rest kept power in the band."
3. **You (Claude)** combine them into a recommendation, always citing which layer supplied what.
## Repository layout
```
cycling-training/
├── SKILL.md # Router — loads the right reference doc by need
├── README.md # This file
├── references/
│ ├── durability.md # Fatigue resistance as a trainable quality + field test
│ ├── mtb-xco-demands.md # MTB/XCO demand profile; power governs, HR caveat
│ ├── strength-for-cyclists.md # Heavy strength; masters rationale; from-zero ramp
│ ├── vo2max-intervals.md # Maximizing time ≥90% VO2max; work:rest; rep length
│ ├── periodization.md # Distribution philosophy; base/build/peak; CTL ramp; taper
│ ├── data-confounds.md # HR reliability; power-governs; decoupling/RHR caveats
│ └── citations.md # Master citation list with PMID/DOI — single source of truth
└── assets/
├── plan-template-base.md # Backward-mapped base mesocycle skeleton (3:1 / 2:1)
├── plan-template-build.md # Build block: VO2 + durability + strength integration
└── field-test-durability.md # The ~1,500 kJ → 1-min hill durability field test
```
## Installing as a Claude skill
A Claude skill is a directory containing a `SKILL.md` with YAML frontmatter (`name` +
`description`). To install:
**Claude Code (project or personal):**
```bash
# Personal (available in every project):
git clone <this-repo> ~/.claude/skills/cycling-training
# Or project-scoped (checked in with a repo):
git clone <this-repo> .claude/skills/cycling-training
```
Claude auto-discovers any `SKILL.md` under a `skills/` directory. The `description` field in the
frontmatter is what Claude matches against to decide when to load the skill, so keep it intact.
**Claude.ai / Claude Desktop:** upload or sync the folder as a skill per the current skills UI.
Once installed, this skill loads automatically when you ask cycling-training questions, and it
pairs with your connected Intervals.icu MCP server for the live data.
## How to read the docs
- **`SKILL.md` is a router, not a manual.** It points to the one reference doc that answers the
question at hand. Load docs on demand; don't read them all up front.
- **Every quantitative claim carries a citation** (author/year, with PMID/DOI in `citations.md`).
This is deliberate: it lets future-you *verify* rather than trust.
- **Where the mechanism is established but the optimal dose is not, the docs say so** — marked
`⚠️ under-researched — track individual response`. Treat those as hypotheses to test on
yourself, not settled protocol.
## Scope & honesty notes
- Content is written for **balanced road/TT and MTB** use; discipline-specific numbers are
labelled and not over-transferred (small-n elite XCO data ≠ masters marathon reality).
- This skill gives **general training-science reasoning, not individualized medical advice.**
Nothing here overrides a physician, and readiness/overtraining calls should use the
confound-aware logic in `references/data-confounds.md`, never naive single-number rules.