Skillsdbhq.uk (external site)

All nine skills

Garmin

Claude Code + CodexLiveMIT

Your Garmin data, answered in the terminal

Body Battery, HRV, resting heart rate, sleep stages and score, VO2 max, training load and readiness - asked live, or written out as a markdown day and a weekly rollup you keep. Your credentials stay on your machine and the data goes nowhere but Garmin and you.

Install Garmin

  1. Add the DBHQ marketplace, once

    /plugin marketplace add dbhq-uk/marketplace
  2. Install the skill

    /plugin install garmin@dbhq

Both commands work in Claude Code and in Codex. The marketplace is a public repository you can read first: dbhq-uk/marketplace (external site)

What it is good at

  • Answering, and archiving

    Most integrations do one or the other. A live query returns today's vitals into the conversation; a snapshot writes a whole day as a markdown file and a rollup aggregates a week into a summary, both into a directory you name. Those files are yours, in plain text, and they outlive both this skill and your subscription.

  • The whole spread, not a headline number

    Resting heart rate, HRV, Body Battery, stress, steps and calories; sleep score with deep, light, REM and awake; activities with heart rate, calories and training effect; VO2 max, training load, training status and training readiness.

  • Telling "no data" apart from "the call failed"

    A day Garmin has nothing for renders as no data and the file still writes. A fetch that actually failed raises and aborts the write. That distinction sounds pedantic until the alternative bites you: an archive quietly full of empty days, indistinguishable from days you genuinely did not wear the watch.

  • Being tested against the real client, not only a mock

    Garmin Connect has no public API and no versioning, and the library that wraps it renames things when Garmin moves underneath it. A mock invents whatever attribute it is asked for, which is how an authentication rename went unnoticed for months. So one test imports the real library and inspects its actual surface - and still makes no network call.

What it does not do

  • It will not write anything back to Garmin

    Every call is a read. There is no code path that creates, edits or deletes anything in your Garmin account, and there never will be. A health record you did not enter yourself is worse than no record.

  • It will not send your data anywhere but Garmin and you

    No analytics, no aggregation service, no anonymised upload, and no DBHQ service in the middle. Credentials sit in your own home directory at mode 600 and the tokens Garmin issues are cached beside them. Run it with the network off and it fails to reach Garmin and does nothing else.

  • It will not give you medical advice

    It reports what the watch measured, and Garmin's own figures are estimates from a wrist optical sensor. Body Battery, stress and sleep staging in particular are proprietary models rather than measurements. Treat them as trend lines, not diagnoses.

  • It will not run below Python 3.12

    That floor comes from the library underneath, not from the skill. It also needs a Garmin Connect account - the same one you use in the app - and multi-factor authentication is supported, on first login only.

Read it before you install it

Every line is public and MIT licensed. The README is the long version of this page, including the parts that are still rough.