Garmin

ReviewAudited by ClawScan on May 10, 2026.

Overview

The Garmin integration is purpose-aligned, but it handles password-vault credentials and persists Garmin session/health data with incomplete declaration and weak retention controls.

Review carefully before installing. Only use this if you are comfortable letting the skill access Garmin credentials through 1Password and read sensitive health metrics. Restrict the 1Password service-account token to the Garmin item, use a virtual environment with pinned dependencies, secure or periodically delete `/tmp/garmin-session/`, and decide whether local caching under `/root/clawd/data/fitness/garmin/` is acceptable.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Installing or running the skill gives it access to Garmin account credentials via 1Password and may leave reusable Garmin session tokens on disk.

Why it was flagged

The script automatically reads a local 1Password service-account token, reveals the Garmin password, and writes Garmin session tokens. That credential/session authority is high-impact and is not reflected in the registry's declared credential or environment requirements.

Skill content
export OP_SERVICE_ACCOUNT_TOKEN="${OP_SERVICE_ACCOUNT_TOKEN:-$(cat ~/.config/op/service-account-token 2>/dev/null)}"
EMAIL=$(op item get "$GARMIN_1P_ITEM_NAME" --vault "$GARMIN_1P_VAULT" --fields username 2>/dev/null)
PASSWORD=$(op item get "$GARMIN_1P_ITEM_NAME" --vault "$GARMIN_1P_VAULT" --fields password --reveal 2>/dev/null)
...
client.garth.dump(dir_path='/tmp/garmin-session/')
Recommendation

Declare the required 1Password/Garmin credentials, restrict the 1Password service account to only the Garmin item, store session tokens in a private directory with restrictive permissions, and add explicit cleanup or expiration guidance.

What this means

Sensitive fitness and health information may remain available to the local system or future agent runs after the original query.

Why it was flagged

The skill can persist daily Garmin health metrics, including sleep, stress, heart-rate, and recovery data, as dated local JSON files. This is related to the skill purpose, but the artifacts do not define retention, encryption, or cleanup.

Skill content
CACHE_DIR="${GARMIN_CACHE_DIR:-/root/clawd/data/fitness/garmin}"
CACHE_FILE="$CACHE_DIR/$TODAY.json"
...
echo "$CACHED" > "$CACHE_FILE"
Recommendation

Make caching opt-in, document retention clearly, use restrictive file permissions, and provide a cleanup command for cached health data.

What this means

The installed package version may change over time, and the system Python environment could be affected if the non-venv command is used.

Why it was flagged

The skill asks the user to install an unpinned third-party Python package and even shows a system-package-breaking install option. This is central to the Garmin integration, but it increases dependency and local environment risk.

Skill content
pip3 install garminconnect --break-system-packages
# Or using a virtual environment (recommended):
# python3 -m venv ./venv
Recommendation

Prefer the virtual environment path, pin dependency versions, and avoid `--break-system-packages` unless the user explicitly accepts the system-level impact.

What this means

The Garmin skill's output can depend on another local skill whose behavior is outside this review.

Why it was flagged

The morning summary runs a hard-coded script from a separate Strava skill that is not included in this artifact set. The Strava integration is described in SKILL.md, but the dependency is not declared in metadata.

Skill content
STRAVA=$(/root/clawd/skills/strava/scripts/training-summary.sh 2>/dev/null || true)
Recommendation

Declare the Strava dependency explicitly and review the referenced Strava skill before relying on combined morning summaries.