{
  "schemaVersion": "1.0",
  "item": {
    "slug": "whoop-cli",
    "name": "WHOOP CLI for Agents",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/andreasnlarsen/whoop-cli",
    "canonicalUrl": "https://clawhub.ai/andreasnlarsen/whoop-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/whoop-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=whoop-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/whoop-cli"
    },
    "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/whoop-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/whoop-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/whoop-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/whoop-cli/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "whoop-cli",
        "body": "Use the installed whoop command."
      },
      {
        "title": "Security + credential handling (required)",
        "body": "Never ask users to paste client secrets/tokens into chat.\nFor first-time auth, the user should run login locally on their own shell.\nPrefer read-only operational commands in agent flows (summary, day-brief, health, trend, sync pull).\nDo not run whoop auth login unless the user explicitly asks for login help.\nTokens are stored locally at ~/.whoop-cli/profiles/<profile>.json by the CLI."
      },
      {
        "title": "Install / bootstrap",
        "body": "If whoop is missing:\n\nnpm install -g @andreasnlarsen/whoop-cli@0.3.1\n\nOptional OpenClaw skill install from package bundle:\n\nwhoop openclaw install-skill --force"
      },
      {
        "title": "Core checks",
        "body": "whoop auth status --json\nIf unauthenticated, ask the user to run local login:\n\nwhoop auth login --client-id ... --client-secret ... --redirect-uri ...\n\n\nValidate:\n\nwhoop day-brief --json --pretty"
      },
      {
        "title": "Useful commands",
        "body": "Daily:\n\nwhoop summary --json --pretty\nwhoop day-brief --json --pretty\nwhoop strain-plan --json --pretty\nwhoop health flags --days 7 --json --pretty\n\n\nActivity analysis:\n\nwhoop activity list --days 30 --json --pretty\nwhoop activity trend --days 30 --json --pretty\nwhoop activity types --days 30 --json --pretty\ntraining-only: whoop activity trend --days 30 --labeled-only --json --pretty"
      },
      {
        "title": "Activity interpretation guardrail (important)",
        "body": "WHOOP generic activity rows (often sport_id=-1) are auto-detected and may be unlabeled movement (housework/incidental activity), not intentional training.\nDo not treat generic activity as confirmed training volume by default.\nFor coaching/training recommendations, default to --labeled-only and report both total vs filtered counts."
      },
      {
        "title": "Agent filtering pattern (jq-friendly)",
        "body": "Canonical source: whoop activity list --json\nPrefer built-in filters first (--labeled-only, --generic-only, --sport-id, --sport-name).\nIf custom slicing is needed and jq is available, filter shell-side from raw JSON (example):\n\nwhoop activity list --days 30 --json | jq '.data.records | map(select(.sport_id != -1))'\n\nExport:\n\nwhoop sync pull --start YYYY-MM-DD --end YYYY-MM-DD --out ./whoop.jsonl --json --pretty"
      },
      {
        "title": "Experiment protocol (agent-required)",
        "body": "Canonical state: ~/.whoop-cli/experiments.json only.\nPlan experiments with context at creation time:\n\nwhoop experiment plan --name ... --behavior ... --start-date YYYY-MM-DD [--end-date YYYY-MM-DD] --description ... --why ... --hypothesis ... --success-criteria ... --protocol ... --json --pretty\n\n\nUpdate context without creating duplicate state:\n\nwhoop experiment context --id ... [--description ... --why ... --hypothesis ... --success-criteria ... --protocol ...] --json --pretty\n\n\nCheck lifecycle/status with:\n\nwhoop experiment status [--status planned|running|completed] [--id ...] --json --pretty\n\n\nEvaluate outcomes with:\n\nwhoop experiment report --id ... --json --pretty\n\n\nProfile scope is strict by default (active --profile only).\n\nUse --all-profiles only when cross-profile visibility is explicitly needed.\n\n\nPrefer output field sourceOfTruth (path to canonical state file); experimentsFile is kept as compatibility alias.\nAvoid duplicating experiment state into other files unless the user explicitly asks for separate notes."
      },
      {
        "title": "Safety",
        "body": "Never print client secrets or raw tokens.\nKeep API errors concise and actionable.\nTreat this integration as unofficial/non-affiliated."
      }
    ],
    "body": "whoop-cli\n\nUse the installed whoop command.\n\nSecurity + credential handling (required)\nNever ask users to paste client secrets/tokens into chat.\nFor first-time auth, the user should run login locally on their own shell.\nPrefer read-only operational commands in agent flows (summary, day-brief, health, trend, sync pull).\nDo not run whoop auth login unless the user explicitly asks for login help.\nTokens are stored locally at ~/.whoop-cli/profiles/<profile>.json by the CLI.\nInstall / bootstrap\n\nIf whoop is missing:\n\nnpm install -g @andreasnlarsen/whoop-cli@0.3.1\n\n\nOptional OpenClaw skill install from package bundle:\n\nwhoop openclaw install-skill --force\n\nCore checks\nwhoop auth status --json\nIf unauthenticated, ask the user to run local login:\nwhoop auth login --client-id ... --client-secret ... --redirect-uri ...\nValidate:\nwhoop day-brief --json --pretty\nUseful commands\nDaily:\nwhoop summary --json --pretty\nwhoop day-brief --json --pretty\nwhoop strain-plan --json --pretty\nwhoop health flags --days 7 --json --pretty\nActivity analysis:\nwhoop activity list --days 30 --json --pretty\nwhoop activity trend --days 30 --json --pretty\nwhoop activity types --days 30 --json --pretty\ntraining-only: whoop activity trend --days 30 --labeled-only --json --pretty\nActivity interpretation guardrail (important)\nWHOOP generic activity rows (often sport_id=-1) are auto-detected and may be unlabeled movement (housework/incidental activity), not intentional training.\nDo not treat generic activity as confirmed training volume by default.\nFor coaching/training recommendations, default to --labeled-only and report both total vs filtered counts.\nAgent filtering pattern (jq-friendly)\nCanonical source: whoop activity list --json\nPrefer built-in filters first (--labeled-only, --generic-only, --sport-id, --sport-name).\nIf custom slicing is needed and jq is available, filter shell-side from raw JSON (example):\nwhoop activity list --days 30 --json | jq '.data.records | map(select(.sport_id != -1))'\n\nExport:\nwhoop sync pull --start YYYY-MM-DD --end YYYY-MM-DD --out ./whoop.jsonl --json --pretty\nExperiment protocol (agent-required)\nCanonical state: ~/.whoop-cli/experiments.json only.\nPlan experiments with context at creation time:\nwhoop experiment plan --name ... --behavior ... --start-date YYYY-MM-DD [--end-date YYYY-MM-DD] --description ... --why ... --hypothesis ... --success-criteria ... --protocol ... --json --pretty\nUpdate context without creating duplicate state:\nwhoop experiment context --id ... [--description ... --why ... --hypothesis ... --success-criteria ... --protocol ...] --json --pretty\nCheck lifecycle/status with:\nwhoop experiment status [--status planned|running|completed] [--id ...] --json --pretty\nEvaluate outcomes with:\nwhoop experiment report --id ... --json --pretty\nProfile scope is strict by default (active --profile only).\nUse --all-profiles only when cross-profile visibility is explicitly needed.\nPrefer output field sourceOfTruth (path to canonical state file); experimentsFile is kept as compatibility alias.\nAvoid duplicating experiment state into other files unless the user explicitly asks for separate notes.\nSafety\nNever print client secrets or raw tokens.\nKeep API errors concise and actionable.\nTreat this integration as unofficial/non-affiliated."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/andreasnlarsen/whoop-cli",
    "publisherUrl": "https://clawhub.ai/andreasnlarsen/whoop-cli",
    "owner": "andreasnlarsen",
    "version": "0.3.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/whoop-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/whoop-cli",
    "agentUrl": "https://openagent3.xyz/skills/whoop-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/whoop-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/whoop-cli/agent.md"
  }
}