π¦ ClawHub
WHOOP CLI for Agents
by @andreasnlarsen
Use whoop-cli to fetch WHOOP data, generate day briefs/health flags, and export trend data for automation workflows.
TERMINAL
clawhub install whoop-cliπ About This Skill
name: whoop-cli description: Companion skill for @andreasnlarsen/whoop-cli: agent-friendly WHOOP access via stable CLI JSON (day briefs, health flags, trends, exports) without raw API plumbing. metadata: openclaw: requires: bins: - whoop env: - WHOOP_CLIENT_ID - WHOOP_CLIENT_SECRET - WHOOP_REDIRECT_URI primaryEnv: WHOOP_CLIENT_SECRET homepage: https://github.com/andreasnlarsen/whoop-cli install: - kind: node package: "@andreasnlarsen/whoop-cli@0.3.1" bins: - whoop label: Install whoop-cli from npm
whoop-cli
Use the installed whoop command.
Security + credential handling (required)
summary, day-brief, health, trend, sync pull).whoop auth login unless the user explicitly asks for login help.~/.whoop-cli/profiles/.json by the CLI.Install / bootstrap
If whoop is missing:
npm install -g @andreasnlarsen/whoop-cli@0.3.1
Optional OpenClaw skill install from package bundle:
whoop openclaw install-skill --force
Core checks
1. whoop auth status --json
2. If unauthenticated, ask the user to run local login:
- whoop auth login --client-id ... --client-secret ... --redirect-uri ...
3. Validate:
- whoop day-brief --json --pretty
Useful commands
whoop summary --json --pretty
- whoop day-brief --json --pretty
- whoop strain-plan --json --pretty
- whoop health flags --days 7 --json --pretty
whoop activity list --days 30 --json --pretty
- whoop activity trend --days 30 --json --pretty
- whoop activity types --days 30 --json --pretty
- training-only: whoop activity trend --days 30 --labeled-only --json --prettyActivity interpretation guardrail (important)
activity rows (often sport_id=-1) are auto-detected and may be unlabeled movement (housework/incidental activity), not intentional training.activity as confirmed training volume by default.--labeled-only and report both total vs filtered counts.Agent filtering pattern (jq-friendly)
whoop activity list --json--labeled-only, --generic-only, --sport-id, --sport-name).jq is available, filter shell-side from raw JSON (example):whoop activity list --days 30 --json | jq '.data.records | map(select(.sport_id != -1))'
whoop sync pull --start YYYY-MM-DD --end YYYY-MM-DD --out ./whoop.jsonl --json --prettyExperiment protocol (agent-required)
~/.whoop-cli/experiments.json only.whoop experiment plan --name ... --behavior ... --start-date YYYY-MM-DD [--end-date YYYY-MM-DD] --description ... --why ... --hypothesis ... --success-criteria ... --protocol ... --json --pretty
whoop experiment context --id ... [--description ... --why ... --hypothesis ... --success-criteria ... --protocol ...] --json --pretty
whoop experiment status [--status planned|running|completed] [--id ...] --json --pretty
whoop experiment report --id ... --json --pretty
--profile only).--all-profiles only when cross-profile visibility is explicitly needed.
sourceOfTruth (path to canonical state file); experimentsFile is kept as compatibility alias.