{
  "schemaVersion": "1.0",
  "item": {
    "slug": "vitavault",
    "name": "VitaVault",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/BrandonS7/vitavault",
    "canonicalUrl": "https://clawhub.ai/BrandonS7/vitavault",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/vitavault",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vitavault",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "references/data-types.md",
      "references/schema.md",
      "scripts/briefing.py",
      "scripts/import.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. 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-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/vitavault"
    },
    "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/vitavault",
    "agentPageUrl": "https://openagent3.xyz/skills/vitavault/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vitavault/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vitavault/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": "VitaVault - Your Health, Decoded",
        "body": "Sync Apple Health data from VitaVault iOS app directly to your OpenClaw agent. No shared servers, no middleman - data flows phone to your agent only.\n\nNo Mac required. Install VitaVault from TestFlight (beta) or the App Store."
      },
      {
        "title": "Agent Setup Guide (DO THIS WHEN USER SAYS \"set up VitaVault\")",
        "body": "When your user asks to set up VitaVault sync, follow these steps automatically. Don't ask the user to do the technical parts - handle it yourself and hand them the URL + token at the end."
      },
      {
        "title": "Step 1: Generate a sync token",
        "body": "# Generate a secure random token\npython3 -c \"import secrets; print(secrets.token_hex(32))\" > ~/.config/vitavault/sync-token\nmkdir -p ~/.config/vitavault\nTOKEN=$(cat ~/.config/vitavault/sync-token)\necho \"Token: $TOKEN\""
      },
      {
        "title": "Step 2: Start the webhook",
        "body": "VITAVAULT_SYNC_TOKEN=\"$TOKEN\" nohup python3 scripts/webhook.py --host 0.0.0.0 --port 8787 > /tmp/vitavault-webhook.log 2>&1 &\n\nThe webhook listens for health data POSTs and saves snapshots to ~/vitavault/data/."
      },
      {
        "title": "Step 3: Expose it over HTTPS",
        "body": "The VitaVault iOS app requires HTTPS (iOS App Transport Security). You MUST expose the webhook over HTTPS. Detect what's available and use the first option that works:\n\nOption A: Tailscale Funnel (recommended if Tailscale is installed)\n\n# Check if Tailscale is available\ntailscale status 2>/dev/null\n# If yes, expose via Funnel:\nsudo tailscale funnel --bg --set-path /vitavault http://127.0.0.1:8787\n# Your URL will be: https://<your-tailscale-hostname>/vitavault\ntailscale funnel status  # to see the URL\n\nOption B: Cloudflare Tunnel (if cloudflared is installed)\n\ncloudflared tunnel --url http://localhost:8787\n# Gives you a temporary https://*.trycloudflare.com URL\n# For permanent: set up a named tunnel with a custom domain\n\nOption C: VPS with a domain + reverse proxy (nginx/caddy)\nIf the host already has a domain with HTTPS (nginx, caddy, etc.), add a reverse proxy rule:\n\nlocation /vitavault {\n    proxy_pass http://127.0.0.1:8787;\n}\n\nURL would be: https://yourdomain.com/vitavault\n\nOption D: ngrok (quick testing)\n\nngrok http 8787\n# Gives you a temporary https://*.ngrok-free.app URL"
      },
      {
        "title": "Step 4: Verify it works",
        "body": "curl -s https://YOUR-URL/health\n# Should return: {\"ok\": true}"
      },
      {
        "title": "Step 5: Give the user their credentials",
        "body": "Tell your user:\n\nOpen VitaVault on your iPhone -> Settings -> OpenClaw\nWebhook URL: https://YOUR-URL\nSync Token: <the token you generated>\nPaste both in and tap Connect.\n\nThat's it. Once connected, VitaVault auto-syncs health data every time the app opens."
      },
      {
        "title": "Step 6: Make it persistent (recommended)",
        "body": "The webhook should survive reboots. Create a systemd service:\n\ncat > /tmp/vitavault-webhook.service << 'EOF'\n[Unit]\nDescription=VitaVault Webhook Receiver\nAfter=network.target\n\n[Service]\nType=simple\nUser=$USER\nEnvironment=VITAVAULT_SYNC_TOKEN=<TOKEN>\nExecStart=/usr/bin/python3 /path/to/skills/vitavault/scripts/webhook.py --host 127.0.0.1 --port 8787\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\nEOF\n# Adjust paths and token, then:\nsudo cp /tmp/vitavault-webhook.service /etc/systemd/system/\nsudo systemctl daemon-reload\nsudo systemctl enable --now vitavault-webhook"
      },
      {
        "title": "Querying Health Data",
        "body": "Once data is syncing, use these scripts to read it:\n\n# Latest snapshot summary\npython3 scripts/summary.py\n\n# Raw latest JSON\npython3 scripts/query.py latest\n\n# Last 7 days\npython3 scripts/query.py week\n\n# Date range\npython3 scripts/query.py range 2026-02-01 2026-02-28\n\nData is stored locally at ~/vitavault/data/ as timestamped JSON files."
      },
      {
        "title": "What You Can Do With the Data",
        "body": "Once synced, your agent can:\n\nTrack trends in steps, sleep, HRV, resting HR, blood oxygen\nCompare current week vs prior week\nDetect unusual drops/spikes and flag risks\nBuild morning health briefings\nGenerate doctor appointment summaries\nSuggest habit changes based on actual data"
      },
      {
        "title": "Working with Manual Exports",
        "body": "Users can also export data manually from VitaVault (no webhook needed):"
      },
      {
        "title": "AI-Ready Format (Plain Text)",
        "body": "Pre-formatted for AI analysis. Users export from VitaVault and paste directly."
      },
      {
        "title": "JSON Format",
        "body": "Structured data with nested metrics, dates, and units."
      },
      {
        "title": "CSV Format",
        "body": "One row per day, opens in Excel/Google Sheets.\n\nWhen a user shares an export:\n\nAcknowledge the data\nHighlight 2-3 key observations (positive and concerning)\nGive 3 specific, actionable recommendations\nOffer to dig deeper into any metric"
      },
      {
        "title": "Privacy",
        "body": "VitaVault sync data flows directly: iPhone -> your OpenClaw agent. No shared backend, no central relay, no third-party storage. Data is saved on your agent's host at ~/vitavault/data/ and nowhere else."
      },
      {
        "title": "Links",
        "body": "App: VitaVault on TestFlight (beta)\nWebsite: vitavault.io\nDevelopers: vitavault.io/developers\nPrivacy: vitavault.io/privacy"
      }
    ],
    "body": "VitaVault - Your Health, Decoded\n\nSync Apple Health data from VitaVault iOS app directly to your OpenClaw agent. No shared servers, no middleman - data flows phone to your agent only.\n\nNo Mac required. Install VitaVault from TestFlight (beta) or the App Store.\n\nAgent Setup Guide (DO THIS WHEN USER SAYS \"set up VitaVault\")\n\nWhen your user asks to set up VitaVault sync, follow these steps automatically. Don't ask the user to do the technical parts - handle it yourself and hand them the URL + token at the end.\n\nStep 1: Generate a sync token\n# Generate a secure random token\npython3 -c \"import secrets; print(secrets.token_hex(32))\" > ~/.config/vitavault/sync-token\nmkdir -p ~/.config/vitavault\nTOKEN=$(cat ~/.config/vitavault/sync-token)\necho \"Token: $TOKEN\"\n\nStep 2: Start the webhook\nVITAVAULT_SYNC_TOKEN=\"$TOKEN\" nohup python3 scripts/webhook.py --host 0.0.0.0 --port 8787 > /tmp/vitavault-webhook.log 2>&1 &\n\n\nThe webhook listens for health data POSTs and saves snapshots to ~/vitavault/data/.\n\nStep 3: Expose it over HTTPS\n\nThe VitaVault iOS app requires HTTPS (iOS App Transport Security). You MUST expose the webhook over HTTPS. Detect what's available and use the first option that works:\n\nOption A: Tailscale Funnel (recommended if Tailscale is installed)\n\n# Check if Tailscale is available\ntailscale status 2>/dev/null\n# If yes, expose via Funnel:\nsudo tailscale funnel --bg --set-path /vitavault http://127.0.0.1:8787\n# Your URL will be: https://<your-tailscale-hostname>/vitavault\ntailscale funnel status  # to see the URL\n\n\nOption B: Cloudflare Tunnel (if cloudflared is installed)\n\ncloudflared tunnel --url http://localhost:8787\n# Gives you a temporary https://*.trycloudflare.com URL\n# For permanent: set up a named tunnel with a custom domain\n\n\nOption C: VPS with a domain + reverse proxy (nginx/caddy) If the host already has a domain with HTTPS (nginx, caddy, etc.), add a reverse proxy rule:\n\nlocation /vitavault {\n    proxy_pass http://127.0.0.1:8787;\n}\n\n\nURL would be: https://yourdomain.com/vitavault\n\nOption D: ngrok (quick testing)\n\nngrok http 8787\n# Gives you a temporary https://*.ngrok-free.app URL\n\nStep 4: Verify it works\ncurl -s https://YOUR-URL/health\n# Should return: {\"ok\": true}\n\nStep 5: Give the user their credentials\n\nTell your user:\n\nOpen VitaVault on your iPhone -> Settings -> OpenClaw\n\nWebhook URL: https://YOUR-URL Sync Token: <the token you generated>\n\nPaste both in and tap Connect.\n\nThat's it. Once connected, VitaVault auto-syncs health data every time the app opens.\n\nStep 6: Make it persistent (recommended)\n\nThe webhook should survive reboots. Create a systemd service:\n\ncat > /tmp/vitavault-webhook.service << 'EOF'\n[Unit]\nDescription=VitaVault Webhook Receiver\nAfter=network.target\n\n[Service]\nType=simple\nUser=$USER\nEnvironment=VITAVAULT_SYNC_TOKEN=<TOKEN>\nExecStart=/usr/bin/python3 /path/to/skills/vitavault/scripts/webhook.py --host 127.0.0.1 --port 8787\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\nEOF\n# Adjust paths and token, then:\nsudo cp /tmp/vitavault-webhook.service /etc/systemd/system/\nsudo systemctl daemon-reload\nsudo systemctl enable --now vitavault-webhook\n\nQuerying Health Data\n\nOnce data is syncing, use these scripts to read it:\n\n# Latest snapshot summary\npython3 scripts/summary.py\n\n# Raw latest JSON\npython3 scripts/query.py latest\n\n# Last 7 days\npython3 scripts/query.py week\n\n# Date range\npython3 scripts/query.py range 2026-02-01 2026-02-28\n\n\nData is stored locally at ~/vitavault/data/ as timestamped JSON files.\n\nWhat You Can Do With the Data\n\nOnce synced, your agent can:\n\nTrack trends in steps, sleep, HRV, resting HR, blood oxygen\nCompare current week vs prior week\nDetect unusual drops/spikes and flag risks\nBuild morning health briefings\nGenerate doctor appointment summaries\nSuggest habit changes based on actual data\nWorking with Manual Exports\n\nUsers can also export data manually from VitaVault (no webhook needed):\n\nAI-Ready Format (Plain Text)\n\nPre-formatted for AI analysis. Users export from VitaVault and paste directly.\n\nJSON Format\n\nStructured data with nested metrics, dates, and units.\n\nCSV Format\n\nOne row per day, opens in Excel/Google Sheets.\n\nWhen a user shares an export:\n\nAcknowledge the data\nHighlight 2-3 key observations (positive and concerning)\nGive 3 specific, actionable recommendations\nOffer to dig deeper into any metric\nPrivacy\n\nVitaVault sync data flows directly: iPhone -> your OpenClaw agent. No shared backend, no central relay, no third-party storage. Data is saved on your agent's host at ~/vitavault/data/ and nowhere else.\n\nLinks\nApp: VitaVault on TestFlight (beta)\nWebsite: vitavault.io\nDevelopers: vitavault.io/developers\nPrivacy: vitavault.io/privacy"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/BrandonS7/vitavault",
    "publisherUrl": "https://clawhub.ai/BrandonS7/vitavault",
    "owner": "BrandonS7",
    "version": "1.3.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/vitavault",
    "downloadUrl": "https://openagent3.xyz/downloads/vitavault",
    "agentUrl": "https://openagent3.xyz/skills/vitavault/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vitavault/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vitavault/agent.md"
  }
}