Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Apple Watch health data sync via Health Auto Export app. Use when querying sleep, heart rate, steps, workouts, or any health metrics. Also use when setting u...
Apple Watch health data sync via Health Auto Export app. Use when querying sleep, heart rate, steps, workouts, or any health metrics. Also use when setting u...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
This skill has TWO parts: PC setup (automated) and Phone setup (requires user action). Do NOT just run setup.py and say "done". You MUST walk the user through the full flow.
Ask the user to confirm ALL of these before proceeding: Do you have an Apple Watch? Do you have an iPhone paired with it? Have you installed Health Auto Export app? Are your iPhone and PC on the same Wi-Fi? If any is missing, help them resolve it first. Do NOT run setup.py until all are confirmed.
Run python scripts/setup.py - generates server, dashboard, API key, and phone templates. setup.py does NOT start the server. You must start it yourself in step 2.
The server MUST run independently of any agent session. Do NOT start it in an exec session that will get killed by heartbeat or session recycling. Windows - register as a startup task: $action = New-ScheduledTaskAction -Execute "pythonw.exe" -Argument "server.py" -WorkingDirectory "<health-sync-dir>" $trigger = New-ScheduledTaskTrigger -AtLogon Register-ScheduledTask -TaskName "HealthSyncServer" -Action $action -Trigger $trigger -RunLevel Highest -Force Start-ScheduledTask -TaskName "HealthSyncServer" macOS - use launchd plist: cat > ~/Library/LaunchAgents/com.health-sync.server.plist << 'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key><string>com.health-sync.server</string> <key>ProgramArguments</key><array> <string>python3</string><string>server.py</string> </array> <key>WorkingDirectory</key><string>HEALTH_SYNC_DIR</string> <key>RunAtLoad</key><true/> <key>KeepAlive</key><true/> <key>StandardOutPath</key><string>HEALTH_SYNC_DIR/server.log</string> <key>StandardErrorPath</key><string>HEALTH_SYNC_DIR/server.log</string> </dict> </plist> EOF # replace HEALTH_SYNC_DIR with actual path, then: launchctl load ~/Library/LaunchAgents/com.health-sync.server.plist Quick start (if you just need it running now, not persistent): # Windows start /B pythonw.exe server.py # macOS / Linux nohup python3 server.py > server.log 2>&1 & Before starting, kill anything already on port 3001: # Windows (Get-NetTCPConnection -LocalPort 3001 -State Listen -ErrorAction SilentlyContinue).OwningProcess | ForEach-Object { Stop-Process -Id $_ -Force } # macOS / Linux lsof -ti:3001 | xargs kill -9 2>/dev/null Verify it's running: curl.exe -s -H "api-key: <key>" http://localhost:3001/api/summary Note: on Windows use curl.exe (not curl which is a PowerShell alias for Invoke-WebRequest).
After server is running, walk the user through phone configuration. Read the API key from .env.json first - you will need to tell the user. SEND THE FILE TO USER. Send the template JSON from templates/ to the user's iPhone. If your IM channel supports file attachments, send the file directly. Otherwise, paste the key settings as text. Tell the user to open the file on iPhone to import into Health Auto Export. SEND tutorial_imgs/step1.png with your message TO USER This auto-fills URL, metrics, format, and sync settings. CRITICAL: Tell the user to manually add the API key header after import. SEND tutorial_imgs/step2.png.with your message TO USER Open the imported automation -> scroll to Headers -> tap "Add Header" Key (left field): api-key Value (right field): the API key from .env.json Template import does NOT set headers. The user MUST do this step manually.(format: Key:xxx, Value:sk-xxx) Tell the user to tap "Manual Export" to test. SEND tutorial_imgs/step3.pngwith your message TO USER Verify data arrives: check /api/summary or /dashboard. Only after data is confirmed arriving, tell the user setup is complete. Fallback: if the user is confused by the template import flow, fall back to fully manual setup (Automations -> + -> REST API -> enter URL and header by hand). Only use this fallback when necessary.
If server.py and .env.json already exist: Check if server is running on port 3001. If running, check if data is flowing (/api/summary). If yes, skip setup. If no, troubleshoot (server running? correct API key? phone on same WiFi?).
When the user asks about their health (sleep, heart rate, steps, etc.): Read the API key from .env.json. Query the API using curl.exe (NOT curl on Windows): curl.exe -s -H "api-key: <KEY>" "http://localhost:3001/api/latest/metrics/sleep_analysis?n=3" curl.exe -s -H "api-key: <KEY>" "http://localhost:3001/api/latest/metrics/heart_rate?n=5" curl.exe -s -H "api-key: <KEY>" http://localhost:3001/api/summary Summarize the data in a readable format for the user.
When the user wants to see their health stats visually, or you want to proactively show a summary: Open http://localhost:3001/dashboard in a browser or take a screenshot. The dashboard shows cards for each metric with latest values and record counts. Screenshot the dashboard and send it to the user as a visual health summary.
Sync Apple Watch health data to your PC in real time.
Hardware: Apple Watch (any model with watchOS 9+) iPhone (paired with the Apple Watch) A PC/Mac on the same Wi-Fi as your iPhone Software (phone side): Health Auto Export app ($24.99 lifetime, one-time purchase) This is the bridge: it reads Apple HealthKit data and pushes it over HTTP to your server Free tier only does manual export; Premium enables automatic background sync Software (PC side): Python 3.8+ (that's it, setup handles the rest)
Apple Watch -> iPhone HealthKit -> Health Auto Export app -> HTTP POST -> Python server -> JSONL files Your iPhone periodically sends health data as JSON to a lightweight Python server running on your PC. The server stores everything as append-only JSONL files, queryable via REST API.
python scripts/setup.py No git account needed. No Docker needed. Flask is auto-installed if missing. Setup will: Auto-install flask (if not already installed) Generate a random API key -> .env.json (gitignored) Download upstream repo (reference + optional Grafana dashboards) Generate lightweight Python server Generate web dashboard Let you pick data types, generate phone automation templates Print step-by-step phone configuration
Send the template JSON from templates/ to your iPhone (AirDrop, email, etc.) Open the file on iPhone -> import into Health Auto Export This sets URL, metrics, format, sync interval etc. automatically Manually add the API key header (template import does NOT set headers): Open the imported automation -> scroll to Headers -> tap "Add Header" Key (left field): api-key Value (right field): your API key from .env.json (setup.py prints this) Tap Manual Export to test Check http://localhost:3001/dashboard for data
The server must stay running to receive data from your phone. Windows - scheduled task (survives reboot): $action = New-ScheduledTaskAction -Execute "pythonw.exe" -Argument "server.py" -WorkingDirectory "<health-sync-dir>" $trigger = New-ScheduledTaskTrigger -AtLogon Register-ScheduledTask -TaskName "HealthSyncServer" -Action $action -Trigger $trigger -RunLevel Highest -Force macOS - launchd (survives reboot): # create plist at ~/Library/LaunchAgents/com.health-sync.server.plist # see Agent Instructions section for full plist template launchctl load ~/Library/LaunchAgents/com.health-sync.server.plist Quick (non-persistent): # Windows start /B pythonw.exe server.py # macOS / Linux nohup python3 server.py > server.log 2>&1 &
health-sync/ SKILL.md <- this file scripts/setup.py <- one click setup server.py <- receiver server (generated) dashboard.html <- web dashboard (generated) .env.json <- API key (auto-generated, gitignored) .gitignore <- ignores .env.json, data/, upstream/ data/ <- received health data metrics/ <- heart_rate.jsonl, sleep_analysis.jsonl, ... workouts/ <- workouts.jsonl templates/ <- phone automation config JSONs (importable) upstream/ <- original repo (Grafana dashboards, Docker setup)
python server.py Receives JSON POST on port 3001 Dashboard at http://localhost:3001/dashboard API key: auto-generated on first setup, stored in .env.json
API key is in .env.json (generated by setup.py). Use curl.exe on Windows: # get your api key python -c "import json; print(json.load(open('.env.json'))['api_key'])" # summary of all data curl.exe -s -H "api-key: YOUR_KEY" http://localhost:3001/api/summary # latest N records curl.exe -s -H "api-key: YOUR_KEY" "http://localhost:3001/api/latest/metrics/sleep_analysis?n=5" curl.exe -s -H "api-key: YOUR_KEY" "http://localhost:3001/api/latest/metrics/heart_rate?n=10" curl.exe -s -H "api-key: YOUR_KEY" "http://localhost:3001/api/latest/metrics/step_count?n=10"
sleep_analysis (sleep start/end, deep/rem/core/awake) heart_rate (min/avg/max bpm) resting_heart_rate step_count active_energy / basal_energy_burned heart_rate_variability blood_oxygen_saturation time_in_daylight headphone_audio_exposure
Dashboard: http://localhost:3001/dashboard (auto-refresh every 30s, dark theme, card layout) Can screenshot the dashboard to send to user as visual health summary Grafana (optional, heavy): see upstream/README.md (requires Docker + MongoDB)
iPhone must be unlocked for background auto-sync (iOS restriction) Phone and PC must be on the same Wi-Fi / LAN Server must be running on PC to receive data Health Auto Export Premium required for automatic sync ($24.99 lifetime), but they have a trail version
Data access, storage, extraction, analysis, reporting, and insight generation.
Largest current source with strong distribution and engagement signals.