# Send healthsync to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
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. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "healthsync",
    "name": "healthsync",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/BRO3886/healthsync",
    "canonicalUrl": "https://clawhub.ai/BRO3886/healthsync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/healthsync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=healthsync",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/schema.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "healthsync",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T15:43:11.154Z",
      "expiresAt": "2026-05-07T15:43:11.154Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=healthsync",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=healthsync",
        "contentDisposition": "attachment; filename=\"healthsync-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "healthsync"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/healthsync"
    },
    "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."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/healthsync",
    "downloadUrl": "https://openagent3.xyz/downloads/healthsync",
    "agentUrl": "https://openagent3.xyz/skills/healthsync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/healthsync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/healthsync/agent.md"
  }
}
```
## Documentation

### Installing healthsync

# macOS and Linux (recommended)
curl -fsSL https://healthsync.sidv.dev/install | bash

# Or via Go
go install github.com/BRO3886/healthsync@latest

After installing the binary, parse your Apple Health export:

# Export from Health app → profile picture → Export All Health Data
healthsync parse ~/Downloads/export.zip

Install this skill into your agent:

# Claude Code or Codex
healthsync skills install

# OpenClaw
healthsync skills install --agent openclaw

Query Apple Health export data stored in a local SQLite database. This skill is read-only — never INSERT, UPDATE, DELETE, or DROP anything.

### Important Constraints

READ ONLY — You must NEVER write to the database. No INSERT, UPDATE, DELETE, DROP, ALTER, or any write operations.
Two query methods: CLI (healthsync query) or direct SQLite (sqlite3 ~/.healthsync/healthsync.db)
Prefer CLI for simple queries. Use direct SQLite for complex aggregations, joins, or custom SQL.

### Database Location

Default: ~/.healthsync/healthsync.db

### Quick Start

# Recent heart rate readings
healthsync query heart-rate --limit 10

# Steps in a date range
healthsync query steps --from 2024-01-01 --to 2024-06-30 --limit 100

# Deduplicated daily step totals
healthsync query steps --total --from 2024-01-01

# Deduplicated daily active energy totals
healthsync query active-energy --total --from 2024-01-01

# Workouts as JSON
healthsync query workouts --format json --limit 20

# Sleep data as CSV
healthsync query sleep --format csv --limit 50

# Resting heart rate trend
healthsync query resting-heart-rate --limit 30

# HRV readings
healthsync query hrv --limit 30

# Blood pressure
healthsync query blood-pressure --limit 20

# Body weight trend
healthsync query body-mass --limit 30

# Direct SQLite for aggregations
sqlite3 ~/.healthsync/healthsync.db "SELECT date(start_date) as day, SUM(value) as total_steps FROM steps GROUP BY day ORDER BY day DESC LIMIT 7"

# Average resting heart rate per week
sqlite3 ~/.healthsync/healthsync.db "SELECT strftime('%Y-W%W', start_date) as week, ROUND(AVG(value),1) as avg_rhr FROM resting_heart_rate GROUP BY week ORDER BY week DESC LIMIT 12"

### healthsync query <table>

FlagDescriptionDefault--fromFilter records from this date (inclusive)—--toFilter records to this date (inclusive)—--limitMaximum records to return50--formatOutput format: table, json, csvtable--totalDeduplicated daily totals (steps, active-energy, basal-energy only)false--dbOverride database path~/.healthsync/healthsync.db

### Available Tables

Cardiac

CLI NameDB TableNotesheart-rateheart_rateBPM; high-frequencyresting-heart-rateresting_heart_rateDaily RHRhrvhrvHRV SDNN (ms); nightlyheart-rate-recoveryheart_rate_recoveryPost-exercise HR recoveryrespiratory-raterespiratory_rateBreaths/minblood-pressureblood_pressurePaired systolic + diastolic (mmHg)

Activity / Energy

CLI NameDB TableNotesstepsstepsSupports --totalactive-energyactive_energykcal; supports --totalbasal-energybasal_energykcal; supports --totalexercise-timeexercise_timeMinutesstand-timestand_timeMinutesflights-climbedflights_climbedCountdistance-walking-runningdistance_walking_runningkm/midistance-cyclingdistance_cyclingkm/mi

Body

CLI NameDB TableNotesbody-massbody_masskg/lbbmibody_mass_indexheightheightm/ft

Mobility / Walking

CLI NameDB TableNoteswalking-speedwalking_speedm/swalking-step-lengthwalking_step_lengthmwalking-asymmetrywalking_asymmetry%walking-double-supportwalking_double_support%walking-steadinesswalking_steadinessScorestair-ascent-speedstair_ascent_speedft/sstair-descent-speedstair_descent_speedft/ssix-minute-walksix_minute_walkm

Running

CLI NameDB TableNotesrunning-speedrunning_speedm/srunning-powerrunning_powerWrunning-stride-lengthrunning_stride_lengthmrunning-ground-contact-timerunning_ground_contact_timemsrunning-vertical-oscillationrunning_vertical_oscillationcm

Other

CLI NameDB TableNotesspo2spo20-1 fraction (0.98 = 98%)vo2maxvo2_maxmL/min·kgsleepsleepSleep stages (category, no unit)workoutsworkoutsduration, distance, energywrist-temperaturewrist_temperature°C deviationtime-in-daylighttime_in_daylightMinutesdietary-waterdietary_watermL/Lphysical-effortphysical_effortMET scorewalking-heart-ratewalking_heart_rateBPM while walkingmindful-sessionsmindful_sessionsCategory; no unit columnstand-hoursstand_hoursCategory; no unit column

### healthsync parse <file>

Parse an Apple Health export into the database. (Informational — do not run unless the user asks.)

FlagDescriptionDefault-vVerbose logging with progress ratefalse--dbOverride database path~/.healthsync/healthsync.db

### healthsync server

Start HTTP server for receiving uploads. (Informational — do not start unless the user asks.)

Endpoints:

POST /api/upload — Upload .zip or .xml (multipart form, field: file). Returns 202, parses async.
GET /api/upload/status — Poll parse progress.
GET /api/health/{table}?from=&to=&limit= — Query data as JSON.

### Standard quantity tables

Schema: id, source_name, start_date, end_date, value REAL, unit TEXT, created_at

Applies to all tables except blood_pressure, sleep, mindful_sessions, stand_hours, and workouts.

CREATE TABLE resting_heart_rate (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    source_name TEXT NOT NULL,
    start_date  TEXT NOT NULL,
    end_date    TEXT NOT NULL,
    value       REAL NOT NULL,
    unit        TEXT NOT NULL,
    created_at  TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(source_name, start_date, end_date, value)
);

### blood_pressure (special — paired systolic + diastolic)

CREATE TABLE blood_pressure (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    source_name TEXT NOT NULL,
    start_date  TEXT NOT NULL,
    end_date    TEXT NOT NULL,
    systolic    REAL NOT NULL,   -- mmHg
    diastolic   REAL NOT NULL,   -- mmHg
    unit        TEXT NOT NULL,   -- "mmHg"
    created_at  TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(source_name, start_date, end_date, systolic, diastolic)
);

### Category tables — no unit column

Applies to: sleep, mindful_sessions, stand_hours

CREATE TABLE sleep (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    source_name TEXT NOT NULL,
    start_date  TEXT NOT NULL,
    end_date    TEXT NOT NULL,
    value       TEXT NOT NULL,   -- e.g. HKCategoryValueSleepAnalysisAsleepCore
    created_at  TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(source_name, start_date, end_date, value)
);

### workouts

CREATE TABLE workouts (
    id                       INTEGER PRIMARY KEY AUTOINCREMENT,
    activity_type            TEXT NOT NULL,
    source_name              TEXT NOT NULL,
    start_date               TEXT NOT NULL,
    end_date                 TEXT NOT NULL,
    duration                 REAL,
    duration_unit            TEXT,
    total_distance           REAL,
    total_distance_unit      TEXT,
    total_energy_burned      REAL,
    total_energy_burned_unit TEXT,
    created_at               TEXT DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(activity_type, start_date, end_date, source_name)
);

### Date Format

All dates stored as text: 2024-01-15 08:30:00 +0530. Filter with date prefix — 2024-01-01 works via SQLite string comparison.

### Sleep Stage Values

ValueMeaningHKCategoryValueSleepAnalysisInBedIn bedHKCategoryValueSleepAnalysisAsleepCoreCore sleepHKCategoryValueSleepAnalysisAsleepDeepDeep sleepHKCategoryValueSleepAnalysisAsleepREMREM sleepHKCategoryValueSleepAnalysisAwakeAwakeHKCategoryValueSleepAnalysisAsleepUnspecifiedUnspecified

### Daily step totals (deduped)

healthsync query steps --total --from 2024-01-01

### Daily active energy totals (deduped)

healthsync query active-energy --total --from 2024-01-01

### Average resting heart rate per week

SELECT strftime('%Y-W%W', start_date) as week,
  ROUND(AVG(value), 1) as avg_rhr
FROM resting_heart_rate
GROUP BY week ORDER BY week DESC LIMIT 12;

### HRV trend

SELECT date(start_date) as day, ROUND(AVG(value), 1) as hrv_ms
FROM hrv
GROUP BY day ORDER BY day DESC LIMIT 30;

### Blood pressure history

SELECT date(start_date) as day,
  ROUND(AVG(systolic), 1) as avg_sys,
  ROUND(AVG(diastolic), 1) as avg_dia
FROM blood_pressure
GROUP BY day ORDER BY day DESC LIMIT 30;

### Body weight trend

SELECT date(start_date) as day, value as kg
FROM body_mass
ORDER BY day DESC LIMIT 30;

### Sleep duration per night

SELECT date(start_date) as night,
  ROUND(SUM((julianday(end_date) - julianday(start_date)) * 24), 1) as hours
FROM sleep
WHERE value LIKE '%Asleep%'
GROUP BY night ORDER BY night DESC LIMIT 14;

### Average heart rate per day

SELECT date(start_date) as day,
  ROUND(AVG(value), 1) as avg_hr,
  MIN(value) as min_hr,
  MAX(value) as max_hr
FROM heart_rate
GROUP BY day ORDER BY day DESC LIMIT 30;

### Workout summary

SELECT activity_type, COUNT(*) as count,
  ROUND(AVG(duration), 1) as avg_min,
  ROUND(SUM(total_energy_burned)) as total_kcal
FROM workouts
GROUP BY activity_type ORDER BY count DESC;

### Weekly VO2 Max trend

SELECT strftime('%Y-W%W', start_date) as week,
  ROUND(AVG(value), 2) as avg_vo2
FROM vo2_max
GROUP BY week ORDER BY week DESC LIMIT 12;

### Mindfulness minutes per week

SELECT strftime('%Y-W%W', start_date) as week,
  ROUND(SUM((julianday(end_date) - julianday(start_date)) * 1440), 0) as minutes
FROM mindful_sessions
GROUP BY week ORDER BY week DESC LIMIT 12;

### Limitations

Read-only — This skill must never write to the database
No real-time data — Data is only as fresh as the last healthsync parse run
Date filtering is string-based — Timezone offsets are part of the stored date string
SpO2 values are fractions — 0.98 means 98%, not 98
Blood pressure is paired — systolic and diastolic are stored together in one row per measurement
Category tables have no unit column — sleep, mindful_sessions, stand_hours store text values, not numeric
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: BRO3886
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T15:43:11.154Z
- Expires at: 2026-05-07T15:43:11.154Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/healthsync)
- [Send to Agent page](https://openagent3.xyz/skills/healthsync/agent)
- [JSON manifest](https://openagent3.xyz/skills/healthsync/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/healthsync/agent.md)
- [Download page](https://openagent3.xyz/downloads/healthsync)