From sundial-org-awesome-openclaw-skills-4
Fetches health data from Withings API: weight, body composition (fat/muscle/bone/water), activity (steps/calories), sleep. Use for user queries on Withings devices or personal metrics.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
This skill allows you to interact with the user's Withings account to retrieve comprehensive health metrics from Withings devices (smart scales, sleep analyzers, activity trackers, etc.).
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
This skill allows you to interact with the user's Withings account to retrieve comprehensive health metrics from Withings devices (smart scales, sleep analyzers, activity trackers, etc.).
Use this skill when the user:
Before using this skill, you need to create a free Withings developer application to get your API credentials.
http://localhost:8080 (required for OAuth)Once your application is created:
WITHINGS_CLIENT_ID environment variableWITHINGS_CLIENT_SECRET environment variableAdd these to your Clawdbot environment:
export WITHINGS_CLIENT_ID="your_client_id_here"
export WITHINGS_CLIENT_SECRET="your_client_secret_here"
Or create a .env file in the skill directory (this file will be ignored by git):
WITHINGS_CLIENT_ID=your_client_id_here
WITHINGS_CLIENT_SECRET=your_client_secret_here
The skill uses a wrapper.js script located in {baseDir}.
Before any data retrieval, check if the user is authenticated. If an error mentions "No token found", guide the user through the initial authentication process.
First-time setup - generates the OAuth URL:
node {baseDir}/wrapper.js auth
After the user visits the URL and gets the authorization code:
node {baseDir}/wrapper.js auth YOUR_CODE_HERE
Retrieve the latest weight measurements:
node {baseDir}/wrapper.js weight
Returns the 5 most recent weight entries in JSON format.
Example output:
[
{ "date": "2026-01-17T08:30:00.000Z", "weight": "75.40 kg" },
{ "date": "2026-01-16T08:15:00.000Z", "weight": "75.65 kg" }
]
Retrieve comprehensive body metrics (fat, muscle, bone, water, BMI):
node {baseDir}/wrapper.js body
Returns the 5 most recent body composition measurements.
Example output:
[
{
"date": "2026-01-17T08:30:00.000Z",
"weight": "75.40 kg",
"fat_percent": "18.5%",
"fat_mass": "13.95 kg",
"muscle_mass": "35.20 kg",
"bone_mass": "3.10 kg",
"hydration": "55.2%"
}
]
Retrieve daily activity data (steps, distance, calories):
node {baseDir}/wrapper.js activity
Optionally specify the number of days (default: 7):
node {baseDir}/wrapper.js activity 30
Example output:
[
{
"date": "2026-01-17",
"steps": 8542,
"distance": "6.23 km",
"calories": 2150,
"active_calories": 450,
"soft_activity": "45 min",
"moderate_activity": "22 min",
"intense_activity": "8 min"
}
]
Retrieve sleep data and quality:
node {baseDir}/wrapper.js sleep
Optionally specify the number of days (default: 7):
node {baseDir}/wrapper.js sleep 14
Example output:
[
{
"date": "2026-01-17",
"start": "23:15",
"end": "07:30",
"duration": "8h 15min",
"deep_sleep": "1h 45min",
"light_sleep": "4h 30min",
"rem_sleep": "1h 30min",
"awake": "30min",
"sleep_score": 82
}
]
Common errors and how to resolve them:
| Error | Cause | Solution |
|---|---|---|
| "No token found" | First time use, not authenticated | Run node wrapper.js auth and follow the OAuth flow |
| "Failed to refresh token" | Token expired and refresh failed | Re-authenticate with node wrapper.js auth |
| "API Error Status: 401" | Invalid or expired credentials | Check your CLIENT_ID and CLIENT_SECRET, re-authenticate |
| "API Error Status: 503" | Withings API temporarily unavailable | Wait and retry later |
| Empty data | No measurements in the requested period | User needs to sync their Withings device |
user.metrics, user.activity