skills/oura/SKILL.md
Oura Ring health data — sleep, readiness, activity, and stress
npx skillsauth add rickybloomfield/ouraclaw ouraInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.