# Send WHOOP Tracker to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
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. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "whoop-tracker",
    "name": "WHOOP Tracker",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/iJaack/whoop-tracker",
    "canonicalUrl": "https://clawhub.ai/iJaack/whoop-tracker",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/whoop-tracker",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=whoop-tracker",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "AUDIT.md",
      "SKILL.md",
      "references/api-reference.md",
      "references/oauth.md",
      "scripts/get_profile.py",
      "scripts/get_recovery.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "whoop-tracker",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T19:29:28.728Z",
      "expiresAt": "2026-05-17T19:29:28.728Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=whoop-tracker",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=whoop-tracker",
        "contentDisposition": "attachment; filename=\"whoop-tracker-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "whoop-tracker"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/whoop-tracker"
    },
    "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."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/whoop-tracker",
    "downloadUrl": "https://openagent3.xyz/downloads/whoop-tracker",
    "agentUrl": "https://openagent3.xyz/skills/whoop-tracker/agent",
    "manifestUrl": "https://openagent3.xyz/skills/whoop-tracker/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/whoop-tracker/agent.md"
  }
}
```
## Documentation

### WHOOP API

Retrieve and analyze fitness data from WHOOP wearables via the official REST API.

### Usage Snippet

# Install (if using Clawdhub)
clawdhub install whoop-tracker

# From the skill root:
python3 scripts/get_recovery.py --today
python3 scripts/get_sleep.py --last
python3 scripts/get_workouts.py --days 7
python3 scripts/get_profile.py

### Prerequisites

Python 3.7+
requests library: pip3 install requests
(or run bash scripts/install.sh)

### 1. Register Application

Go to https://developer.whoop.com
Create a new app and note your client_id and client_secret
Set redirect URI (e.g., http://localhost:8080/callback)

### 2. Save Credentials

mkdir -p ~/.whoop
cat > ~/.whoop/credentials.json <<EOF
{
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}
EOF
chmod 600 ~/.whoop/credentials.json

### 3. Authorize (see references/oauth.md for full guide)

Open the authorization URL in browser
User grants permissions → redirected with code
Exchange code for tokens via WhoopClient.authenticate(code, redirect_uri)

### 4. Fetch Data

All scripts are run from the skill root directory:

# Today's recovery
python3 scripts/get_recovery.py --today

# Last night's sleep
python3 scripts/get_sleep.py --last

# Recent workouts
python3 scripts/get_workouts.py --days 7

# User profile
python3 scripts/get_profile.py

### Recovery

Recovery Score (0-100): Readiness for strain
HRV (RMSSD): Heart rate variability in milliseconds
Resting Heart Rate: Morning baseline HR
SPO2: Blood oxygen percentage
Skin Temperature: Deviation from baseline in °C

### Sleep

Performance %: How well you slept vs. your sleep need
Duration: Total time in bed and per stage (REM, SWS, light, awake)
Efficiency %: Time asleep / time in bed
Consistency %: How consistent your sleep schedule is
Respiratory Rate: Breaths per minute
Sleep Needed/Debt: Baseline need and accumulated debt

### Cycle (Daily Strain)

Strain Score: Cardiovascular load (0-21 scale)
Kilojoules: Energy expenditure
Average/Max Heart Rate: Daily HR metrics

### Workout

Strain: Activity-specific strain score
Sport: Activity type (running, cycling, etc.)
Heart Rate Zones: Time spent in each of 6 zones
Distance/Altitude: GPS metrics (if available)

### API Endpoints

Base URL: https://api.prod.whoop.com

See references/api-reference.md for full endpoint documentation with response schemas.

User Profile:

GET /v1/user/profile/basic — Name, email
GET /v1/user/body_measurement — Height, weight, max HR

Recovery:

GET /v1/recovery — All recovery data (paginated)
GET /v1/cycle/{cycleId}/recovery — Recovery for specific cycle

Sleep:

GET /v1/sleep — All sleep records (paginated)
GET /v1/sleep/{sleepId} — Specific sleep by ID
GET /v1/cycle/{cycleId}/sleep — Sleep for specific cycle

Cycle:

GET /v1/cycle — All physiological cycles (paginated)
GET /v1/cycle/{cycleId} — Specific cycle by ID

Workout:

GET /v1/workout — All workouts (paginated)
GET /v1/workout/{workoutId} — Specific workout by ID

All collection endpoints support start, end (ISO 8601), limit (max 25), and nextToken (pagination cursor).

### Required OAuth Scopes

read:profile — User name and email
read:body_measurement — Height, weight, max HR
read:recovery — Recovery scores and HRV
read:sleep — Sleep metrics and stages
read:cycles — Daily strain data
read:workout — Activity and workout data

### scripts/whoop_client.py

Core API client. Features:

OAuth token storage and auto-refresh
Token expiry tracking (proactive refresh)
Rate limit handling (429 with retry)
Automatic pagination iterators (iter_recovery, iter_sleep, iter_cycles, iter_workouts)

### scripts/get_recovery.py

python3 scripts/get_recovery.py --today              # Today's recovery
python3 scripts/get_recovery.py --days 7             # Past week
python3 scripts/get_recovery.py --start 2026-01-20   # From date
python3 scripts/get_recovery.py --json               # Raw JSON output

### scripts/get_sleep.py

python3 scripts/get_sleep.py --last       # Last night
python3 scripts/get_sleep.py --days 7     # Past week
python3 scripts/get_sleep.py --json       # Raw JSON output

### scripts/get_workouts.py

python3 scripts/get_workouts.py --days 7             # Past week
python3 scripts/get_workouts.py --sport running       # Filter by sport
python3 scripts/get_workouts.py --json                # Raw JSON output

### scripts/get_profile.py

python3 scripts/get_profile.py            # Profile + body measurements
python3 scripts/get_profile.py --json     # Raw JSON output

### scripts/install.sh

bash scripts/install.sh                   # Install pip dependencies + setup guide

### "ModuleNotFoundError: No module named 'requests'"

Install dependencies: pip3 install requests or bash scripts/install.sh

### "Credentials not found at ~/.whoop/credentials.json"

Create the file with your OAuth client_id and client_secret (see Quick Start step 2).

### "Not authenticated"

Complete the OAuth authorization flow (see references/oauth.md).

### "401 Unauthorized" after token refresh fails

Your refresh token has expired. Re-authorize from the authorization URL.

### "429 Too Many Requests"

Rate limit hit. The client automatically retries after the Retry-After period.

### Empty results

Check your date range — use --days 7 or wider range. Ensure your OAuth scopes include the data type you're requesting.

### References

references/oauth.md — OAuth setup, token management, authorization flow
references/api-reference.md — Complete API endpoint documentation with response schemas
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: iJaack
- Version: 1.0.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-10T19:29:28.728Z
- Expires at: 2026-05-17T19:29:28.728Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/whoop-tracker)
- [Send to Agent page](https://openagent3.xyz/skills/whoop-tracker/agent)
- [JSON manifest](https://openagent3.xyz/skills/whoop-tracker/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/whoop-tracker/agent.md)
- [Download page](https://openagent3.xyz/downloads/whoop-tracker)