{
  "schemaVersion": "1.0",
  "item": {
    "slug": "garmin-connect-fixed",
    "name": "Garmin Connect (Fixed)",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
    "canonicalUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/garmin-connect-fixed",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=garmin-connect-fixed",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "requirements.txt",
      "scripts/garmin-auth-oauth.py",
      "scripts/garmin-auth.py",
      "scripts/garmin-cron.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/garmin-connect-fixed"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/garmin-connect-fixed",
    "agentPageUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent",
    "manifestUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Garmin Connect Skill",
        "body": "Sync all your Garmin fitness data to Clawdbot:\n\n🚶 Daily Activity: Steps, heart rate, calories, active minutes, distance\n😴 Sleep: Duration, quality, deep/REM/light sleep breakdown\n🏋️ Workouts: Recent activities with distance, duration, calories, heart rate\n⏱️ Real-time sync: Every 5 minutes via cron"
      },
      {
        "title": "1. Install Dependencies",
        "body": "pip install -r requirements.txt"
      },
      {
        "title": "2. OAuth Authentication (One-time)",
        "body": "python3 scripts/garmin-auth.py your-email@gmail.com your-password\n\nThis saves your OAuth session to ~/.garth/session.json — fully local and secure."
      },
      {
        "title": "3. Test Sync",
        "body": "python3 scripts/garmin-sync.py\n\nYou should see JSON output with today's stats."
      },
      {
        "title": "4. Set Up 5-Minute Cron",
        "body": "Add to your crontab:\n\n*/5 * * * * /home/user/garmin-connect-clawdbot/scripts/garmin-cron.sh\n\nOr manually:\n\n*/5 * * * * python3 /home/user/garmin-connect-clawdbot/scripts/garmin-sync.py ~/.clawdbot/.garmin-cache.json"
      },
      {
        "title": "5. Use in Clawdbot",
        "body": "Import and use in your scripts:\n\nfrom scripts.garmin_formatter import format_all, get_as_dict\n\n# Get all formatted data\nprint(format_all())\n\n# Or get raw dict\ndata = get_as_dict()\nprint(f\"Steps today: {data['summary']['steps']}\")"
      },
      {
        "title": "Features",
        "body": "✅ OAuth-based (secure, no password storage)\n✅ All metrics: activity, sleep, workouts\n✅ Local caching (fast access)\n✅ Cron-friendly (5-minute intervals)\n✅ Easy Clawdbot integration\n✅ Multi-user support"
      },
      {
        "title": "Daily Activity (summary)",
        "body": "steps: Daily step count\nheart_rate_resting: Resting heart rate (bpm)\ncalories: Total calories burned\nactive_minutes: Intensity minutes\ndistance_km: Distance traveled"
      },
      {
        "title": "Sleep (sleep)",
        "body": "duration_hours: Total sleep time\nduration_minutes: Sleep in minutes\nquality_percent: Sleep quality score (0-100)\ndeep_sleep_hours: Deep sleep duration\nrem_sleep_hours: REM sleep duration\nlight_sleep_hours: Light sleep duration\nawake_minutes: Time awake during sleep"
      },
      {
        "title": "Workouts (workouts)",
        "body": "For each recent workout:\n\ntype: Activity type (Running, Cycling, etc.)\nname: Activity name\ndistance_km: Distance traveled\nduration_minutes: Duration of activity\ncalories: Calories burned\nheart_rate_avg: Average heart rate\nheart_rate_max: Max heart rate"
      },
      {
        "title": "Cache Location",
        "body": "By default, data is cached at: ~/.clawdbot/.garmin-cache.json\n\nCustomize with:\n\npython3 scripts/garmin-sync.py /custom/path/cache.json"
      },
      {
        "title": "Files",
        "body": "FilePurposegarmin-auth.pyOAuth setup (run once)garmin-sync.pyMain sync logic (run every 5 min)garmin-formatter.pyFormat data for displaygarmin-cron.shCron wrapper scriptrequirements.txtPython dependencies"
      },
      {
        "title": "OAuth authentication fails",
        "body": "Check email/password\nDisable 2FA on Garmin account (or use app password)\nGarmin servers might be rate-limiting — wait 5 minutes"
      },
      {
        "title": "No data appears",
        "body": "Sync your Garmin device with the Garmin Connect app\nWait 2-3 minutes for data to sync\nCheck that data appears in Garmin Connect web/app\nThen run garmin-sync.py again"
      },
      {
        "title": "Permission denied on cron",
        "body": "chmod +x scripts/garmin-cron.sh\nchmod +x scripts/garmin-sync.py\nchmod +x scripts/garmin-auth.py"
      },
      {
        "title": "Cache file not found",
        "body": "Run garmin-sync.py at least once to create cache:\n\npython3 scripts/garmin-sync.py"
      },
      {
        "title": "Usage Examples",
        "body": "from scripts.garmin_formatter import format_all, get_as_dict\n\n# Get formatted output\nprint(format_all())\n\n# Get raw data\ndata = get_as_dict()\nif data:\n    print(f\"Sleep: {data['sleep']['duration_hours']}h\")\n    print(f\"Steps: {data['summary']['steps']:,}\")"
      },
      {
        "title": "License",
        "body": "MIT — Use, fork, modify freely.\n\nMade for Clawdbot | Available on ClawdHub"
      }
    ],
    "body": "Garmin Connect Skill\n\nSync all your Garmin fitness data to Clawdbot:\n\n🚶 Daily Activity: Steps, heart rate, calories, active minutes, distance\n😴 Sleep: Duration, quality, deep/REM/light sleep breakdown\n🏋️ Workouts: Recent activities with distance, duration, calories, heart rate\n⏱️ Real-time sync: Every 5 minutes via cron\nQuick Start\n1. Install Dependencies\npip install -r requirements.txt\n\n2. OAuth Authentication (One-time)\npython3 scripts/garmin-auth.py your-email@gmail.com your-password\n\n\nThis saves your OAuth session to ~/.garth/session.json — fully local and secure.\n\n3. Test Sync\npython3 scripts/garmin-sync.py\n\n\nYou should see JSON output with today's stats.\n\n4. Set Up 5-Minute Cron\n\nAdd to your crontab:\n\n*/5 * * * * /home/user/garmin-connect-clawdbot/scripts/garmin-cron.sh\n\n\nOr manually:\n\n*/5 * * * * python3 /home/user/garmin-connect-clawdbot/scripts/garmin-sync.py ~/.clawdbot/.garmin-cache.json\n\n5. Use in Clawdbot\n\nImport and use in your scripts:\n\nfrom scripts.garmin_formatter import format_all, get_as_dict\n\n# Get all formatted data\nprint(format_all())\n\n# Or get raw dict\ndata = get_as_dict()\nprint(f\"Steps today: {data['summary']['steps']}\")\n\nFeatures\n\n✅ OAuth-based (secure, no password storage) ✅ All metrics: activity, sleep, workouts ✅ Local caching (fast access) ✅ Cron-friendly (5-minute intervals) ✅ Easy Clawdbot integration ✅ Multi-user support\n\nData Captured\nDaily Activity (summary)\nsteps: Daily step count\nheart_rate_resting: Resting heart rate (bpm)\ncalories: Total calories burned\nactive_minutes: Intensity minutes\ndistance_km: Distance traveled\nSleep (sleep)\nduration_hours: Total sleep time\nduration_minutes: Sleep in minutes\nquality_percent: Sleep quality score (0-100)\ndeep_sleep_hours: Deep sleep duration\nrem_sleep_hours: REM sleep duration\nlight_sleep_hours: Light sleep duration\nawake_minutes: Time awake during sleep\nWorkouts (workouts)\n\nFor each recent workout:\n\ntype: Activity type (Running, Cycling, etc.)\nname: Activity name\ndistance_km: Distance traveled\nduration_minutes: Duration of activity\ncalories: Calories burned\nheart_rate_avg: Average heart rate\nheart_rate_max: Max heart rate\nCache Location\n\nBy default, data is cached at: ~/.clawdbot/.garmin-cache.json\n\nCustomize with:\n\npython3 scripts/garmin-sync.py /custom/path/cache.json\n\nFiles\nFile\tPurpose\ngarmin-auth.py\tOAuth setup (run once)\ngarmin-sync.py\tMain sync logic (run every 5 min)\ngarmin-formatter.py\tFormat data for display\ngarmin-cron.sh\tCron wrapper script\nrequirements.txt\tPython dependencies\nTroubleshooting\nOAuth authentication fails\nCheck email/password\nDisable 2FA on Garmin account (or use app password)\nGarmin servers might be rate-limiting — wait 5 minutes\nNo data appears\nSync your Garmin device with the Garmin Connect app\nWait 2-3 minutes for data to sync\nCheck that data appears in Garmin Connect web/app\nThen run garmin-sync.py again\nPermission denied on cron\nchmod +x scripts/garmin-cron.sh\nchmod +x scripts/garmin-sync.py\nchmod +x scripts/garmin-auth.py\n\nCache file not found\n\nRun garmin-sync.py at least once to create cache:\n\npython3 scripts/garmin-sync.py\n\nUsage Examples\nfrom scripts.garmin_formatter import format_all, get_as_dict\n\n# Get formatted output\nprint(format_all())\n\n# Get raw data\ndata = get_as_dict()\nif data:\n    print(f\"Sleep: {data['sleep']['duration_hours']}h\")\n    print(f\"Steps: {data['summary']['steps']:,}\")\n\nLicense\n\nMIT — Use, fork, modify freely.\n\nMade for Clawdbot | Available on ClawdHub"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
    "publisherUrl": "https://clawhub.ai/GodsBoy/garmin-connect-fixed",
    "owner": "GodsBoy",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/garmin-connect-fixed",
    "downloadUrl": "https://openagent3.xyz/downloads/garmin-connect-fixed",
    "agentUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent",
    "manifestUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/garmin-connect-fixed/agent.md"
  }
}