garmin-connect-pro

Want to be fit like @steipete? Well, now you can track every step of your journey—literally. This skill pulls your complete Garmin Connect data into OpenClaw: activities, sleep, heart rate, stress, body battery, training readiness, VO2 max, and those race predictions you keep ignoring. Works with Fenix, Forerunner, Index scales, and anything else Garmin throws at you. Includes natural language queries ("how did I sleep?"), ASCII charts, week-over-week comparisons, and FIT/GPX downloads.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "garmin-connect-pro" with this command: npx skills add drpeterkalmar/garmin-connect-pro

Garmin Connect Pro

The most comprehensive Garmin Connect skill for OpenClaw. Retrieve activities, health data, sleep analysis, heart rate, stress, body battery, training readiness, VO2 max, and more from your Fenix, Forerunner, Index scales, or other Garmin devices.

Security & Privacy

⚠️ Important Security Information:

Credential Options

Option 1: Environment Variables (Recommended for cron jobs)

export GARMIN_EMAIL="your-email@example.com"
export GARMIN_PASSWORD="your-password"
  • More secure for automated/scheduled usage
  • Not stored on disk
  • Works with cron jobs without leaving plaintext files

Option 2: Credentials File

mkdir -p ~/.config/garmin-connect
echo '{"email": "your-email@example.com", "password": "your-password"}' > ~/.config/garmin-connect/credentials.json
chmod 600 ~/.config/garmin-connect/credentials.json
  • Stored in plaintext (any process with file access can read it)
  • File permissions set to 600 (owner read/write only)
  • Consider excluding from backups

Third-Party Library

This skill uses the garminconnect Python library for all Garmin API communication.

Data Flow

Your Credentials → garminconnect library → Garmin API servers
                     ↓
              OAuth tokens cached locally

No data is transmitted to any third parties other than Garmin via the official garminconnect library.

Setup

First-time Login

# Install dependency
pip3 install garminconnect

# Option A: Use environment variables (recommended)
export GARMIN_EMAIL="your-email@example.com"
export GARMIN_PASSWORD="your-password"

# Option B: Use credentials file
mkdir -p ~/.config/garmin-connect
echo '{"email": "your-email@example.com", "password": "your-password"}' > ~/.config/garmin-connect/credentials.json
chmod 600 ~/.config/garmin-connect/credentials.json

# Login (generates OAuth tokens)
python3 ~/.agents/skills/garmin-connect-pro/scripts/garmin.py login

Features

FeatureDescription
Natural Language Queries"how did I sleep?", "what's my body battery?", "should I train today?"
ASCII ChartsVisual trends for steps, HR, stress, battery
Week-over-Week ComparisonTrack progress vs last week
Race Predictions5K, 10K, half marathon, marathon
Body CompositionWeight, muscle mass, fat percentage
VO2 Max TrackingCardio fitness from activities
FIT/GPX DownloadsExport activity files
Training EffectAerobic + anaerobic impact
HR Zones per ActivityTime in each zone
Emoji-Powered OutputQuick visual scanning

Quick Start

# Ask questions naturally
python3 scripts/garmin.py ask "how did I sleep?"
python3 scripts/garmin.py ask "what's my training readiness?"

# Daily summary
python3 scripts/garmin.py summary

# Trends with charts
python3 scripts/garmin.py trends --days 7
python3 scripts/garmin.py chart steps --days 14

# Compare weeks
python3 scripts/garmin.py compare

# Download activities
python3 scripts/garmin.py download --id 123456 --format fit

Commands

Natural Language

python3 scripts/garmin.py ask "how did I sleep?"
python3 scripts/garmin.py ask "am I stressed?"
python3 scripts/garmin.py ask "how many steps today?"

Daily Metrics

python3 scripts/garmin.py summary              # Full daily summary
python3 scripts/garmin.py stats --today        # Steps, HR, calories
python3 scripts/garmin.py sleep --today        # Sleep stages
python3 scripts/garmin.py hr --today           # Heart rate data
python3 scripts/garmin.py hrv --today          # HRV
python3 scripts/garmin.py stress --today       # Stress levels
python3 scripts/garmin.py body-battery --today # Energy level

Activities

python3 scripts/garmin.py activities --limit 5
python3 scripts/garmin.py activity --id 123456 --full
python3 scripts/garmin.py download --id 123456 --format fit

Training & Performance

python3 scripts/garmin.py training --today     # Readiness + intensity
python3 scripts/garmin.py vo2max              # VO2 max + predictions
python3 scripts/garmin.py body                 # Body composition
python3 scripts/garmin.py race                 # Race predictions

Trends

python3 scripts/garmin.py week --days 7
python3 scripts/garmin.py trends --days 14
python3 scripts/garmin.py compare              # Week vs week
python3 scripts/garmin.py chart steps --days 30

Example Output

Natural Language Response

🔋 Body Battery:
   Current: 45%
   ⚠️ Moderate - lighter activity recommended

Weekly Comparison

📊 WEEK VS WEEK
─────────────────────────────────────────────────
Metric          This Week   Last Week   Change
─────────────────────────────────────────────────
Steps              42,500      38,200    ↑ 11.3%
Distance (km)         35.2        28.9   ↑ 21.8%
Calories            18,500      17,200     ↑ 7.6%
Resting HR            56.0        57.5     ↓ 2.6%

ASCII Chart

📈 STEPS - Last 7 Days
──────────────────────────────────────────────
10000 │       █           █
 8000 │   █   █   █       █
 6000 │   █   █   █   █   █
 4000 │   █   █   █   █   █   █
 2000 │   █   █   █   █   █   █   █
    0 └────────────────────────────────
      Mon  Tue  Wed  Thu  Fri  Sat  Sun

Cron Job Setup

⚠️ Security Note: Using environment variables is more secure than storing credentials on disk.

Option A: Environment Variables (Recommended)

# In your crontab or OpenClaw cron config:
GARMIN_EMAIL="your-email@example.com" GARMIN_PASSWORD="your-password" python3 ~/.agents/skills/garmin-connect-pro/scripts/garmin.py summary

Option B: Credentials File

# Morning briefing at 6:30
openclaw cron add --name "Morning Fitness" --cron "30 6 * * *" \
  --message "python3 ~/.agents/skills/garmin-connect-pro/scripts/garmin.py summary"

# Midday check at 12:00
openclaw cron add --name "Midday Check" --cron "0 12 * * *" \
  --message "python3 ~/.agents/skills/garmin-connect-pro/scripts/garmin.py ask 'body battery'"

# Evening summary at 20:00
openclaw cron add --name "Evening Summary" --cron "0 20 * * *" \
  --message "python3 ~/.agents/skills/garmin-connect-pro/scripts/garmin.py week --days 1"

Note: Cron jobs that run scripts with access to stored credentials increase the attack surface. Consider:

  • Using a dedicated Garmin account with limited permissions
  • Using environment variables instead of credential files
  • Running on a secure, isolated system

Data Available

CategoryMetrics
ActivitiesName, type, duration, distance, calories, HR zones, training effect, elevation, splits, steps
Daily StatsSteps, distance, floors, calories (total/active/BMR), HR (resting/min/max), stress, body battery
SleepTotal, deep, light, REM, awake, sleep score
HeartResting HR, min/max HR, HR zones, HRV (heart rate variability)
TrainingReadiness score, intensity minutes (moderate/vigorous), aerobic/anaerobic effect
BodyWeight, muscle mass, fat percentage, BMI (with Index scale)
PerformanceVO2 max, race predictions (5K-marathon), FTP (cycling)
HealthSpO2, respiration rate, hydration, stress timeline
DevicesFenix, Forerunner, Index scales, firmware, battery level

JSON Output

Add --json to any command for scripting:

python3 scripts/garmin.py summary --json | jq '.totalSteps'
python3 scripts/garmin.py activities --json | jq '.[0].averageHR'
python3 scripts/garmin.py export --days 30 --json > monthly_export.json

Requirements

  • Python 3.7+
  • garminconnect library (pip install garminconnect)
  • Garmin Connect account with devices synced

Troubleshooting

"Authentication failed"

  • Verify email and password in credentials file or environment variables
  • Delete tokens: rm -rf ~/.config/garmin-connect/tokens/
  • Re-run login

"No data for date"

  • Device may not have synced yet
  • Sleep data appears after morning sync
  • Some metrics (HRV, training readiness) require overnight processing

Rate Limits

  • Garmin may rate-limit excessive API calls
  • Add delays between bulk requests

The Honest Truth

This won't make you fitter. But it will make it harder to ignore the data. Your Garmin already knows you skipped leg day—now OpenClaw can remind you too.


Want to be fit like @steipete? Well, now you can track every step of your journey—literally.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Session-Memory Enhanced

Session-Memory Enhanced v4.0 - 统一增强版。融合 session-memory + memu-engine 核心功能。特性:结构化提取 + 向量检索 + 不可变分片 + 三位一体自动化 + 多代理隔离 + AI 摘要 + 零配置启动。

Registry SourceRecently Updated
General

PRISM-GEN-DEMO

English: Retrieve, filter, sort, merge, and visualize multiple CSV result files from PRISM-Gen molecular generation/screening. Provides portable query-based...

Registry SourceRecently Updated
General

Video Pro by cza999

专业AI视频生成器,支持文本转高质量短视频,批量处理、多模板和高级自定义语音功能,适合创作者和企业。

Registry SourceRecently Updated
0133
cza999