Install
openclaw skills install clawhealth-data-skillRead a user's ClawHealth 30-day HealthKit sync, produce daily/weekly/long-term health reports, open temporary panels, explain health-check signals, and recommend supplement protocols.
openclaw skills install clawhealth-data-skillUse this skill when a user asks for a ClawHealth report, health-data analysis, health-check focus, supplement reasoning, or a visual ClawHealth panel.
Never make the user say endpoint names or function names during normal use. Natural prompts include:
After setup, keep using the stored customer_id and Agent API token. Do not ask the user to repeat their customer ID, access code, endpoint names, or raw tool sequence unless debugging.
ClawHealth uses two token types:
Authorization: Bearer <token>. The backend stores only a hash. If the user deletes it in the app, the token stops working.create_panel_link. It opens a temporary web panel and currently expires in about 20 minutes.Required runtime values:
customer_id: supplied by the ClawHealth iOS app or copied Agent setup prompt.api_token: long-lived Agent API token. Do not ask for the invite/access code in normal Agent chat.Use only this host:
https://clawhealth.site
Do not use raw Vercel deployment URLs.
Choose the report mode from the user's intent:
Use first for everyday check-ins.
GET /api/clawhealth/daily-report?customer_id={customer_id}
Authorization: Bearer {api_token}
Return:
Use for weekly review.
GET /api/clawhealth/weekly-report?customer_id={customer_id}
Authorization: Bearer {api_token}
Return:
Use for baseline and longer-horizon questions.
GET /api/clawhealth/long-term-report?customer_id={customer_id}
Authorization: Bearer {api_token}
Return:
Use when the user asks for deeper evidence, charts, or domain-by-domain interpretation.
GET /api/clawhealth/health-check?customer_id={customer_id}
Authorization: Bearer {api_token}
Use only evidence returned by ClawHealth. Distinguish attention, needs_data, and ok.
Use clinical_check_guidance from analyze_health_data. If should_consider_check is true, frame the result as checkup/doctor-discussion topics, not medical advice or diagnosis.
Health Check response pattern:
GET /api/clawhealth/supplement-protocol?customer_id={customer_id}
Authorization: Bearer {api_token}
Explain why each supplement candidate appears using returned evidence only. Never claim a supplement treats, cures, prevents, or diagnoses a condition. If confidence is low, say it is a cautious wellness candidate and should be reviewed if the user has conditions, medications, pregnancy, or upcoming procedures.
Use when the user asks to see a visual panel.
GET /api/clawhealth/panel-token?customer_id={customer_id}
Authorization: Bearer {api_token}
Return the exact temporary panel_url. Tell the user it expires in about 20 minutes.
Important:
customer_id and panel_token.&panel_token=..., replace & with & before returning/opening the link.https://clawhealth.site/supplement-demo?customer_id={customer_id}, that is not a temporary panel link. It is only a manual unlock page and may ask the user to unlock in the browser.Use when the user gives age, sex, height, weight, goal, or activity level. This enables calorie and macro targets.
POST /api/clawhealth/profile
Authorization: Bearer {api_token}
Content-Type: application/json
{
"customer_id": "{customer_id}",
"age": 29,
"sex": "male",
"height_cm": 178,
"weight_kg": 74,
"goal": "fat_loss",
"activity_level": "moderate"
}
Return the saved profile and explain that targets use Mifflin-St Jeor plus activity and goal adjustment. It is an estimate, not measured metabolism.
Use after the user provides a food photo, meal description, or Agent-estimated nutrition JSON.
Workflow:
POST /api/clawhealth/nutrition
Authorization: Bearer {api_token}
Content-Type: application/json
{
"customer_id": "{customer_id}",
"meal_name": "lunch bowl",
"calories_kcal": 650,
"protein_g": 38,
"carbohydrate_g": 72,
"fat_g": 21,
"fiber_g": 9,
"confidence": "medium",
"raw_agent_json": {}
}
The current MVP stores nutrition in ClawHealth. HealthKit writeback is not enabled yet because the iOS SDK needs a native write/save method and user write permission.
Use when the user asks about calories, macros, remaining limits, or recent meals.
GET /api/clawhealth/nutrition?customer_id={customer_id}
Authorization: Bearer {api_token}
Use when the user states mood, stress, energy, soreness, or subjective recovery.
POST /api/clawhealth/mood
Authorization: Bearer {api_token}
Content-Type: application/json
{
"customer_id": "{customer_id}",
"mood_score": 3,
"energy_score": 4,
"stress_score": 2,
"note": "slept late but feels okay"
}
Use when the user asks whether to train, whether recovery is good, or how mood relates to HRV.
GET /api/clawhealth/readiness?customer_id={customer_id}
Authorization: Bearer {api_token}
Explain the readiness score as a transparent MVP heuristic from recovery, sleep, training, mood, and stress. Do not present it as a validated medical or performance diagnosis.
Use when the user wants to report a bug, improve a recommendation, or leave demo feedback.
POST /api/clawhealth/feedback
Content-Type: application/json
{
"customer_id": "{customer_id}",
"feedback": "text",
"context": {}
}
ClawHealth API responses include scientific_references. Use those first. You may cite them in normal language, but do not invent citations.
Current reference library:
If the Agent runtime cannot reach https://clawhealth.site or TCP/HTTPS to the hosted API times out, do not keep retrying.
Tell the user:
The current Agent server cannot reach the ClawHealth API from its network, so I cannot create a temporary panel token right now. You can still open the manual unlock page directly:
https://clawhealth.site/supplement-demo?customer_id={customer_id}
Ask the user to open that URL and unlock in the browser. Do not call it a temporary panel link, and do not put the access code into a URL unless the user explicitly requests a prefilled private link.