Query Google Health API v4 — steps, heart rate, exercise, sleep, weight, SpO2, HRV, ECG, blood glucose, nutrition, and 40 total data types

Apache-2.0Auto-check passedProductivity & Automation

Install Ghealth

skills CLI
$ npx skills add Google-Health-API/google-health-cli --skill ghealth -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Google-Health-API/google-health-cli ghealth --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Google-Health-API/google-health-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ghealth .claude/skills/ghealth && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ghealth
GitHub stars
266
Token cost
~2.3k tokens
SKILL.md length
869 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Query Google Health API v4 — steps, heart rate, exercise, sleep, weight, SpO2, HRV, ECG, blood glucose, nutrition, and 40 total data types

  • Tasks that involve Health and fitness tracking
  • SKILL.md covers Choosing the right operation, Types at a glance, Patterns the CLI can't tell you and Exporting data for analysis, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Ghealth is an agent skill from Google-Health-API/google-health-cli. Query Google Health API v4 — steps, heart rate, exercise, sleep, weight, SpO2, HRV, ECG, blood glucose, nutrition, and 40 total data types

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Productivity & Automation, covering Health and fitness tracking. The repository describes itself as: Google Health CLI — one command-line tool for the Google Health API. Includes AI agent skills. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Health and fitness tracking

Example prompts

  • “/ghealth”

What it can do on your machine

Read from SKILL.md and the folder at commit 9cf0274. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and csv).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ghealth loads about 2.3k tokens when it runs. Until then it costs about 37 tokens; SKILL.md has 869 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~37
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Google-Health-API/google-health-cli at commit 9cf0274, republished under its Apache-2.0 licence (© Google-Health-API). 869 words, ~2,339 tokens.

Download SKILL.mdSave it as .claude/skills/ghealth/SKILL.md (or your agent's skills folder).
name
ghealth
description
Query Google Health API v4 — steps, heart rate, exercise, sleep, weight, SpO2, HRV, ECG, blood glucose, nutrition, and 40 total data types

ghealth

CLI for the Google Health API v4. 40 verified data types.

Prerequisites: See ../ghealth-shared/SKILL.md for auth, setup, global flags.

Choosing the right operation

GoalOperationExample
Daily totals (steps, distance, calories)daily-rollupghealth data steps daily-rollup --from 2026-03-22 --to 2026-03-29
Individual readings (HR, weight, SpO2)listghealth data heart-rate list --from today --limit 20
Sessions (exercise, sleep)listghealth data exercise list --from 2026-03-01
Daily summaries (resting HR, HRV, resp rate)listghealth data daily-resting-heart-rate list --from 2026-03-01
Merged multi-source datareconcileghealth data weight reconcile --from 2026-01-01

Why this matters: steps list returns minute-level intervals without counts. Use daily-rollup to get actual step totals (countSum). Same for distance (millimetersSum) and floors.

Types at a glance

Run ghealth schema types for the live version. Quick reference:

Use daily-rollup for totals:

  • steps → countSum per day
  • distance → millimetersSum per day
  • total-calories → kcalSum per day (rollup-only)
  • floors → countSum (rollup-only)
  • active-minutes → (rollup-only)
  • swim-lengths-data → strokeCountSum per day
  • calories-in-heart-rate-zone → caloriesInHeartRateZones per day (rollup-only)

Use list for readings: heart-rate, weight (writable), body-fat (writable), height (writable), oxygen-saturation, heart-rate-variability, altitude, vo2-max, active-zone-minutes, activity-level, basal-energy-burned, active-energy-burned, blood-glucose, core-body-temperature, respiratory-rate-sleep-summary, run-vo2-max, sedentary-period, swim-lengths-data, hydration-log

Use list for sessions:

  • exercise (writable) — includes type, duration, calories, HR summary, notes
  • sleep (writable) — includes summary by default. Add --detail for per-stage breakdown.

Cardiac (dedicated scopes, list-only):

  • electrocardiogram — waveform samples + rhythm classification. Requires ecg.readonly.
  • irregular-rhythm-notification — alert windows. Requires irn.readonly.

Nutrition:

  • nutrition-log — logged food entries with nutrient/energy breakdown (list, get, rollup, daily-rollup, reconcile)
  • food, food-measurement-unit — reference catalogs (list, get only). No time filter — --from/--to are ignored.

Daily summaries (one value per day, filter by date): daily-resting-heart-rate, daily-heart-rate-variability, daily-oxygen-saturation, daily-respiratory-rate, daily-vo2-max, daily-sleep-temperature-derivations

Get a single point by ID: get --id <id> is supported on exercise, sleep, weight, body-fat, height, hydration-log, nutrition-log, blood-glucose, core-body-temperature, food, food-measurement-unit.

Patterns the CLI can't tell you

These require judgment that --help and schema don't provide.

Get the user's timezone before querying date-sensitive data:

bash
ghealth user settings get   # → timeZone: "Europe/London", utcOffset: "3600s"
# Then use --from/--to with the correct local dates

This reports the account timezone for information only — to have the CLI resolve dates in that zone, set it explicitly with ghealth config set timezone <IANA zone>.

Sleep/exercise page size is capped at 25 per request (auto-paginated by CLI):

bash
ghealth data sleep list --limit 5    # CLI handles pagination internally

Paging through large list results. list returns up to --limit rows (default 500). When more exist, the response carries a nextPageToken and a hint. Pass it back with --page-token to fetch the next page — it resumes exactly where the last page ended, no rows skipped or repeated:

bash
ghealth data heart-rate list --from 2026-06-15 --limit 500
#   → {"dataPoints":[…500…], "nextPageToken":"ABC", "_hints":[…]}
ghealth data heart-rate list --from 2026-06-15 --limit 500 --page-token ABC
#   → next 500 rows

Correlate heart rate with exercise sessions:

bash
# 1. Get exercise time window
ghealth data exercise list --from today --limit 1
#    → start: "2026-03-29T14:18:32+01:00", end: "2026-03-29T14:39:14+01:00"
# 2. Query HR for that window using --filter (raw API syntax, UTC required)
ghealth data heart-rate list --filter 'heart_rate.sample_time.physical_time >= "2026-03-29T13:18:32Z" AND heart_rate.sample_time.physical_time < "2026-03-29T13:40:00Z"'

Exporting data for analysis

Use -o <file> to write data to a file. When -o is set, stdout shows only a summary with the column schema — not the data itself. This means you can fetch data and immediately write analysis code using the column names from stdout, without reading the file.

bash
ghealth data steps daily-rollup --from 2026-03-24 --to 2026-03-30 --format csv -o steps.csv

What stdout shows (this is all the agent sees):

Wrote 6 rows to steps.csv

Columns: countSum, date
Preview:
countSum,date
4062,2026-03-29
9122,2026-03-28
2469,2026-03-27

What the file contains (full CSV, not printed to stdout):

csv
countSum,date
4062,2026-03-29
9122,2026-03-28
2469,2026-03-27
6541,2026-03-26
4025,2026-03-25
3995,2026-03-24

The agent now knows the columns are countSum and date, and can write pd.read_csv("steps.csv") without ever reading the file.

Do not pipe to file — use -o instead. Piping (> file.csv) sends the full data to the file but prints nothing to stdout, so the agent has no column schema and must read the file to learn the structure.

More examples:

bash
# Sleep — nested stageMinutes auto-flattened to stageMinutes.AWAKE, stageMinutes.DEEP, etc.
ghealth data sleep list --from 2026-03-01 --format csv -o sleep.csv

# Exercise — metricsSummary.caloriesKcal, metricsSummary.averageHeartRateBeatsPerMinute, etc.
ghealth data exercise list --from 2026-03-01 --format csv -o exercise.csv

# Heart rate — 500 readings straight to file
ghealth data heart-rate list --from today --limit 500 --format csv -o hr.csv

Exercise time series (GPS/heart-rate track) → CSV. export-tcx --as csv flattens the TCX track to one row per trackpoint — pd.read_csv it directly instead of parsing TCX XML:

bash
# Find the exercise id first, then export its track
ghealth data exercise list --from 2026-06-01 --limit 10
ghealth data exercise export-tcx --id <id> --output ride.csv --as csv   # or --output - for stdout

Columns (fixed, stable for dataframes): time, activity, lap, sport, latitude_deg, longitude_deg, altitude_m, distance_m, heart_rate_bpm, cadence_rpm, speed_mps, watts. Absent sensors are empty cells (NaN in pandas), never zeros. distance_m is cumulative. 0 rows = indoor/no-sensor activity (Google emits no track for those) — the session summary and workout notes come from data exercise list, not the track export.

Show full SKILL.md (256 more words)Show less

Writing data

Writable types: exercise, sleep, weight, body-fat, height. Writes are async (API returns Operation object).

Discover the correct payload format by inspecting a real response with --raw:

bash
ghealth data weight list --raw --limit 1
# Use the response structure as a template for your create payload

Write operations use create, update --id <id> [--update-mask fields], delete --ids <ids>.

Gotchas

  • Missing days are NOT zeros (altitude, distance, floors, steps, total-calories): a date absent from rollup output means the device wasn't worn / didn't sync — NOT zero. countSum: "0" is a true zero (worn, no activity). Never coalesce missing buckets to 0 or average over absent days as zeros — that silently deflates weekly/monthly stats
  • String vs number values follow protobuf JSON encoding: int64 fields (beatsPerMinute, countSum, minutesAsleep) are strings; int32/double fields (weightGrams, caloriesKcal, percentage) are numbers
  • --filter raw syntax: only >= and < comparators. Civil time fields (no Z): interval types use {type}.interval.civil_start_time, sleep uses sleep.interval.civil_end_time (only end-time is filterable), daily types use {type}.date. Physical time fields (with Z): sample types use {type}.sample_time.physical_time
  • Write operations are asynchronous — the API returns an Operation object, not the created/updated data. Use list to verify persistence
  • Body fat delete returns HTTP 500 — this is an API bug
  • Height update returns HTTP 400 ("updateMask not recognized") — API bug; use create + delete as a workaround
  • daily-rollup aggregates by civil/local day (1-day windows; override with --window-days N). rollup aggregates by physical time (--window-size, default 86400s); bare --from/--to dates anchor at midnight in the configured timezone (ghealth config set timezone <IANA zone>), falling back to machine-local time when unset. For local-day totals use daily-rollup. Both send their window size explicitly — the API rejects requests that omit it

© Google-Health-API, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/ghealth of Google-Health-API/google-health-cli.

Open the folder on GitHubat commit 9cf0274

Compare with similar skills

Ghealth next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ghealth compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ghealth this skillGoogle-Health-API/google-health-cli266—~2.3kAutomated safety check: PassApache-2.0
Coachfelixrieseberg/claude-coach1991 repos~4.9kAutomated safety check: PassMIT
Fitness Analyzerhuifer/WellAlly-health9605 repos~1.3kAutomated safety check: PassMIT
Master Ajahn Chahxr843/Master-skill4471 repos~2kAutomated safety check: PassCC-BY-NC-SA-4.0
Mental Health Analyzerhuifer/WellAlly-health9605 repos~3.2kAutomated safety check: PassMIT
Nutrition Analyzerhuifer/WellAlly-health9605 repos~3.3kAutomated safety check: PassMIT

Similar skills

  • Coach

    felixrieseberg/claude-coach

    Create personalized triathlon, marathon, and ultra-endurance training plans.

    199 GitHub starsUsed in 1 repo~4.9k tokens
    Productivity & AutomationAuto-check passed
  • Fitness Analyzer

    huifer/WellAlly-health

    分析运动数据、识别运动模式、评估健身进展,并提供个性化训练建议。支持与慢性病数据的关联分析. An agent skill from huifer/WellAlly-health.

    960 GitHub starsUsed in 5 repos~1.3k tokens
    Productivity & AutomationAuto-check passed
  • Master Ajahn Chah

    xr843/Master-skill

    A skill your agent uses when user asks about 南传佛教, 上座部, Theravada, 巴利经典, 正念 sati, 放下, 三法印, 四念处, 出入息念 anapanasati, 戒定慧, 毗婆舍那, 森林禅林派, 巴蓬寺, 阿姜查, 杜多行, 中道, or wants teaching in 阿姜查 Ajahn Chah's voice.

    447 GitHub starsUsed in 1 repo~2k tokens
    Productivity & AutomationAuto-check passed
  • Mental Health Analyzer

    huifer/WellAlly-health

    分析心理健康数据、识别心理模式、评估心理健康状况、提供个性化心理健康建议。支持与睡眠、运动、营养等其他健康数据的关联分析。

    960 GitHub starsUsed in 5 repos~3.2k tokens
    Productivity & AutomationAuto-check passed
  • Nutrition Analyzer

    huifer/WellAlly-health

    分析营养数据、识别营养模式、评估营养状况,并提供个性化营养建议。支持与运动、睡眠、慢性病数据的关联分析. An agent skill from huifer/WellAlly-health.

    960 GitHub starsUsed in 5 repos~3.3k tokens
    Productivity & AutomationAuto-check passed
  • Occupational Health Analyzer

    huifer/WellAlly-health

    分析职业健康数据、识别工作相关健康风险、评估职业健康状况、提供个性化职业健康建议。支持与睡眠、运动、心理健康等其他健康数据的关联分析。

    960 GitHub starsUsed in 5 repos~1.2k tokens
    Productivity & AutomationAuto-check passed

More from Google-Health-API/google-health-cli

  • Ghealth Shared

    Google-Health-API/google-health-cli

    Shared prerequisites for all ghealth skills — auth, setup, global flags, command structure

    266 GitHub stars~1.7k tokensUpdated 3 mo ago
    Auto-check passed

Questions about Ghealth

What does Ghealth do?

Query Google Health API v4 — steps, heart rate, exercise, sleep, weight, SpO2, HRV, ECG, blood glucose, nutrition, and 40 total data types. Ghealth is an agent skill from Google-Health-API/google-health-cli.

When should I use Ghealth?

Ghealth fits situations like: tasks that involve Health and fitness tracking.

How do I install Ghealth in Claude Code?

Run `npx skills add Google-Health-API/google-health-cli --skill ghealth -a claude-code`. Or copy the skill folder (skills/ghealth in Google-Health-API/google-health-cli) into .claude/skills/ghealth in your project. Claude Code loads it when a task matches its description.

How do I install Ghealth in Codex?

Run `npx skills add Google-Health-API/google-health-cli --skill ghealth -a codex`. Or copy the skill folder (skills/ghealth in Google-Health-API/google-health-cli) into .agents/skills/ghealth in your project. Codex loads it when a task matches its description.

Can I use Ghealth in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Google-Health-API/google-health-cli --skill ghealth -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ghealth, .gemini/skills/ghealth, .github/skills/ghealth and .opencode/skills/ghealth in your project.

What does Ghealth need to run?

SKILL.md names no scripts, command-line tools or credentials: Ghealth is instructions for the agent only.

Does Ghealth access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ghealth safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ghealth use?

Ghealth is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ghealth use?

About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ghealth?

Skills that share tags, products or a category with Ghealth: Coach (felixrieseberg/claude-coach, 199 stars), Fitness Analyzer (huifer/WellAlly-health, 960 stars), Master Ajahn Chah (xr843/Master-skill, 447 stars) and Mental Health Analyzer (huifer/WellAlly-health, 960 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ghealth?

Google-Health-API (a GitHub organization) maintains it in Google-Health-API/google-health-cli, which has 266 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on July 10, 2026.

Source: Google-Health-API/google-health-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.