{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ouracli",
    "name": "Oura Ring Data",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/visionik/ouracli",
    "canonicalUrl": "https://clawhub.ai/visionik/ouracli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ouracli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ouracli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "Taskfile.yml",
      "pyproject.toml",
      "src/ouracli/__init__.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ouracli"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ouracli",
    "agentPageUrl": "https://openagent3.xyz/skills/ouracli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ouracli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ouracli/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Oura Ring Data Access",
        "body": "Retrieves health and fitness data from the Oura Ring using the ouracli command-line interface."
      },
      {
        "title": "CRITICAL: Authentication Required",
        "body": "ALWAYS check for authentication before running ouracli commands. The tool requires a PERSONAL_ACCESS_TOKEN environment variable.\n\nToken location: secrets/oura.env or ~/.secrets/oura.env\nIf commands fail with authentication errors, inform the user to obtain a token from: https://cloud.ouraring.com/personal-access-tokens"
      },
      {
        "title": "Core Health Metrics",
        "body": "activity - Daily activity (steps, MET values, calories)\nsleep - Sleep data (stages, efficiency, heart rate)\nreadiness - Readiness scores and contributors\nheartrate - Time-series heart rate data (5-minute resolution)\nspo2 - Blood oxygen saturation data\nstress - Daily stress levels"
      },
      {
        "title": "Additional Data",
        "body": "workout - Workout sessions\nsession - Activity sessions\ntag - User-added tags\nrest-mode - Rest mode periods\npersonal-info - User profile information\nall - All available data types"
      },
      {
        "title": "✅ SUPPORTED FORMATS (Use These!)",
        "body": "# Single date (no quotes needed)\nouracli activity 2025-12-25\nouracli sleep today\nouracli heartrate yesterday\n\n# Relative ranges from today (MUST use quotes)\nouracli activity \"7 days\"      # Last 7 days including today\nouracli sleep \"30 days\"        # Last 30 days\nouracli readiness \"2 weeks\"    # Last 2 weeks\nouracli stress \"1 month\"       # Last month\n\n# Date + duration (MUST use quotes)\nouracli activity \"2025-12-01 28 days\"    # 28 days starting Dec 1\nouracli sleep \"2025-09-23 7 days\"        # Week starting Sept 23\n\n⚠️ CRITICAL: Use quotes when the date range contains spaces!"
      },
      {
        "title": "❌ UNSUPPORTED FORMATS (DO NOT USE)",
        "body": "# ❌ WRONG - Two separate dates\nouracli activity 2025-09-23 2025-09-30\n\n# ❌ WRONG - \"to\" syntax\nouracli activity \"2025-09-23 to 2025-09-30\"\n\n# ❌ WRONG - Range operators\nouracli activity \"2025-09-23..2025-09-30\"\n\n# ❌ WRONG - Relative past expressions\nouracli activity \"3 months ago\""
      },
      {
        "title": "Converting Date Ranges",
        "body": "If user requests data between two specific dates:\n\nStep 1: Calculate the number of days (inclusive)\n\nExample: Sept 23 to Sept 30 = 7 days\n         Dec 1 to Dec 31 = 30 days\n\nStep 2: Use the \"date + duration\" format\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\"\nouracli activity \"2025-12-01 30 days\""
      },
      {
        "title": "Output Formats",
        "body": "ALWAYS use --json for programmatic data analysis. This is the most reliable format for parsing.\n\n# ✅ RECOMMENDED for AI analysis\nouracli activity \"7 days\" --json\n\n# Other formats (human-readable)\nouracli activity today --tree        # Default: tree structure\nouracli activity \"7 days\" --markdown # Markdown with charts\nouracli activity \"7 days\" --html > activity.html  # Interactive HTML charts\nouracli activity \"7 days\" --dataframe  # Pandas DataFrame format"
      },
      {
        "title": "Quick Data Check",
        "body": "# Today's activity\nouracli activity today --json\n\n# Recent sleep data\nouracli sleep \"7 days\" --json\n\n# Current readiness\nouracli readiness today --json"
      },
      {
        "title": "Detailed Analysis",
        "body": "# Weekly health summary\nouracli all \"7 days\" --json\n\n# Monthly activity report\nouracli activity \"30 days\" --json\n\n# Heart rate for specific date\nouracli heartrate \"2025-12-15 1 days\" --json"
      },
      {
        "title": "Multi-Day Reports",
        "body": "# All data grouped by day (HTML report)\nouracli all \"7 days\" --by-day --html > weekly-report.html\n\n# All data grouped by type\nouracli all \"7 days\" --by-method --json"
      },
      {
        "title": "Readiness Contributors Warning",
        "body": "⚠️ IMPORTANT: The contributors.resting_heart_rate field in readiness data is a SCORE (0-100), NOT actual BPM:\n\nLow score (19, 47) = RHR elevated vs. baseline (negative impact)\nHigh score (95, 100) = RHR optimal vs. baseline (positive impact)\nActual BPM values are in the heartrate command output\n\nDO NOT interpret contributor scores as actual heart rate measurements."
      },
      {
        "title": "Oura API Quirks",
        "body": "Single-day queries sometimes return empty results due to timezone issues\nUse date ranges (e.g., \"YYYY-MM-DD 2 days\") for more reliable results\nWhen querying specific dates, consider adding a buffer day"
      },
      {
        "title": "Data Availability",
        "body": "Ring must be synced recently for current data\nHistorical data availability depends on user's Oura subscription\nIf no data is returned, suggest broader date range or check sync status"
      },
      {
        "title": "Error: \"Got unexpected extra argument\"",
        "body": "Cause: Used two separate date arguments instead of one quoted range\n\n# ❌ WRONG\nouracli activity 2025-09-23 2025-09-30\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\""
      },
      {
        "title": "Error: \"Invalid date specification\"",
        "body": "Cause: Used unsupported syntax like \"to\", \"..\", or relative expressions\n\n# ❌ WRONG\nouracli activity \"2025-09-23 to 2025-09-30\"\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\""
      },
      {
        "title": "No Data Returned",
        "body": "Solutions:\n\nTry a broader date range: ouracli activity \"7 days\" --json\nAdd buffer days: ouracli activity \"2025-12-25 2 days\" --json\nCheck if Ring has synced recently\nVerify date is within available data range"
      },
      {
        "title": "\"Show me my activity for the last week\"",
        "body": "ouracli activity \"7 days\" --json"
      },
      {
        "title": "\"What was my sleep like last night?\"",
        "body": "ouracli sleep today --json"
      },
      {
        "title": "\"How was my readiness in December?\"",
        "body": "ouracli readiness \"2025-12-01 30 days\" --json"
      },
      {
        "title": "\"Get all my data from Sept 23 to Sept 30\"",
        "body": "# Calculate: Sept 30 - Sept 23 = 7 days\nouracli all \"2025-09-23 7 days\" --json"
      },
      {
        "title": "\"Show my heart rate from yesterday\"",
        "body": "ouracli heartrate yesterday --json"
      },
      {
        "title": "Quick Reference",
        "body": "User IntentCommandToday's activityouracli activity today --jsonLast week's sleepouracli sleep \"7 days\" --jsonCurrent readinessouracli readiness today --jsonHeart rate todayouracli heartrate today --jsonMonthly summaryouracli all \"30 days\" --jsonSpecific date rangeouracli [TYPE] \"YYYY-MM-DD N days\" --jsonAll data typesouracli all \"7 days\" --json"
      },
      {
        "title": "Notes",
        "body": "Always prefer --json format for AI analysis\nUse quotes for all date ranges with spaces\nCalculate day counts for specific date ranges\nCheck authentication if commands fail\nConsider timezone quirks when querying specific dates"
      }
    ],
    "body": "Oura Ring Data Access\n\nRetrieves health and fitness data from the Oura Ring using the ouracli command-line interface.\n\nCRITICAL: Authentication Required\n\nALWAYS check for authentication before running ouracli commands. The tool requires a PERSONAL_ACCESS_TOKEN environment variable.\n\nToken location: secrets/oura.env or ~/.secrets/oura.env\nIf commands fail with authentication errors, inform the user to obtain a token from: https://cloud.ouraring.com/personal-access-tokens\nAvailable Data Types\nCore Health Metrics\nactivity - Daily activity (steps, MET values, calories)\nsleep - Sleep data (stages, efficiency, heart rate)\nreadiness - Readiness scores and contributors\nheartrate - Time-series heart rate data (5-minute resolution)\nspo2 - Blood oxygen saturation data\nstress - Daily stress levels\nAdditional Data\nworkout - Workout sessions\nsession - Activity sessions\ntag - User-added tags\nrest-mode - Rest mode periods\npersonal-info - User profile information\nall - All available data types\nDate Range Specification\n✅ SUPPORTED FORMATS (Use These!)\n# Single date (no quotes needed)\nouracli activity 2025-12-25\nouracli sleep today\nouracli heartrate yesterday\n\n# Relative ranges from today (MUST use quotes)\nouracli activity \"7 days\"      # Last 7 days including today\nouracli sleep \"30 days\"        # Last 30 days\nouracli readiness \"2 weeks\"    # Last 2 weeks\nouracli stress \"1 month\"       # Last month\n\n# Date + duration (MUST use quotes)\nouracli activity \"2025-12-01 28 days\"    # 28 days starting Dec 1\nouracli sleep \"2025-09-23 7 days\"        # Week starting Sept 23\n\n\n⚠️ CRITICAL: Use quotes when the date range contains spaces!\n\n❌ UNSUPPORTED FORMATS (DO NOT USE)\n# ❌ WRONG - Two separate dates\nouracli activity 2025-09-23 2025-09-30\n\n# ❌ WRONG - \"to\" syntax\nouracli activity \"2025-09-23 to 2025-09-30\"\n\n# ❌ WRONG - Range operators\nouracli activity \"2025-09-23..2025-09-30\"\n\n# ❌ WRONG - Relative past expressions\nouracli activity \"3 months ago\"\n\nConverting Date Ranges\n\nIf user requests data between two specific dates:\n\nStep 1: Calculate the number of days (inclusive)\n\nExample: Sept 23 to Sept 30 = 7 days\n         Dec 1 to Dec 31 = 30 days\n\n\nStep 2: Use the \"date + duration\" format\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\"\nouracli activity \"2025-12-01 30 days\"\n\nOutput Formats\n\nALWAYS use --json for programmatic data analysis. This is the most reliable format for parsing.\n\n# ✅ RECOMMENDED for AI analysis\nouracli activity \"7 days\" --json\n\n# Other formats (human-readable)\nouracli activity today --tree        # Default: tree structure\nouracli activity \"7 days\" --markdown # Markdown with charts\nouracli activity \"7 days\" --html > activity.html  # Interactive HTML charts\nouracli activity \"7 days\" --dataframe  # Pandas DataFrame format\n\nCommon Usage Patterns\nQuick Data Check\n# Today's activity\nouracli activity today --json\n\n# Recent sleep data\nouracli sleep \"7 days\" --json\n\n# Current readiness\nouracli readiness today --json\n\nDetailed Analysis\n# Weekly health summary\nouracli all \"7 days\" --json\n\n# Monthly activity report\nouracli activity \"30 days\" --json\n\n# Heart rate for specific date\nouracli heartrate \"2025-12-15 1 days\" --json\n\nMulti-Day Reports\n# All data grouped by day (HTML report)\nouracli all \"7 days\" --by-day --html > weekly-report.html\n\n# All data grouped by type\nouracli all \"7 days\" --by-method --json\n\nKey Notes\nReadiness Contributors Warning\n\n⚠️ IMPORTANT: The contributors.resting_heart_rate field in readiness data is a SCORE (0-100), NOT actual BPM:\n\nLow score (19, 47) = RHR elevated vs. baseline (negative impact)\nHigh score (95, 100) = RHR optimal vs. baseline (positive impact)\nActual BPM values are in the heartrate command output\n\nDO NOT interpret contributor scores as actual heart rate measurements.\n\nOura API Quirks\nSingle-day queries sometimes return empty results due to timezone issues\nUse date ranges (e.g., \"YYYY-MM-DD 2 days\") for more reliable results\nWhen querying specific dates, consider adding a buffer day\nData Availability\nRing must be synced recently for current data\nHistorical data availability depends on user's Oura subscription\nIf no data is returned, suggest broader date range or check sync status\nTroubleshooting\nError: \"Got unexpected extra argument\"\n\nCause: Used two separate date arguments instead of one quoted range\n\n# ❌ WRONG\nouracli activity 2025-09-23 2025-09-30\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\"\n\nError: \"Invalid date specification\"\n\nCause: Used unsupported syntax like \"to\", \"..\", or relative expressions\n\n# ❌ WRONG\nouracli activity \"2025-09-23 to 2025-09-30\"\n\n# ✅ CORRECT\nouracli activity \"2025-09-23 7 days\"\n\nNo Data Returned\n\nSolutions:\n\nTry a broader date range: ouracli activity \"7 days\" --json\nAdd buffer days: ouracli activity \"2025-12-25 2 days\" --json\nCheck if Ring has synced recently\nVerify date is within available data range\nExample Responses to User Queries\n\"Show me my activity for the last week\"\nouracli activity \"7 days\" --json\n\n\"What was my sleep like last night?\"\nouracli sleep today --json\n\n\"How was my readiness in December?\"\nouracli readiness \"2025-12-01 30 days\" --json\n\n\"Get all my data from Sept 23 to Sept 30\"\n# Calculate: Sept 30 - Sept 23 = 7 days\nouracli all \"2025-09-23 7 days\" --json\n\n\"Show my heart rate from yesterday\"\nouracli heartrate yesterday --json\n\nQuick Reference\nUser Intent\tCommand\nToday's activity\touracli activity today --json\nLast week's sleep\touracli sleep \"7 days\" --json\nCurrent readiness\touracli readiness today --json\nHeart rate today\touracli heartrate today --json\nMonthly summary\touracli all \"30 days\" --json\nSpecific date range\touracli [TYPE] \"YYYY-MM-DD N days\" --json\nAll data types\touracli all \"7 days\" --json\nNotes\nAlways prefer --json format for AI analysis\nUse quotes for all date ranges with spaces\nCalculate day counts for specific date ranges\nCheck authentication if commands fail\nConsider timezone quirks when querying specific dates"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/visionik/ouracli",
    "publisherUrl": "https://clawhub.ai/visionik/ouracli",
    "owner": "visionik",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ouracli",
    "downloadUrl": "https://openagent3.xyz/downloads/ouracli",
    "agentUrl": "https://openagent3.xyz/skills/ouracli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ouracli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ouracli/agent.md"
  }
}