garmin-connect-health

Fetch health and fitness data from Garmin Connect -- 40+ metrics including sleep, HRV, stress, body battery, SpO2, VO2 Max, training status, and activities. Stores data locally as JSON and SQLite.

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-health" with this command: npx skills add dw1161/garmin-connect-health

Garmin Connect Health Data Skill

Fetch comprehensive health & fitness data from Garmin Connect for your AI agent.

Data Coverage

CategoryFields
ActivitySteps, distance, calories (active + BMR), floors, intensity minutes
Heart RateMin/max/resting heart rate
SleepDuration, score, deep/light/REM/awake breakdown, stress during sleep
HRVLast night avg, 5min peak, weekly avg, status (balanced/unbalanced), baseline
Body BatteryCurrent level, daily min/max
SpO2Average and minimum blood oxygen
RespirationWaking and sleep breathing rate
StressAverage/max, rest/low/medium/high duration breakdown
Training StatusOverreaching/Highly Active/Productive/Maintaining/Recovery/Detraining + acute/chronic load ratio
Training ReadinessScore (0-100)
Fitness MetricsVO2 Max, fitness age, endurance score, hill score
Race Predictions5K/10K/Half/Marathon predicted times
Weight/Body CompWeight (kg), body fat %, BMI (requires Garmin Index scale)
HydrationIntake (ml) vs goal
ActivitiesIndividual workouts with HR, duration, calories, elevation, training effect, and detail JSON
Weekly SummaryTotal/avg steps for the week
SQLite Tablesdaily_summary, activities, and activity_sets for queryable local analysis

Setup

1. Install dependency

pip install garminconnect

2. Set credentials (choose one method)

Option A -- Environment variables:

export GARMIN_EMAIL="you@example.com"
export GARMIN_PASSWORD="yourpassword"

Option B -- CLI args:

python3 garmin_health.py --email you@example.com --password yourpassword

Option C -- macOS Keychain:

security add-generic-password -a "you@example.com" -s "garmin_connect" -w "yourpassword"

Option D -- Credentials file:

echo -e "email=you@example.com\npassword=yourpassword" > ~/.garmin_credentials
chmod 600 ~/.garmin_credentials

3. Set region (China accounts only)

If your Garmin account was registered in China, add this to your shell profile (~/.zshrc / ~/.bashrc) once:

export GARMIN_IS_CN=true

This tells the skill to use connect.garmin.com.cn instead of the global endpoint -- more reliable for mainland China IPs and prevents 429 rate-limit errors. Skip this step if you have a global Garmin account.

4. First run

First login may require MFA verification. You'll be prompted to enter a code sent to your email.

5. Use with OpenClaw

Ask your AI agent:

  • "Show my health data"
  • "How did I sleep last night?"
  • "What's my HRV?"
  • "Am I overtraining?"

Usage

# Fetch today's data (default)
python3 garmin_health.py

# Fetch specific date
python3 garmin_health.py --date 2026-03-16

# Show latest cached data
python3 garmin_health.py --show

# Use Garmin Connect CN endpoint (Chinese accounts / mainland China IP)
python3 garmin_health.py --cn

# With credentials
python3 garmin_health.py --email you@example.com --password pass

Data Storage

  • ~/.garmin_health/YYYY-MM-DD.json -- Daily JSON snapshots
  • ~/.garmin_health/latest.json -- Most recent JSON snapshot
  • ~/.garmin_health/garmin.db -- SQLite database with daily_summary, activities, and activity_sets tables
  • ~/.garminconnect/ -- OAuth token cache

Override with env vars:

  • GARMIN_DATA_DIR -- Change data directory
  • GARMIN_TOKENSTORE -- Change token cache directory
  • GARMIN_IS_CN=true -- Use Garmin Connect CN endpoint (set once in shell profile)

Supported Languages

All labels and output in English. JSON field names are English by design.

Security & Privacy

  • Your credentials only -- this skill authenticates with Garmin Connect using your own account credentials. No credentials are shared with or stored by this skill.
  • Local storage only -- all fetched health data is saved as JSON/SQLite files on your own machine. No data is sent to any third party.
  • Token caching -- after first login, an OAuth token is cached locally (~/.garminconnect/). Subsequent runs reuse this token and do not re-send your password.
  • Recommended auth -- use macOS Keychain or environment variables rather than --password CLI flag to avoid password exposure in shell history.
  • Official API only -- all requests go directly to connect.garmin.com (or connect.garmin.com.cn for CN accounts). No proxies or intermediaries.

Requirements

  • Python 3.10+
  • garminconnect library
  • A Garmin Connect account
  • Device: Any Garmin watch/fitness tracker synced to Garmin Connect

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

Pill Counter Skill

使用 OpenCV 混合检测(霍夫圆+轮廓分析)精确计数药片。 支持13种形状识别,解决叠加药片漏检问题。 输出统计表格(文本/CSV/JSON)和标注图片。 支持:圆形(小/中/大)、椭圆形、胶囊形、三角形、四方形、菱形、 五边形、六边形、八边形、多边形等。

Registry SourceRecently Updated
General

Install Hirey AI on OpenClaw

Install or repair Hirey AI on a local OpenClaw host through the official ClawHub package path, then complete the local MCP, receiver, registration, and healt...

Registry SourceRecently Updated
General

twitter-aisa

Search and retrieve Twitter/X profiles, tweets, trends, and Spaces via AISA relay, and publish approved posts with OAuth without sharing passwords.

Registry SourceRecently Updated
General

twitter-post-aisa

Search, post, like, follow, and engage with Twitter/X content via AISA relay using OAuth-approved API actions with no password sharing.

Registry SourceRecently Updated