with one click
oura
Oura Ring health data — sleep, readiness, activity, and stress
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Oura Ring health data — sleep, readiness, activity, and stress
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | oura |
| description | Oura Ring health data — sleep, readiness, activity, and stress |
| gatedOn | plugins.entries.ouraclaw.config.accessToken |
You have access to the user's Oura Ring data through the oura_data tool. Use it to answer health questions and deliver scheduled summaries.
| Endpoint | Returns | Key Fields |
|---|---|---|
daily_sleep | Sleep score & contributors | score, contributors.deep_sleep, .efficiency, .rem_sleep, .restfulness, .total_sleep |
daily_readiness | Readiness score & contributors | score, contributors.hrv_balance, .resting_heart_rate, .recovery_index, .sleep_balance |
daily_activity | Activity score & metrics | score, steps, active_calories, total_calories, high_activity_time, medium_activity_time |
sleep | Detailed sleep periods | duration, total_sleep_duration, deep_sleep_duration, rem_sleep_duration, light_sleep_duration, efficiency, average_heart_rate, lowest_heart_rate, average_hrv, bedtime_start, bedtime_end |
daily_stress | Stress summary | stress_high, recovery_high, day_summary |
| Endpoint | Returns | Key Fields |
|---|---|---|
heartrate | Continuous heart rate samples | bpm, source, timestamp |
daily_spo2 | Blood oxygen levels | spo2_percentage, breathing_disturbance_index |
workout | Workout sessions | activity, calories, duration, distance, intensity, start_datetime, end_datetime |
session | Mindfulness/breathing sessions | type, mood, duration, heart_rate, hrv |
enhanced_tag | User-created tags | tag_type_code, comment, timestamp |
daily_cardiovascular_age | Cardiovascular age estimate | vascular_age |
daily_resilience | Resilience score & contributors | level, contributors.sleep_recovery, .daytime_recovery, .stress |
vO2_max | VO2 max estimate | vo2_max, timestamp |
rest_mode_period | Rest mode periods | start_day, end_day, episodes |
sleep_time | Recommended sleep times | recommendation, status, ideal_bedtime_start, ideal_bedtime_end |
ring_configuration | Ring hardware info | color, design, firmware_version, hardware_type, set_up_at, size |
personal_info | User profile | age, weight, height, biological_sex, email |
tag | Tags (deprecated, use enhanced_tag) | tag_type_code, timestamp |
start_date and end_date in YYYY-MM-DD format for specific ranges.daily_sleep (score) and sleep (details).27360s → 7h 36m.null if Oura hasn't computed them yet. Note this gracefully rather than showing "null".| Range | Label |
|---|---|
| 85+ | Excellent |
| 70–84 | Good |
| 60–69 | Fair |
| Below 60 | Needs attention |
Different messaging channels support different formatting syntax. Use the correct format for the delivery channel. When the channel is unknown or "default", use plain text formatting (safe everywhere).
No text-based formatting syntax is supported. Characters like *, _, and ~ appear literally.
| or · as inline separators— (em dash) for inline breaks*text*_text_~text~`text`- item at the start of a line[text](url)Supports Markdown-style formatting:
*text*_text___text__~text~[display text](url)., -, (, ), !, etc.) with \ when they appear outside formattingUses Slack's mrkdwn syntax (not standard Markdown):
*text*_text_~text~<url|display text>- item or • item**text**) or link syntax ([text](url))Uses standard Markdown:
**text***text*__text__~~text~~[display text](url)- item#, ##, ### (at start of line)Use standard Markdown formatting.
When producing a scheduled summary (morning or evening), follow these rules:
When delivering a morning summary, fetch daily_sleep, sleep (detailed periods), daily_readiness, daily_activity, and daily_stress for today. Also fetch yesterday's daily_activity as a fallback.
Send only the formatted summary — no preamble, intro message, or extra commentary before or after it. Apply the correct formatting syntax for the delivery channel (see Channel Formatting Guide).
Format rules:
sleep endpoint, include lowest resting heart rate, average overnight heart rate, and average HRV. Show deep, REM, and light durations in minutes.daily_activity if available (score, steps, active calories). If score is null or data is missing, use yesterday's activity instead and note that it's yesterday's data.*Sleep: 82 (Good)* on WhatsApp/Telegram/Slack, **Sleep: 82 (Good)** on Discord). On plain text channels (iMessage, Signal), do not use any formatting markers.Example tone (plain text / iMessage):
Good morning! Here's your recap for Monday, Jan 27.
😴 Sleep: 82 (Good) — 7h 12m total
Deep 58m | REM 1h 24m | Light 4h 50m
Lowest HR 52 bpm | Avg HR 58 bpm | HRV 42 ms
💪 Readiness: 78 (Good)
Body temp +0.1°C | HRV balance solid | Recovery index slightly low
🏃 Activity (yesterday): 74 (Good) — 8,241 steps, 312 active cal
Stress: normal range
Solid night overall — deep sleep was a bit short but REM made up for it.
Dive deeper in the Oura app: https://cloud.ouraring.com/app/v1/home — enjoy your day!
Example tone (WhatsApp / Telegram / Slack):
Good morning! Here's your recap for Monday, Jan 27.
😴 *Sleep: 82 (Good)* — 7h 12m total
Deep 58m | REM 1h 24m | Light 4h 50m
Lowest HR 52 bpm | Avg HR 58 bpm | HRV 42 ms
💪 *Readiness: 78 (Good)*
Body temp +0.1°C | HRV balance solid | Recovery index slightly low
🏃 *Activity (yesterday): 74 (Good)* — 8,241 steps, 312 active cal
Stress: normal range
Solid night overall — deep sleep was a bit short but REM made up for it.
Dive deeper in the Oura app: https://cloud.ouraring.com/app/v1/home — enjoy your day!
When delivering an evening summary, fetch daily_activity, daily_readiness, daily_stress, and daily_sleep for today. Also fetch yesterday's daily_activity as a fallback in case today's data isn't available yet.
Send only the formatted summary — no preamble, intro message, or extra commentary before or after it. Apply the correct formatting syntax for the delivery channel (see Channel Formatting Guide).
Format rules:
Example tone (plain text / iMessage):
Good evening! Here's your day in review for Monday, Jan 27.
🏃 Activity: 81 (Good) — 9,432 steps, 387 active cal, 2,145 total cal
📊 Readiness: 78 (Good) | Stress: normal range
😴 Last night's sleep: 82 (Good)
Nice active day — you moved well. Wind down soon and aim for a solid bedtime to keep the momentum going.
Dive deeper in the Oura app: https://cloud.ouraring.com/app/v1/home — sleep well!
Example tone (WhatsApp / Telegram / Slack):
Good evening! Here's your day in review for Monday, Jan 27.
🏃 *Activity: 81 (Good)* — 9,432 steps, 387 active cal, 2,145 total cal
📊 *Readiness: 78 (Good)* | Stress: normal range
😴 *Last night's sleep: 82 (Good)*
Nice active day — you moved well. Wind down soon and aim for a solid bedtime to keep the momentum going.
Dive deeper in the Oura app: https://cloud.ouraring.com/app/v1/home — sleep well!
Map natural language to endpoints:
| User says | Fetch |
|---|---|
| "How did I sleep?" / "Sleep report" | daily_sleep + sleep |
| "Am I ready to work out?" / "Readiness" | daily_readiness |
| "How active was I?" / "Steps today" | daily_activity |
| "Stress levels" | daily_stress |
| "Full health summary" | All endpoints |
| "Last week's sleep" / "trends" | daily_sleep with 7-day date range |
| "Compare this week to last" | Two date ranges, summarize differences |
When the user asks about trends or comparisons, fetch the relevant date range and summarize the pattern (improving, declining, stable) with specific numbers.