← 返回 Skills 市场
bro3886

healthsync

作者 Siddhartha Varma · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
448
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install healthsync
功能描述
Queries Apple Health data stored in a local SQLite database. Use this skill to read heart rate, steps, SpO2, VO2 Max, sleep, workouts, resting heart rate, HR...
使用说明 (SKILL.md)

healthsync — Apple Health Data Query Skill

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"

CLI Reference

healthsync query \x3Ctable>

Flag Description Default
--from Filter records from this date (inclusive)
--to Filter records to this date (inclusive)
--limit Maximum records to return 50
--format Output format: table, json, csv table
--total Deduplicated daily totals (steps, active-energy, basal-energy only) false
--db Override database path ~/.healthsync/healthsync.db

Available Tables

Cardiac

CLI Name DB Table Notes
heart-rate heart_rate BPM; high-frequency
resting-heart-rate resting_heart_rate Daily RHR
hrv hrv HRV SDNN (ms); nightly
heart-rate-recovery heart_rate_recovery Post-exercise HR recovery
respiratory-rate respiratory_rate Breaths/min
blood-pressure blood_pressure Paired systolic + diastolic (mmHg)

Activity / Energy

CLI Name DB Table Notes
steps steps Supports --total
active-energy active_energy kcal; supports --total
basal-energy basal_energy kcal; supports --total
exercise-time exercise_time Minutes
stand-time stand_time Minutes
flights-climbed flights_climbed Count
distance-walking-running distance_walking_running km/mi
distance-cycling distance_cycling km/mi

Body

CLI Name DB Table Notes
body-mass body_mass kg/lb
bmi body_mass_index
height height m/ft

Mobility / Walking

CLI Name DB Table Notes
walking-speed walking_speed m/s
walking-step-length walking_step_length m
walking-asymmetry walking_asymmetry %
walking-double-support walking_double_support %
walking-steadiness walking_steadiness Score
stair-ascent-speed stair_ascent_speed ft/s
stair-descent-speed stair_descent_speed ft/s
six-minute-walk six_minute_walk m

Running

CLI Name DB Table Notes
running-speed running_speed m/s
running-power running_power W
running-stride-length running_stride_length m
running-ground-contact-time running_ground_contact_time ms
running-vertical-oscillation running_vertical_oscillation cm

Other

CLI Name DB Table Notes
spo2 spo2 0-1 fraction (0.98 = 98%)
vo2max vo2_max mL/min·kg
sleep sleep Sleep stages (category, no unit)
workouts workouts duration, distance, energy
wrist-temperature wrist_temperature °C deviation
time-in-daylight time_in_daylight Minutes
dietary-water dietary_water mL/L
physical-effort physical_effort MET score
walking-heart-rate walking_heart_rate BPM while walking
mindful-sessions mindful_sessions Category; no unit column
stand-hours stand_hours Category; no unit column

healthsync parse \x3Cfile>

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

Flag Description Default
-v Verbose logging with progress rate false
--db Override 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.

Database Schema

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

Value Meaning
HKCategoryValueSleepAnalysisInBed In bed
HKCategoryValueSleepAnalysisAsleepCore Core sleep
HKCategoryValueSleepAnalysisAsleepDeep Deep sleep
HKCategoryValueSleepAnalysisAsleepREM REM sleep
HKCategoryValueSleepAnalysisAwake Awake
HKCategoryValueSleepAnalysisAsleepUnspecified Unspecified

Common Query Patterns

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 columnsleep, mindful_sessions, stand_hours store text values, not numeric
安全使用建议
This skill appears to do what it says (read Apple Health data from a local SQLite DB), but before running anything take these precautions: - Do not run the curl | bash installer blindly. Inspect the install script at https://healthsync.sidv.dev/install or prefer building from source (go install) or getting a release from the project's verified GitHub releases. - Expect the skill (or the CLI it recommends) to read ~/Downloads/export.zip and ~/.healthsync/healthsync.db. If those files contain sensitive data you do not want exposed to third-party binaries, avoid installing the CLI or run it in a restricted environment. - Be cautious with `healthsync skills install` as it may modify agent state; review what that command does before running. If you can provide the actual installer script or a known-good binary/release URL (or if the project is published on a verified release host), I can raise confidence to high and re-evaluate the install risk.
功能分析
Type: OpenClaw Skill Name: healthsync Version: 1.0.0 The skill is classified as suspicious due to the inclusion of the `healthsync server` command in `SKILL.md`. This command starts an HTTP server with endpoints for file uploads (`POST /api/upload`) and data querying, introducing a significant network attack surface and file processing capability. While the documentation explicitly instructs the agent not to start this server unless the user asks, the mere presence of such a high-risk capability makes the skill suspicious. An AI agent could potentially be prompted to bypass this instruction, leading to unauthorized exposure of the server and potential exploitation through file uploads or API access. Additionally, the `curl -fsSL ... | bash` installation method, while common, represents a supply chain risk.
能力评估
Purpose & Capability
Name and description claim read-only queries of an Apple Health SQLite DB; SKILL.md only describes querying that DB (via healthsync CLI or sqlite3). The required capabilities (reading ~/.healthsync/healthsync.db or an exported ZIP) are consistent with the purpose.
Instruction Scope
Instructions remain scoped to reading/parsing Apple Health exports and querying the local DB. They require reading ~/Downloads/export.zip (to parse) and ~/.healthsync/healthsync.db (to query). The skill emphasizes read-only operations, and instructions do not ask for unrelated system files or secrets. However the SKILL.md instructs running install commands that will fetch and execute code from the network and also suggests installing the skill into the agent (e.g., `healthsync skills install`), which may change agent state.
Install Mechanism
There is no formal install spec, but SKILL.md recommends curl -fsSL https://healthsync.sidv.dev/install | bash (download-&-pipe) and an alternate go install github.com/BRO3886/healthsync@latest. The curl|bash source is a personal domain (not a well-known release host); running it executes arbitrary remote code. This is disproportionate risk for a simple query CLI unless you verify the install script and binary.
Credentials
The skill declares no required env vars or config paths, yet the runtime instructions assume a specific local DB path (~/.healthsync/healthsync.db) and an exported ZIP in ~/Downloads. No secrets are requested (good), but the implicit need to read those file paths should have been declared. No unrelated credentials are asked for.
Persistence & Privilege
The skill is instruction-only and does not request always:true or other elevated platform privileges. It suggests installing a binary and optionally installing the skill into the agent, which may modify agent state, but that behavior is explained in SKILL.md rather than being hidden.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install healthsync
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /healthsync 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
healthsync 1.0.0 — Initial Release - Query Apple Health data from a local SQLite database using the healthsync CLI or direct SQLite. - Supports read-only access to heart rate, steps, SpO2, VO2 Max, sleep, workouts, energy, body metrics, mobility, running metrics, mindful sessions, wrist temperature, and more. - CLI offers easy commands for filtering, date ranges, and multiple formats (table, JSON, CSV). - Database schema and all available tables and data types documented in detail. - Strictly enforces read-only access; no write, update, or delete operations allowed. - Installation and quick start instructions included for users on macOS and Linux.
元数据
Slug healthsync
版本 1.0.0
许可证
累计安装 1
当前安装数 1
历史版本数 1
常见问题

healthsync 是什么?

Queries Apple Health data stored in a local SQLite database. Use this skill to read heart rate, steps, SpO2, VO2 Max, sleep, workouts, resting heart rate, HR... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 448 次。

如何安装 healthsync?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install healthsync」即可一键安装,无需额外配置。

healthsync 是免费的吗?

是的,healthsync 完全免费(开源免费),可自由下载、安装和使用。

healthsync 支持哪些平台?

healthsync 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 healthsync?

由 Siddhartha Varma(@bro3886)开发并维护,当前版本 v1.0.0。

💬 留言讨论