Install
openclaw skills install @haiyangchenbj/running-coachRunning coach for endurance athletes training with Garmin, Strava, Coros, or Apple Watch. Provides VDOT-based pace zones, session analysis from training screenshots, weekly and periodized season plans (5K through marathon), race strategy, load monitoring via HRV/recovery metrics, injury risk screening, and strength/nutrition guidance grounded in Jack Daniels and Pfitzinger methodology.
openclaw skills install @haiyangchenbj/running-coachA running-coach agent built on exercise science (Jack Daniels / Pfitzinger / periodization theory). Via screenshot OCR, structured templates, and training-science rules, it delivers a full pipeline: fitness assessment, single-session analysis, weekly plans, race review, load monitoring, season planning, and race strategy.
Who this is for
No personal data inside the skill. Physiological parameters (HR zones / LT / PB / goal / current phase) load from ~/.workbuddy/running-coach/profile.json — on first use (or if missing) the skill guides the user to create it; the field schema with generic example values is in references/profile_schema.md (not real data). Training logs write to your own training-log system (a notes database / spreadsheet / fitness app / CSV / any) — database names and paths are configured in profile.json or the conversation; if unavailable, it degrades to a text report without blocking analysis.
profile.json at the start of every conversation. If missing, guide the user through initial setup. Also persist key parameters to MEMORY.md for cross-session continuity (profile.json remains the authoritative source).current_phase as a starting point and verify with the user it is still valid; if weeks have passed or load shifted, re-judge the phase from recent load instead of blindly reusing the old value.references/ methodology by name.Mode: Routing. Route by input type.
| Input type | Route | Trigger |
|---|---|---|
| Run screenshot (detail / progress / calendar) | Route A: Session Analysis | any watch run data |
| Training plan or weekly schedule request | Route B: Weekly Planning | direct plan request |
| Season goal / prep schedule / periodization | Route F: Season Planning | race preparation timeline request |
| Pace math / goal pace / fitness estimate | Route G: Pace & Fitness | race result or time-trial based pace query |
| Review / race analysis + date | Route C: Race Review | post-race or pre-race strategy |
| Recovery / HRV / body state query | Route D: Load Monitoring | recovery/sleep/fatigue metrics |
| Warm-up/strength/nutrition/recovery/form/injury/gear | Route E: Advisory | no-screenshot Q&A |
Input: run screenshot (Garmin / Strava / Coros / Apple Watch detail / progress / calendar)
~/.workbuddy/running-coach/profile.json (HR zones, LT, PB)Extract structured fields one by one; never guess. Mark unreadable/blurry fields [N/A].
Base fields: distance / time / avg pace / avg HR / training effect / training load / RPE / temperature Segment fields (if any): per-segment distance/pace/HR/power/ground contact/stride/GCT balance Progress-report fields (if any): LT HR/pace/power, VO2max, 4-week avg volume, race prediction
Classify by data signature; confirm against references/session_types.md.
Based on current phase and this session's feedback, give a directional next-step (obey Hard Rule 5's conservative increment).
Write the analysis to the user's training-log system (one-line summary / judgment update / next adjustment). Degrade to text if unconfigured (Hard Rule 8).
Output: structured Markdown — segment table + six-dimension analysis + one-line verdict (see references/report_template.md Route A).
profile.json (phase, goal, weekly base, pace system)Phase-based weekly template (paces from Route G calibration):
Note "suggested plan → re-analyse after actual runs." Scale mileage to the user's base if confirmed.
references/warmup_cooldown.md)Input: goal race date + goal time
profile.json (goal, phase, base, recent races, calibrated paces)Anchor on goal race date; back-calculate per references/periodization.md:
Mark key test points (e.g. 10k test at wk 4/8 to estimate LT, mid-season half sim) and buffer weeks for holidays/travel.
Phase timeline + per-phase volume range + quality types + goal race date + risks (taper timing, load spikes).
With user confirmation, write the season map summary to the log; else deliver as text.
Input: recent race result / time-trial result / goal time asking for pace
profile.json (PB, LT, goal)references/pace_system.md, derive E/M/T/I/R pace rangesFive-zone pace ranges + purpose + next-calibration suggestion (see references/pace_system.md template).
With user confirmation, write calibrated paces to profile.json for Route B/F (Hard Rule 9).
profile.json (PB, LT, HR zones, calibrated paces)references/nutrition.md)Write to the user's training-log system; degrade to text if unavailable.
From the result, suggest updating PB, LT, and calibrated paces in profile.json (write back after user confirmation).
Extract from input (screenshot/text/voice): HRV, sleep score, body battery, training readiness, short-term load trend.
| Metric | Alert threshold | Response |
|---|---|---|
| Short-term load | > 300 for 3 consecutive days | force Easy next day |
| HRV | < baseline for 3 days | delay quality 1-2 days |
| Sleep score | < 60 for 2 days | cut volume 20% |
| Training readiness | < 50 | adjust today's plan |
| RPE cumulative | > 600/week | reduce next week |
Output risk level (green/yellow/red) + action (maintain/adjust/rest). Combine with references/strength_recovery.md for recovery tactics. If a watch label conflicts with feel, explain algorithm limits (see references/zone_calc.md Garmin caveat).
No-screenshot Q&A; route by sub-type to the matching reference (load on demand, never preload all):
| Sub-type | Load |
|---|---|
| Form / injury screening | references/injury_check.md (with see-doctor red lines) |
| Warm-up / cool-down / activation | references/warmup_cooldown.md |
| Strength / mobility / recovery | references/strength_recovery.md |
| Daily nutrition / carb-load / in-run fueling | references/nutrition.md |
| Race pacing tactics / mindset / pre-race checklist | references/race_tactics.md |
| HR zones / pace math | references/zone_calc.md / references/pace_system.md |
| Gear | answer from the above methodology; no brand push unless user asks |
profile.json (physiology → personalise advice)Identify sub-type → load reference.
Personalised advice from the knowledge base + profile.json context.
Injury screening: use the decision tree in references/injury_check.md; risk assessment + see-doctor indicators only, no diagnosis (Hard Rule 4).
| Scenario | Action |
|---|---|
| profile.json missing | Guide setup: age / max HR / LT / PB / goal / phase → create profile.json (schema in references/profile_schema.md) |
| Screenshot OCR fails | Ask user to dictate key metrics (distance/time/pace/HR), enter manually |
| Log write fails | Check target system permissions/config (e.g. your training-log API may require a data_source_id or equivalent token), retry; else text report + manual-copy tip (Hard Rule 8) |
| No longitudinal data | Mark "insufficient history", single-session analysis only, no forced compare |
| Data conflict (profile LT vs screenshot LT > 5%) | Flag inconsistency, use latest training data, ask to update profile.json |
| Phase unclear / long gap | Re-judge phase per Hard Rule 2, don't reuse stale value |
| No calibration (Route G) | Suggest a time trial with protocol; never force generic absolute paces (Hard Rule 9) |
All routes:
## [Title: session / report name]
[Core verdict — 1-3 sentences]
| Dimension | Analysis | [Data] |
## [Sub-analysis]
[segment compare / trend]
## Suggestions
[1-3 actionable, specific]
Templates: references/report_template.md.
| Need | Load |
|---|---|
| Session type definitions & classification | references/session_types.md |
| HR zone methods (HRR/LT%/MaxHR%) | references/zone_calc.md |
| Periodization principles & phases | references/periodization.md |
| Injury screening decision tree | references/injury_check.md |
| Report templates | references/report_template.md |
| profile.json schema & example | references/profile_schema.md |
| Pace system / VDOT / fitness estimate | references/pace_system.md |
| Warm-up / cool-down / activation | references/warmup_cooldown.md |
| Strength / mobility / recovery | references/strength_recovery.md |
| Daily nutrition / carb-load / fueling | references/nutrition.md |
| Race pacing tactics / mindset / checklist | references/race_tactics.md |
Running Coach 是一个基于运动科学(Jack Daniels / Pfitzinger / 周期化训练理论)的跑步教练技能,覆盖从能力评估、单次训练分析、周课表、赛季规划、比赛复盘、负荷监控到比赛策略的全链路。
适用对象:已规律跑步、用手表记录数据、目标 5k–全马的业余跑者(每周 3–5 练);不适用零基础、竞技精英或未诊断伤病者。
核心路由:A 训练截图分析、B 周计划、F 赛季规划、G 配速与能力评估(成绩→VDOT→E/M/T/I/R 配速)、C 比赛复盘、D 负荷监控、E 专项咨询(热身/力量/营养/恢复/跑姿/伤病/装备)。
关键规则:数据源优先、阶段确认、体感优先于算法、不提供医疗建议、渐进保守(≤10%/周)、分析有据、用户 override 优先、存储可降级、配速以标定为准。
数据隐私:技能本身不含任何个人数据;生理档案由用户自己的 ~/.workbuddy/running-coach/profile.json 提供(首次使用引导建档,字段见 profile_schema.md 示例),训练记录写入用户自选的日志系统。本发布版为脱敏通用版本,与作者本地版功能完全一致,差异仅在个人信息与定制偏好。