Install
openclaw skills install @baijian/garmin-analysis-skillGarmin activity sync and structured sleep, recovery, ride, and cycling-ability analysis workflows using the public cycling-health CLI, including CLI install/verify/self-upgrade from GitHub and Discord feedback routing. Data queries select the region from login state; CN-to-Global sync requires both regions to be logged in. Use when an assistant needs to analyze last night's sleep or longer sleep trends, assess recovery/readiness, review a ride, evaluate cycling fitness and progression using activity history, training load, VO2 max, cycling FTP, W/kg, endurance score, hill score, zones, splits, or FIT/GPX data, inspect Garmin status, sync Garmin China activities to Garmin Global, or report cycling-health issues.
openclaw skills install @baijian/garmin-analysis-skillUse cycling-health as the command-line interface for Garmin data. The CLI is public and available from https://github.com/baijian/cycling-health.
cycling-health from PATH. If it is missing, guide the user to install it from the public repository before continuing.cycling-health exists, run cycling-health upgrade --output json once before Garmin status, sync, or analysis commands.cn nor global is logged in, prompt the user to log in; if only one is logged in, use that region; if both are logged in and the user did not specify a region, default to cn. When the user explicitly names a region, use it (it must be logged in). Pass the selected region with --region <cn|global>; omitting the flag defaults to cn. CN-to-Global sync requires both cn and global to be logged in.Read references/cli-workflows.md when you need exact install guidance, commands, JSON fields, or failure handling.
Confirm cycling-health is available:
cycling-health version when command execution is available.https://github.com/baijian/cycling-health.Upgrade the CLI before using Garmin commands:
cycling-health upgrade --output json once per skill invocation when command execution is available.up-to-date, continue normally.Check Garmin login state and select the query region:
cycling-health garmin status --output json to see which of cn and global are logged in.garmin login --region <cn|global> before querying data.cn.--region <cn|global>; omitting it defaults to cn.cn and global must be logged in.Select the task workflow:
Report results:
When users want to report bugs, installation problems, Garmin data gaps, or analysis issues, invite them to join the Discord server and use its feedback channel:
https://discord.gg/R6xPZc5Dg
Use when the user asks to sync, migrate, mirror, upload, backfill, or keep Garmin China activities aligned with Garmin Global.
Default approach:
cn and global are logged in; sync cannot run otherwise.Do not run a full historical sync without making the scope clear.
Use when the user asks about sleep quality, sleep score, sleep duration, sleep stages, overnight HRV, resting HR, stress, body battery, recovery, or recent sleep trends.
Data source: select the region by login state per Principles (no login → prompt login; one login → that region; both logins and unspecified → cn). Pass it with --region <cn|global>.
Default approach:
health get for HRV, resting HR, stress, body battery, respiration, or SpO2 when recovery context is needed. Add bb_events only when explaining which activities or events charged or drained body battery.Do not conclude that sleep details are unavailable until the sleep list, adjacent-date sleep window, and daily summary fallback have all been checked.
Avoid medical diagnosis. Present wellness observations only.
Use when the user asks about recent rides, a specific cycling activity, cycling ability, training load from rides, heart rate, speed, elevation, cadence, power, pacing, VO2 max, FTP, endurance, climbing ability, W/kg, or local FIT/GPX files.
Data source: select the region by login state per Principles (no login → prompt login; one login → that region; both logins and unspecified → cn). Pass it with --region <cn|global> on commands that accept it (for example activity list --region cn).
Default approach:
activity get first because it already collects summary, laps, HR/power zones, weather, and gear. Use --raw only when the simplified result omits a needed field.max_metrics, direct cycling_ftp, endurance score, and hill score. Query weight/composition only when body context or W/kg is relevant.activity progress for explicit progression questions. Query only the requested axes (distance, duration/moving duration, or elevation gain) instead of calling every metric by default.activity extended when typed splits or split summaries are needed but normal activity details are insufficient. Export/analyze FIT or GPX only for point-level pacing, HR drift/decoupling, power stability, cadence consistency, or local-file inspection.Do not conclude that HR zones, VO2 max, FTP, weight, W/kg, splits, or point-level data are unavailable until the relevant staged fallbacks in references/cli-workflows.md have been checked.