{
  "schemaVersion": "1.0",
  "item": {
    "slug": "calorie-visualizer",
    "name": "Calorie Visualizer",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/VintLin/calorie-visualizer",
    "canonicalUrl": "https://clawhub.ai/VintLin/calorie-visualizer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/calorie-visualizer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=calorie-visualizer",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "QUICK_START.md",
      "README.md",
      "SKILL.md",
      "_meta.json",
      "data/food_database.json"
    ],
    "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/calorie-visualizer"
    },
    "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/calorie-visualizer",
    "agentPageUrl": "https://openagent3.xyz/skills/calorie-visualizer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/calorie-visualizer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/calorie-visualizer/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": "Calorie Visualizer",
        "body": "A local skill for meal logging and visual nutrition analysis."
      },
      {
        "title": "Core Flow",
        "body": "User sends meal text/photo (upstream extracts calorie/protein values or calls food-db lookup).\nadd (or add-food) writes to calorie_data.db.\nAfter write, visual_renderer.py generates a fresh report image.\nCLI prints REPORT_IMAGE:<path> so the chat layer can send the image."
      },
      {
        "title": "Daily Goal Priority",
        "body": "config.daily_goal (manual override)\nTDEE derived from USER.md\nIf user explicitly refuses profile data: logging only, no repeated prompting\nFallback default in renderer: 2000 kcal"
      },
      {
        "title": "CLI Commands",
        "body": "# Add a meal with explicit nutrition values\npython3 scripts/calorie_visualizer.py add \"food name\" 500 25 [--photo /path/to/image.jpg]\n\n# Add from local food database (local-first, online fallback optional)\npython3 scripts/calorie_visualizer.py add-food \"Subway chicken sandwich\" --multiplier 1.0\npython3 scripts/calorie_visualizer.py add-food \"rice\" --offline\n\n# Daily summary\npython3 scripts/calorie_visualizer.py summary\n\n# Regenerate report image\npython3 scripts/calorie_visualizer.py report\n\n# Config\npython3 scripts/calorie_visualizer.py config daily_goal 2000\npython3 scripts/calorie_visualizer.py config user_refused_profile True"
      },
      {
        "title": "Dependencies",
        "body": "cd skills/calorie-visualizer\npython3 -m pip install -r requirements.txt\n\nPython libs: html2image, Pillow\nOnline fallback: optional USDA API (USDA_API_KEY)\nDatabase: SQLite (built into Python)\nRendering: requires system Chromium/Chrome (called by html2image)"
      },
      {
        "title": "Storage",
        "body": "calorie_data.db (local SQLite)\nNo automatic external sync"
      }
    ],
    "body": "Calorie Visualizer\n\nA local skill for meal logging and visual nutrition analysis.\n\nCore Flow\nUser sends meal text/photo (upstream extracts calorie/protein values or calls food-db lookup).\nadd (or add-food) writes to calorie_data.db.\nAfter write, visual_renderer.py generates a fresh report image.\nCLI prints REPORT_IMAGE:<path> so the chat layer can send the image.\nDaily Goal Priority\nconfig.daily_goal (manual override)\nTDEE derived from USER.md\nIf user explicitly refuses profile data: logging only, no repeated prompting\nFallback default in renderer: 2000 kcal\nCLI Commands\n# Add a meal with explicit nutrition values\npython3 scripts/calorie_visualizer.py add \"food name\" 500 25 [--photo /path/to/image.jpg]\n\n# Add from local food database (local-first, online fallback optional)\npython3 scripts/calorie_visualizer.py add-food \"Subway chicken sandwich\" --multiplier 1.0\npython3 scripts/calorie_visualizer.py add-food \"rice\" --offline\n\n# Daily summary\npython3 scripts/calorie_visualizer.py summary\n\n# Regenerate report image\npython3 scripts/calorie_visualizer.py report\n\n# Config\npython3 scripts/calorie_visualizer.py config daily_goal 2000\npython3 scripts/calorie_visualizer.py config user_refused_profile True\n\nDependencies\ncd skills/calorie-visualizer\npython3 -m pip install -r requirements.txt\n\nPython libs: html2image, Pillow\nOnline fallback: optional USDA API (USDA_API_KEY)\nDatabase: SQLite (built into Python)\nRendering: requires system Chromium/Chrome (called by html2image)\nStorage\ncalorie_data.db (local SQLite)\nNo automatic external sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/VintLin/calorie-visualizer",
    "publisherUrl": "https://clawhub.ai/VintLin/calorie-visualizer",
    "owner": "VintLin",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/calorie-visualizer",
    "downloadUrl": "https://openagent3.xyz/downloads/calorie-visualizer",
    "agentUrl": "https://openagent3.xyz/skills/calorie-visualizer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/calorie-visualizer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/calorie-visualizer/agent.md"
  }
}