Garmin Health Report
v2.0.0Generate comprehensive daily health reports from Garmin Connect data with professional running analysis (Heart Rate Zones, TRIMP, Jack Daniels VDOT).
⭐ 0· 270·0 current·0 all-time
by@gzzzj
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
Name/description, required binary (python3), dependency (garth), and the included Python modules (authenticate.py, garmin_client.py, health_daily_report.py) align with a Garmin Connect report generator. There are no unrelated cloud credentials or unexpected services requested.
Instruction Scope
Runtime instructions tell the user to run authenticate.py and health_daily_report.py and to store tokens under ~/.garmin-health-report; that matches the code. Minor oddities: authenticate.py defaults to China region (is_cn True) if no config exists, which may surprise international users; code reads/writes files in the user's home directory (~/.garmin-health-report and ~/.garmin_health_report). No instructions ask the agent to read broad system state or unrelated secrets.
Install Mechanism
Installation is via pip (garth from PyPI) as declared in SKILL.md and requirements.txt — a standard mechanism for Python tools. This is expected but comes with the normal caveat that third-party pip packages can carry risk; there are no downloads from arbitrary URLs or extracted archives.
Credentials
The skill requests no environment variables but reads/writes files in the user home directory to persist tokens and history. It requires interactive entry of Garmin username/password and stores tokens locally (garth.save into ~/.garmin-health-report). This is proportionate for a client that talks to Garmin, but users should be aware tokens and credentials are stored on disk and deletion/cleanup in logout may be incomplete.
Persistence & Privilege
The skill is not always-enabled, does not modify other skills, and does not request elevated or persistent platform privileges. Its file writes are limited to user-owned home-directory locations.
Scan Findings in Context
[unicode-control-chars] unexpected: A unicode-control-chars pattern was detected in SKILL.md. This can be used to obfuscate content or attempt prompt-injection; it is not expected for a plain documentation file and should be inspected. The repository also contains Chinese text (legitimate) but the control-character flag may indicate hidden control characters inserted into the documentation.
What to consider before installing
Things to consider before installing:
- Inspect SKILL.md and README for any hidden/control characters (the pre-scan flagged unicode-control-chars). Open the files in a hex-aware editor or run utilities to reveal invisible characters.
- Review the included Python files locally (authenticate.py, garmin_client.py, health_daily_report.py). The code appears to call only the garth library and Garmin endpoints, but verify there are no unexpected network calls or hard-coded endpoints.
- Understand token storage: the skill saves OAuth tokens under ~/.garmin-health-report (and a separate history file under ~/.garmin_health_report). Ensure you are comfortable with tokens being stored on disk and check file permissions. Logout/delete behavior may not remove all garth-generated token files (oauth1/oauth2 json) — manually inspect the directory if you remove credentials.
- Verify the garth package reputation (pip package index, project repo). Using third-party pip packages has inherent supply-chain risk; prefer reviewing the package source or pinning versions.
- Note region defaulting: authenticate.py defaults to China region unless you create config.json or pass explicit args. If you have a non-China Garmin account, run the auth script with the 'international' mode or create config.json to avoid connecting to the wrong domain.
- If you have security concerns, run the scripts in a restricted environment (container/VM) and do not enter credentials until you are satisfied with the source.
If you'd like, I can highlight the exact lines that reference token paths, domain configuration, and any places that might leave residual tokens so you can inspect them further.Like a lobster shell, security has layers — review code before you run it.
fitnessvk97amf7q1e2s41mg7e9z6sp0q98294m4garminvk97amf7q1e2s41mg7e9z6sp0q98294m4healthvk97amf7q1e2s41mg7e9z6sp0q98294m4latestvk97amf7q1e2s41mg7e9z6sp0q98294m4runningvk97amf7q1e2s41mg7e9z6sp0q98294m4
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
Runtime requirements
🏃♂️ Clawdis
Binspython3
