Cycling training
Evidence-based training skills for AI agents
npx -y skills add disco-trooper/skills --skill cycling-trainingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Cycling training plans, power zones, FTP testing, intervals, periodization, indoor/outdoor training, race preparation, training-load analysis, and recovery guidance. Use when Codex needs to design cycling workouts, calculate FTP-based zones or TSS, analyze training data, manage CTL/ATL/TSB, or answer cyclist training questions.
SKILL.md
14.8 KB, as published. Nobody here has run it
Cycling Training Skill
Evidence-based cycling training guidance grounded in peer-reviewed sports science research.
Quick Reference
Power Zones (Quick Reference)
| Zone | Name | % FTP | Primary Use |
|---|---|---|---|
| 1 | Active Recovery | <55% | Recovery rides |
| 2 | Endurance | 55-75% | Aerobic base |
| 3 | Tempo | 76-90% | Muscular endurance |
| 4 | Threshold | 91-105% | FTP development |
| 5 | VO2max | 106-120% | Aerobic capacity |
| 6 | Anaerobic | 121-150% | AC intervals |
| 7 | Neuromuscular | Max | Sprints |
For detailed zone models (Seiler 3-zone, iLevels, HR zones, Training Intensity Distribution), see zones-and-testing.md
Scripts (Quick Reference)
If this skill is installed locally, set SKILLS_DIR to the directory your tool uses for skills.
# Example only — adjust to your environment:
SKILLS_DIR="<path-to-your-skills-dir>"
python3 "$SKILLS_DIR/cycling-training/scripts/calculate_zones.py" 250 --model coggan
python3 "$SKILLS_DIR/cycling-training/scripts/calculate_zones.py" 250 --model seiler --json
python3 "$SKILLS_DIR/cycling-training/scripts/calculate_tss.py" 250 230 60 --json
python3 "$SKILLS_DIR/cycling-training/scripts/analyze_week.py" 450 65 72 --prev-week-tss 400 --daily-tss 60,80,0,70,90,80,70 --json
Test suite (stdlib only):
python3 -m unittest discover -s "$SKILLS_DIR/cycling-training/scripts/tests" -p 'test_*.py' -v
Companion Skills
intervals-icu (Data API)
For fetching and updating data from intervals.icu platform, use the intervals-icu skill:
┌─────────────────┐ fetch data ┌───────────────────┐
│ intervals-icu │ ──────────────────► │ cycling-training │
│ (DATA API) │ │ (ANALYSIS) │
│ │ ◄────────────────── │ │
│ • wellness │ interpret results │ • zone calc │
│ • activities │ │ • periodization │
│ • power curves │ │ • workout design │
│ • fitness │ │ • load management │
└─────────────────┘ └───────────────────┘
Common workflow:
- Fetch data:
$SKILLS_DIR/intervals-icu/scripts/api.sh wellness today - Analyze with this skill (zone calculation, load management)
- Update:
$SKILLS_DIR/intervals-icu/scripts/api.sh wellness-update today '{"readiness": 4}'
Indoor Training Essentials
Critical Setup:
| Component | Requirement | Why |
|---|---|---|
| Fan | Strong airflow at torso (as much as practical) | Better cooling and higher sustainable indoor power |
| Temperature | <20°C (68°F) | Prevents overheating |
| FTP | Test indoors separately | 5-10% lower than outdoor |
Indoor FTP Adjustment:
- Use 95% of outdoor FTP OR
- Perform dedicated indoor FTP test (recommended)
- TrainerRoad AI FTP Detection can be a useful estimate; validate with workouts/tests
ERG vs Slope Mode:
| Mode | Use When | Benefit |
|---|---|---|
| ERG | Structured intervals | Holds exact power target |
| Slope | Race simulation, cadence drills | Natural power fluctuations |
For complete indoor setup guide, see indoor-training.md
Indoor Workout Quick Examples
Sweet Spot (ERG Mode):
Warm-up: 10 min @ 55% FTP
Main: 2×20 min @ 88-92% FTP (5 min recovery)
Cool-down: 10 min easy
Total: 65 min | TSS: ~70
TrainerRoad: Carson, Geiger
Zwift: SST (Short) or custom
VO2max Intervals (ERG Mode):
Warm-up: 15 min progressive to 75% FTP
Main: 5×4 min @ 108-112% FTP (4 min @ 50% recovery)
Cool-down: 10 min easy
Total: 65 min | TSS: ~85
TrainerRoad: Baird, Spencer
Zwift: The Gorby or custom
Threshold (Slope Mode for pacing practice):
Warm-up: 15 min with 2×1 min @ 100%
Main: 2×15 min @ 95-100% FTP (8 min recovery)
Cool-down: 10 min easy
Total: 70 min | TSS: ~80
TrainerRoad: Kaweah, Darwin
Weekly Training Load Guidelines
| Level | Hours/Week | Weekly TSS | CTL Target |
|---|---|---|---|
| Recreational | 5-8 | 300-500 | 40-60 |
| Enthusiast | 8-12 | 500-700 | 60-80 |
| Competitive | 12-18 | 700-1000 | 80-100 |
| Elite Amateur | 18-25 | 1000-1400 | 100-130 |
| Professional | 25-35 | 1400-2000+ | 130-160 |
Key Metrics Formulas
TSS = (Duration_sec × NP × IF) / (FTP × 3600) × 100
IF = NP / FTP
VI = NP / AP
CTL = 42-day exponentially weighted average of TSS
ATL = 7-day exponentially weighted average of TSS
TSB = CTL - ATL
ACWR = ATL / CTL (heuristic range often cited: ~0.8-1.3)
ACWR note: ACWR is widely used, but it is also debated in the literature. Treat it as a heuristic and combine it with context (sleep, illness, soreness, performance trends), not as a single decision signal.
Race Day TSB Targets
| Event Type | Optimal TSB |
|---|---|
| Training race | -10 to +5 |
| B race | +5 to +15 |
| A race | +15 to +25 |
| Grand Tour stage | +5 to +15 |
Plan Templates
Ready-to-use training plan templates:
| Template | Use Case | File |
|---|---|---|
| 8-Week Base Builder | Building aerobic foundation | base-8-week.md |
| 16-Week Indoor Season | Winter trainer block (Nov-Feb) | indoor-season.md |
| 16-Week Outdoor Season | Spring-summer race preparation (Apr-Jul) | outdoor-season.md |
Using Templates
- Copy template to user's planning location
- Replace
[YOUR_FTP]with athlete's current FTP - Replace
[YOUR_CTL]with current CTL - Adjust dates and weekly structure
- Scale TSS targets based on current fitness (×0.8 for less, ×1.2 for more)
Reference Files
Load these based on specific need:
| Topic | File | Load When |
|---|---|---|
| Power zones & FTP testing | zones-and-testing.md | Setting zones, FTP tests, CP model |
| Workout library | workouts.md | Prescribing specific intervals |
| Periodization | periodization.md | Planning phases, blocks, mesocycles |
| Indoor training | indoor-training.md | Trainer setup, heat, Zwift/TrainerRoad |
| Outdoor training | outdoor-training.md | Outdoor execution, terrain, groups, safety |
| Nutrition & recovery | nutrition-recovery.md | Fueling, supplements, sleep, recovery |
| Physiology | physiology.md | VO2max, lactate, CP, efficiency |
| Strength training | strength.md | Gym work integration for cyclists |
| Special populations | special-populations.md | Masters, women, beginners, time-crunched |
| Analytics | analytics.md | Metrics, training load, data analysis |
| Training platforms | platforms.md | TrainerRoad, Zwift, intervals.icu, WKO5 comparison |
| Environmental | environmental.md | Heat acclimation, altitude training |
| Psychology | psychology.md | Motivation, mental training, indoor strategies |
| Bike fit & position | bike-fit.md | Position setup, indoor adjustments, pain issues |
| Injuries & prevention | injuries.md | Pain diagnosis, prevention, return protocols |
| Cardiovascular risks | injuries.md#cardiovascular-risks | High-volume training concerns, screening |
| Racing tactics | racing-tactics.md | Race strategy, pacing, drafting, criteriums |
| Equipment & gear | equipment.md | Trainer, fan, power meter recommendations |
| Quick reference | quick-reference.md | Common scenarios, metrics, race TSB targets |
Core Workflows
1. Creating a Training Plan
1. ASSESS current state
- Recent FTP test (within 4-6 weeks)
- Current CTL and training history
- Power duration curve / phenotype
- Available training time
- Health/injury status
2. DEFINE goals
- Target event(s) with dates
- Performance goals (power targets, placing)
- Priority (A/B/C races)
3. SELECT periodization model
- Block: For experienced cyclists, 1-3 peak events
- Traditional: For beginners, year-round racing
- Reverse: For masters, late-season peaks, indoor season
4. MAP phases backward from A event
- Race/Peak: 1-2 weeks (taper)
- Build: 6-8 weeks (race-specific intensity)
- Base: 8-12 weeks (volume, aerobic development)
5. STRUCTURE mesocycles (3-4 weeks each)
- 3:1 or 2:1 load:recovery ratio
- Progressive overload within mesocycle
- Deload week at end
6. PLAN microcycles (weekly)
- Key workouts placed optimally
- Recovery days after hard sessions
- Long ride placement (weekend typically)
7. SET targets
- Weekly TSS targets
- CTL progression (3-7 pts/week max)
- Specific workout targets
2. Analyzing Training Data
1. SESSION level
- Compare NP/IF to prescription
- Time in target zones
- HR:power decoupling (<5% = good aerobic fitness)
- Variability Index (race: 1.0-1.05, crit: 1.1+)
2. WEEKLY level
- Total TSS vs target
- Intensity distribution (TID)
- ACWR (heuristic; avoid sharp spikes)
3. BLOCK/PHASE level
- CTL trend
- FTP progression
- Power duration curve changes
- Identify limiters
4. WARNING signs
- HR elevated for given power
- Performance plateau/decline
- Elevated resting HR
- Sleep disturbance
- Mood changes
3. Prescribing Workouts
1. IDENTIFY training goal
- Aerobic base → Endurance, Tempo
- Threshold development → Sweet Spot, Threshold
- VO2max → Short/Long VO2max intervals
- Anaerobic → AC intervals, sprints
- Race-specific → Simulation workouts
2. SELECT workout type from references/workouts.md
3. ADJUST for athlete
- Scale duration/reps for fitness level
- Consider current fatigue (TSB)
- Account for weekly context
4. PROVIDE execution guidance
- Warm-up protocol
- Target power/HR
- Pacing strategy
- Recovery between intervals
- Cool-down
Key Evidence-Based Principles
Polarized Training (Seiler Research)
- 80% of training time below LT1 (easy)
- <5% between LT1-LT2 (minimize "grey zone")
- 15-20% above LT2 (hard intervals)
- Superior to threshold-heavy approaches for trained athletes
- Exception: Time-crunched athletes may benefit from more sweet spot
Progressive Overload
- CTL increase: 3-7 points/week (max 10 aggressive)
- Volume increase: 5-10% per week maximum
- Ramp rate = (CTL_target - CTL_current) / weeks_available
- Always follow 2-3 hard weeks with recovery week
Recovery Integration
- Deload every 3-4 weeks (40-60% volume cut)
- Maintain some intensity during deloads
- Sleep: 8-9 hours optimal for adaptation
- Nutrition timing: Protein within 2h, carbs for glycogen
Supercompensation Timing
| Adaptation | Recovery Time |
|---|---|
| Neuromuscular | 24-72 hours |
| Glycogen stores | 24-48 hours |
| Aerobic enzymes | 7-14 days |
| Structural (muscle) | 3-6 weeks |
Indoor vs Outdoor Training
- Power typically 5-10% lower indoors
- RPE higher for same power output
- Cooling critical: Fan essential, room temp <20°C
- Heat stress can be used for heat adaptation
- ERG mode for structured intervals
- Slope mode for race simulation / pacing practice
Overtraining Prevention
Monitor daily:
- Morning resting HR (+5 bpm = warning)
- HRV trend (decreasing = accumulating fatigue)
- Sleep quality
- Subjective wellness (1-10 scale)
Red flags:
- Performance decline despite adequate training
- Persistent fatigue >2 weeks
- Illness frequency increase
- Mood disturbances
Cardiovascular Risks (High Volume)
Medical disclaimer: Educational only — not medical advice. If you have symptoms or risk factors, seek medical evaluation.
Red flags to take seriously:
- Palpitations, unusual dyspnea, syncope, chest pain
→ See injuries.md for details and sources
Workflow Guides
Plan Type Decision Tree
Athlete's primary goal?
├── Build aerobic base
│ └── Use: Base Building workflow → base-8-week.md template
├── Increase FTP/threshold
│ └── Current CTL?
│ ├── <60: Build base first (4-6 weeks)
│ └── ≥60: Use Build workflow → FTP focus
├── Prepare for specific event
│ └── Weeks until event?
│ ├── >12 weeks: Full periodization (base → build → peak)
│ ├── 8-12 weeks: Build → peak
│ └── <8 weeks: Maintenance + race specificity
└── Indoor winter training
└── Use: indoor-season.md template
Intensity Distribution Decision
Available training hours/week?
├── <6 hours
│ └── Polarized approach: 80% Z1-2, 20% Z5+
│ (Skip Z3-4, maximize recovery between intensity)
├── 6-10 hours
│ └── Pyramidal approach: 75% Z1-2, 15% Z3-4, 10% Z5+
└── >10 hours
└── Traditional periodization or pyramidal
(More flexibility in distribution)
Training Analysis Workflow
When analyzing completed training data:
-
Weekly Review
- Compare actual vs planned TSS
- Check intensity distribution (time in zones)
- Review key workout execution (hit targets?)
- Note subjective feedback (RPE, fatigue, mood)
-
Performance Trends
- Track FTP progression (eFTP from intervals.icu)
- Monitor Efficiency Factor (NP/HR) trend
- Check power curve for improvements
- Compare HR:power decoupling on endurance rides
-
Load Management
- Calculate ACWR (heuristic; watch for spikes)
- Monitor CTL ramp rate (<7 pts/week)
- Watch for excessive negative TSB (<-30)
-
Red Flags to Address
- Declining power at same HR
- Increasing RPE for same workouts
- Poor sleep/recovery scores
- Missed workouts pattern
→ For detailed metrics, see analytics.md
Common Scenarios
Quick answers with deep-dive links: See quick-reference.md