Garmin Trainer
Generate an adaptive 12-week training plan based on real Garmin Connect data. The plan accounts for all upcoming events (races across different sports), current fitness level, recent training load, and recovery status. Each run of this skill pulls fresh data so the plan stays current.
For all gccli command examples (data gathering, workout creation, scheduling), read references/gccli-commands.md.
Step 0: Choose a Training Philosophy
Before building the plan, ask the user which coaching philosophy to follow. Present these six options — each shapes how the plan balances intensity, volume, strength work, and recovery:
1. Joe Friel — Periodization Bible
Based on "The Triathlete's Training Bible". Classic structured periodization with distinct phases (base → build → peak → race). Strength training is integral, progressing from anatomical adaptation (high rep, low weight) through max strength to explosive power as the season advances. Includes year-round mobility work. Best for athletes who like structure and measurable progression.
- - Intensity split: ~75% easy / 5% tempo / 20% high intensity (shifts across phases)
- Strength: 2-3x/week in base phase (full-body compound lifts), tapering to 1x/week maintenance closer to events
- Mobility: dynamic stretching before sessions, 10-15min flexibility routine post-workout
2. Matt Fitzgerald — 80/20 Polarized
From "80/20 Triathlon". Strictly 80% of training time at low intensity (zones 1-2), 20% at moderate-to-high intensity (zones 3-5). No junk miles in between. Research-backed approach that builds a massive aerobic engine while keeping the hard sessions truly hard. Supplemental strength focused on injury prevention rather than performance.
- - Intensity split: 80% easy (strictly enforced) / 20% moderate-to-hard
- Strength: 2x/week functional strength and injury prevention (single-leg work, hip stability, core)
- Mobility: foam rolling and dynamic mobility as part of warmup/cooldown routines
3. Phil Maffetone — MAF Method
Heart rate-based aerobic development. All easy training stays below the MAF heart rate (180 minus age, adjusted for health/fitness). Build a huge aerobic base before adding any intensity. Holistic philosophy that treats nutrition, sleep, and stress management as part of training. Strength is bodyweight and functional movement focused.
- - Intensity split: 90-100% below MAF HR in base building, intensity added only when aerobic base plateaus
- MAF HR formula: 180 - age (subtract 5 if recovering from illness/injury, add 5 if consistently training 2+ years injury-free)
- Strength: 2x/week bodyweight and functional movement (planks, lunges, squats, hip bridges)
- Mobility: daily 15-20min routine — yoga-style flows, hip openers, thoracic spine mobility. Treated as non-negotiable, not optional
4. Kristian Blummenfelt — Norwegian Method
Threshold-heavy, data-driven approach pioneered by coach Olav Aleksander Bu. High volume of lactate-guided threshold work — more time at threshold than traditional plans, but carefully controlled via lactate (or HR proxy). Double sessions common. Strength training is functional and explosive, supporting sport-specific power. Very demanding — best for experienced athletes with a solid training base.
- - Intensity split: ~75% easy / 20% threshold / 5% VO2max (notably more threshold than other methods)
- Strength: 2-3x/week functional and explosive work (Olympic lift derivatives, plyometrics, heavy squats)
- Mobility: integrated into warmup routines, focused on range of motion for swim/bike/run efficiency
5. Dan Lorang — Data-Driven Individualization
Coach of Jan Frodeno and Anne Haug (both Ironman world champions). Highly individualized, technology-driven approach that relies on power meters, lactate diagnostics, and continuous data analysis. Periodization is fluid rather than rigid — training blocks are adjusted based on real-time performance data, not fixed calendars. Combines high aerobic volume with precisely dosed threshold and VO2max work. Strength training is sport-specific and prevention-oriented, designed to support the demands of each discipline rather than build general strength.
- - Intensity split: ~80% low intensity / 15% threshold / 5% VO2max (but distribution shifts dynamically based on data)
- Key principle: every session has a clear physiological purpose — no filler workouts. If the data says rest, you rest.
- Strength: 2-3x/week sport-specific and preventive (core stability, hip/glute activation, rotator cuff for swim, single-leg work for run). Periodized — heavier in off-season/base, lighter and more explosive closer to events.
- Mobility: daily activation and mobility routines (10-15min), focused on individual limiters identified through movement screening
6. Mark Allen — Balanced Holistic
Six-time Ironman world champion, trained under Phil Maffetone but added his own emphasis on mental preparation and whole-body balance. Combines aerobic base building with progressive race-specific intensity. Yoga and flexibility are core components, not afterthoughts. Strength work focuses on muscular balance and injury resilience.
- - Intensity split: ~80% aerobic base / 15% tempo-threshold / 5% race-pace and above
- Strength: 2x/week — balanced full-body work emphasizing posterior chain and core stability
- Mobility: 2-3x/week dedicated yoga or stretching sessions (30-45min), daily post-workout flexibility
If the user has previously selected a philosophy, remember it and mention it — but always offer to change. If the user doesn't care or is unsure, default to Matt Fitzgerald 80/20 as a well-rounded starting point.
Note: Dan Lorang's approach is the most adaptive — it naturally aligns with this skill's re-run behavior. When using Lorang's philosophy, lean even more heavily on the Garmin data (training status, HRV, training load tunnel) to decide session intensity day-by-day rather than following a rigid week-by-week plan.
Running Target Mode
The running target mode (heart rate or pace) is set automatically based on the chosen training philosophy. Cycling always uses power (watts).
| Philosophy | Running Mode | Rationale |
|---|
| Joe Friel | Heart rate | Periodization phases are defined by HR zones; base building relies on staying in aerobic HR range |
| Matt Fitzgerald |
Pace | 80/20 intensity is enforced via pace zones; hard sessions need precise pace targets |
| Phil Maffetone | Heart rate | MAF method is entirely HR-driven (180-age formula) |
| Kristian Blummenfelt | Pace | Threshold work requires precise pace control; lactate-guided sessions translate to pace targets |
| Dan Lorang | Pace | Data-driven approach optimizes for measurable output; pace is the running equivalent of cycling power |
| Mark Allen | Heart rate | Built on Maffetone's aerobic base philosophy; HR keeps easy sessions honest |
Derive the target values from the athlete's data:
- - HR zones: from recent activity HR zone data, resting HR, and max HR
- Pace zones: from lactate threshold pace, recent race/tempo efforts, and easy run averages
- Power zones: from FTP (cycling)
See references/gccli-commands.md for workout creation examples in both modes.
Workout Types Beyond Sport-Specific Training
Regardless of which events are on the calendar, every week should include strength and mobility sessions based on the chosen philosophy. These keep the athlete robust, prevent injury, and support long-term performance.
Strength and mobility volume should scale with the philosophy and training phase:
- - Reduce strength volume (but maintain frequency) during taper weeks
- During recovery weeks, keep mobility sessions but make strength optional
- In base phases, strength can be more ambitious (heavier, more volume)
Schedule strength on easy or rest-adjacent days (e.g., Tuesday and/or Friday). See references/gccli-commands.md for creation examples.
Workflow
Step 1: Gather Data
Collect all relevant data from Garmin Connect in parallel. Always use --json for parseable output. See references/gccli-commands.md — "Data Gathering" section for all commands.
Gather:
- - Events and existing scheduled workouts (next 84 days)
- Recent activities (last 4-6 weeks, up to 50)
- Current fitness: training status, training readiness, VO2max/max metrics, HRV, resting HR, sleep
- Performance benchmarks: lactate threshold, cycling FTP
- Splits and HR zones for the last 2-3 key activities per sport type
Step 2: Analyze the Athlete
From the gathered data, build an athlete profile:
- - Sport types trained: which sports appear in recent activities (running, cycling, swimming, etc.)
- Weekly volume: average distance and duration per sport over the last 4 weeks
- Intensity distribution: how much time at easy vs. threshold vs. high intensity (from HR zones)
- Current paces/power: derive training zones from recent activity data, lactate threshold, and FTP
- Training status: Garmin's training status value (1=detraining, 2=recovery, 3=maintaining, 4=productive, 5=peaking, 6=overreaching, 7=unproductive)
- Weekly training load: current load vs. the optimal load tunnel (loadTunnelMin/Max)
- Recovery signals: HRV trends, resting HR, sleep quality, training readiness score
Step 3: Map All Events
This is critical — scan ALL events in the 12-week window, not just the nearest one. Events drive the plan structure.
For each event, determine:
- - Date and sport type (running, cycling, trail_running, triathlon, etc.)
- Distance (from
completionTarget) - Goal time (from
eventCustomization.customGoal if set) - Is it a race? (
race: true) - Priority level — from
eventCustomization in the JSON:
-
Primary (
isPrimaryEvent: true): the athlete's A-race, the main goal everything builds toward
-
Training (
isTrainingEvent: true): a B-race or preparation event, important but subordinate to the primary event
-
Unclassified (both false): a C-event, treated as a training opportunity with no special plan adjustments
How priority shapes the plan:
| Aspect | Primary (A) | Training (B) | Unclassified (C) |
|---|
| Taper | Full taper (1-2 weeks, volume -40-60%) | Short taper (3-5 days, volume -20-30%) | No taper |
| Recovery after |
Full recovery week (volume -50%) | 2-3 easy days | Continue normal training |
| Specificity | Dedicated build phase with race-pace sessions | Some sport-specific sessions woven in | Train through, no plan changes |
| Volume share | Gets the majority of weekly training volume | Moderate share alongside primary sport | Minimal — fit into existing schedule |
| Goal pacing | Workouts target goal pace/power if set | Workouts at moderate race effort | Easy/moderate effort on the day |
When multiple events exist, the primary event anchors the plan. Training events are stepping stones — use them to practice race execution and build confidence, but don't sacrifice primary event preparation for them. Unclassified events are just dates on the calendar; schedule around them but don't restructure training for them.
Sort events chronologically. The plan must build toward each event with appropriate specificity and include recovery between events. For example, if a half marathon (Training) on week 6 is followed by a marathon (Primary) on week 10, the plan prioritizes the marathon:
- - Build phase with increasing volume (weeks 1-5)
- Short taper + half marathon as race-pace dress rehearsal (week 6)
- Brief recovery then peak training block (weeks 7-8)
- Full taper for the marathon (weeks 9-10)
- Recovery + base (weeks 11-12)
If no events exist in the window, build a general fitness plan based on the sports the athlete currently trains.
Step 4: Design the Plan
Apply the chosen training philosophy to structure the 12 weeks. The philosophy determines the intensity distribution, strength/mobility frequency, and how aggressively to periodize.
General structure per training block (leading to an event):
- - Base/Build phase: progressive overload, increase volume ~10% per week
- Specific phase: race-pace workouts, event-specific sessions
- Taper: reduce volume 40-60% while maintaining intensity, 1-2 weeks before the event
- Recovery: easy week after a race event (reduce volume 50%)
Weekly pattern:
- - Monday is always a rest day
- Sunday is the long session day (long run, long ride)
- 1-2 key quality sessions per sport on weekdays (intervals, tempo)
- Strength sessions on easy or rest-adjacent days (e.g., Tuesday and/or Friday)
- Mobility/yoga sessions per the philosophy's prescription
- Easy/recovery sessions between hard days
- Never schedule hard sessions on Saturday — keep it easy or off to prepare for Sunday's long session
Intensity distribution — follow the chosen philosophy's split (e.g., 80/20 for Fitzgerald, threshold-heavy for Norwegian) and apply it to the athlete's actual training zones derived from their data.
Multi-sport considerations:
- - When training for events in different sports, interleave sport-specific sessions
- Avoid stacking hard sessions in different sports on consecutive days
- The primary event gets the lion's share of training volume; training events get moderate share
- Use cross-training benefits (e.g., cycling aerobic base supports running)
- Strength and mobility sessions support all sports — don't drop them even when single-sport focused
Intensity targets — derive from the athlete's actual data:
- - Easy pace: from recent easy run data or ~60-70% max HR (for MAF: use 180-age formula)
- Tempo/threshold: from lactate threshold or recent threshold efforts
- Interval: from recent fast segments or ~90-95% max HR
- Cycling power zones: from FTP if available
Step 5: Create Workouts and Schedule
For each workout in the plan, create it via gccli workouts create and then schedule it. Use the athlete's chosen running target mode (pace or HR). Cycling always uses power.
Read references/gccli-commands.md for full command syntax and examples covering all workout types (running pace/HR, cycling power, strength, mobility) and scheduling/cleanup operations.
Naming convention: prefix with the week number (W1, W2, ...) and include the session purpose and key metric, e.g. "W3 Tempo Run 25min @4:45", "W5 Long Run 16km", "W8 FTP Intervals 5x6min".
Step 6: Present the Plan
After scheduling all workouts, present a summary to the user:
- 1. Philosophy: which coaching philosophy is applied and what that means in practice
- Event overview: list all events in the 12-week window with dates, goals, and priority (A/B/C)
- Phase breakdown: which weeks are base, build, taper, recovery
- Weekly summary table: for each week show planned sessions including strength and mobility, total volume per sport, and key workouts
- Training zones used: the pace/power/HR values the plan is based on
- Strength & mobility plan: weekly frequency and focus areas per phase
- Adaptation notes: what changed compared to the previous plan if this is a re-run (e.g., "reduced volume in week 3 because recent training load is above the optimal tunnel")
Re-running the Plan
When the user re-runs this skill, the plan should adapt:
- - Pull all fresh data (Step 1) to see what actually happened vs. what was planned
- Compare completed activities against scheduled workouts to assess adherence
- If the athlete missed workouts or is behind on volume, don't try to "catch up" — adjust the remaining weeks to build gradually from where they actually are
- If the athlete is ahead of schedule or training load is high, consider adding a recovery week
- If training status shows overreaching, reduce intensity and volume
- Check if any new events were added and restructure phases accordingly
Before scheduling new workouts, automatically remove all existing future scheduled workouts created by this skill (identifiable by the "W" prefix naming convention like "W3 Tempo Run"). Do not ask for confirmation — these are skill-managed workouts. For workouts that don't match the W-prefix pattern (user-created), leave them in place and schedule around them.
See references/gccli-commands.md — "Scheduling & Cleanup" section for commands.
Important Principles
- - Be conservative with volume increases. Never increase weekly volume more than 10-15% week-over-week. If the athlete's recent volume is low, start from where they are, not where they "should" be.
- Recovery is training. Always include recovery weeks (every 3-4 weeks) and post-race recovery.
- Specificity matters. The closer to an event, the more sport-specific the training should be.
- Use real data. Every pace, power, and HR target should come from the athlete's actual Garmin data, not from generic tables.
- Respect the schedule. Don't schedule workouts on days where the athlete already has non-training commitments visible in their calendar.
- Respect user workouts. If existing scheduled workouts don't match the W-prefix pattern (i.e., the user manually scheduled them), leave them in place and plan around them.
Garmin Trainer
基于真实的Garmin Connect数据生成自适应的12周训练计划。该计划会考虑所有即将到来的赛事(不同运动项目的比赛)、当前体能水平、近期训练负荷以及恢复状态。每次运行此技能都会拉取最新数据,确保计划保持时效性。
所有gccli命令示例(数据收集、训练创建、日程安排),请阅读references/gccli-commands.md。
第0步:选择训练理念
在制定计划前,请用户选择要遵循的教练理念。呈现以下六个选项——每个选项都会影响计划如何平衡强度、训练量、力量训练和恢复:
1. 乔·弗里尔——周期化圣经
基于《铁人三项训练圣经》。经典的结构化周期化训练,具有明确的阶段(基础→建设→巅峰→比赛)。力量训练是核心组成部分,随着赛季推进,从解剖学适应(高次数、低重量)逐步过渡到最大力量,再到爆发力。包含全年灵活性训练。最适合喜欢结构化和可量化进步的运动员。
- - 强度分配:约75%轻松/5%节奏/20%高强度(随阶段变化)
- 力量训练:基础阶段每周2-3次(全身复合举重),临近比赛减少至每周1次维持
- 灵活性训练:训练前动态拉伸,训练后10-15分钟柔韧性练习
2. 马特·菲茨杰拉德——80/20极化训练
源自《80/20铁人三项》。严格遵循80%的训练时间处于低强度(1-2区),20%处于中高强度(3-5区)。中间没有垃圾里程。基于研究的方法,在保持高强度训练真正高质量的同时,建立强大的有氧引擎。补充性力量训练侧重于预防损伤而非提升表现。
- - 强度分配:80%轻松(严格执行)/20%中高难度
- 力量训练:每周2次功能性力量和损伤预防(单腿训练、髋部稳定性、核心)
- 灵活性训练:泡沫轴滚动和动态灵活性作为热身/放松程序的一部分
3. 菲尔·马费通——MAF方法
基于心率的有氧发展。所有轻松训练保持在MAF心率(180减去年龄,根据健康状况调整)以下。在加入任何强度之前,先建立庞大的有氧基础。整体性理念将营养、睡眠和压力管理视为训练的一部分。力量训练侧重于自身体重和功能性动作。
- - 强度分配:基础建设期90-100%低于MAF心率,仅在有氧基础平台期时加入强度
- MAF心率公式:180 - 年龄(伤病恢复期减5,连续无伤训练2年以上加5)
- 力量训练:每周2次自身体重和功能性动作(平板支撑、弓步蹲、深蹲、臀桥)
- 灵活性训练:每天15-20分钟常规训练——瑜伽式流程、髋部打开、胸椎灵活性。视为不可协商,而非可选
4. 克里斯蒂安·布鲁门菲尔特——挪威方法
由教练奥拉夫·亚历山大·布首创的以阈值训练为主、数据驱动的方法。大量以乳酸为导向的阈值训练——比传统计划在阈值区间花费更多时间,但通过乳酸(或心率代理指标)严格控制。常见双练安排。力量训练注重功能性和爆发力,支持运动专项力量。要求极高——最适合具有扎实训练基础的经验丰富的运动员。
- - 强度分配:约75%轻松/20%阈值/5%最大摄氧量(阈值训练明显多于其他方法)
- 力量训练:每周2-3次功能性和爆发力训练(奥林匹克举重衍生动作、增强式训练、大重量深蹲)
- 灵活性训练:融入热身程序,侧重于游泳/骑行/跑步效率所需的关节活动范围
5. 丹·洛朗——数据驱动个性化
扬·弗罗德诺和安妮·豪格(均为铁人三项世界冠军)的教练。高度个性化、技术驱动的方法,依赖功率计、乳酸诊断和持续数据分析。周期化是流动而非固定的——训练模块根据实时表现数据而非固定日历进行调整。结合高有氧训练量与精确计量的阈值和最大摄氧量训练。力量训练注重运动专项性和预防导向,旨在支持每个项目的需求,而非建立一般性力量。
- - 强度分配:约80%低强度/15%阈值/5%最大摄氧量(但分配根据数据动态变化)
- 关键原则:每次训练都有明确的生理目的——没有填充式训练。如果数据说休息,就休息。
- 力量训练:每周2-3次运动专项和预防性训练(核心稳定性、髋部/臀肌激活、游泳肩袖、跑步单腿训练)。周期化——休赛期/基础期更重,临近比赛更轻更爆发。
- 灵活性训练:每天激活和灵活性常规训练(10-15分钟),侧重于通过动作筛查确定的个人限制因素
6. 马克·艾伦——平衡整体法
六届铁人三项世界冠军,师从菲尔·马费通,但加入了自己对心理准备和全身平衡的重视。结合有氧基础建设与渐进式比赛专项强度。瑜伽和灵活性是核心组成部分,而非事后考虑。力量训练侧重于肌肉平衡和损伤恢复能力。
- - 强度分配:约80%有氧基础/15%节奏-阈值/5%比赛配速及以上
- 力量训练:每周2次——平衡的全身训练,强调后链和核心稳定性
- 灵活性训练:每周2-3次专门的瑜伽或拉伸课程(30-45分钟),每天训练后柔韧性练习
如果用户之前选择过某种理念,记住它并提及——但始终提供更改选项。如果用户不在意或不确定,默认使用马特·菲茨杰拉德80/20作为全面均衡的起点。
注意:丹·洛朗的方法最具适应性——它自然地与此技能的重新运行行为保持一致。使用洛朗理念时,更依赖Garmin数据(训练状态、心率变异性、训练负荷隧道)来逐日决定训练强度,而非遵循固定的逐周计划。
跑步目标模式
跑步目标模式(心率或配速)根据所选训练理念自动设置。骑行始终使用功率(瓦特)。
| 理念 | 跑步模式 | 理由 |
|---|
| 乔·弗里尔 | 心率 | 周期化阶段由心率区间定义;基础建设依赖于保持在有氧心率范围内 |
| 马特·菲茨杰拉德 |
配速 | 80/20强度通过配速区间强制执行;高强度训练需要精确的配速目标 |
| 菲尔·马费通 | 心率 | MAF方法完全由心率驱动(180-年龄公式) |
| 克里斯蒂安·布鲁门菲尔特 | 配速 | 阈值训练需要精确的配速控制;以乳酸为导向的训练转化为配速目标 |
| 丹·洛朗 | 配速 | 数据驱动方法优化可衡量的输出;配速是跑步中与骑行功率对应的指标 |
| 马克·艾伦 | 心率 | 建立在马费通的有氧基础理念之上;心率确保轻松训练保持真实 |
从运动员数据中推导目标值:
- - 心率区间:来自近期活动心率区间数据、静息心率和最大心率
- 配速区间:来自乳酸阈值配速、近期比赛/节奏训练和轻松跑平均值
- 功率区间:来自功能性阈值功率(骑行)
两种模式下的训练创建示例,请参见references/gccli-commands.md。
运动专项训练之外的训练类型
无论日历上有哪些赛事,每周都应包含基于所选理念的力量和灵活性训练。这些训练保持运动员强健,预防损伤,并支持长期表现。
力量和灵活性训练量应与理念和训练阶段相匹配:
- - 减量周减少力量训练量(但保持频率)
- 恢复周保持灵活性训练,但力量训练可选
- 基础阶段,力量训练可以更积极(更重、更多训练量)
将力量训练安排在轻松日或休息日附近(例如周二和/或周五)。创建示例请参见references/gccli-commands.md。
工作流程
第1步:收集数据
并行收集Garmin Connect中的所有相关数据。始终使用--json获取可解析的输出。所有命令请参见references/gccli-commands.md中的数据收集部分。
收集:
- - 赛事和现有预定训练(未来84天)
- 近期活动(过去4-6周,最多50项)
- 当前体能:训练状态、训练准备度、最大摄氧量/最大指标、心率变异性、静息心率、睡眠
- 表现基准:乳酸阈值、骑行功能性阈值功率
- 每种运动类型最近2-3项关键活动的分段数据和心率区间
第2步:分析运动员
从收集的数据中,建立运动员档案:
- - 训练的运动类型:近期活动中出现的运动(跑步、骑行、游泳等)
- 每周训练量:过去4周每项运动的平均距离和时长
- 强度分布:在轻松、阈值和高强度区间的时间(来自心率区间)
- 当前配速/功率:从近期活动数据、乳酸阈值和功能性阈值功率推导训练区间
- 训练状态:G