Health Mate
by @tankeito
Executable OpenClaw health-report skill with Chinese, English, and Japanese report flows. It reads Markdown logs only from an explicitly configured MEMORY_DI...
clawhub install health-mate📖 About This Skill
name: health-mate display_name: Health-Mate version: 1.5.4 type: python/app description: "Executable OpenClaw health-report skill with Chinese, English, and Japanese report flows. It reads Markdown logs only from an explicitly configured MEMORY_DIR, writes reports and logs locally, can create a commented project-local config/.env template during setup, sanitizes local-LLM stdout before AI commentary is embedded into reports, separates monthly disease mode from balanced/fat-loss lifestyle mode, and only performs Tavily, webhook, or font-download network activity when the corresponding runtime options are configured." install: pip install -r requirements.txt capabilities: - file_read - file_write - pdf_generation - http_request metadata: openclaw: emoji: "🏥" homepage: "https://github.com/tankeito/Health-Mate" clawdbot: requires: env: - MEMORY_DIR env: MEMORY_DIR: Required. Explicitly set this to the Markdown health-memory directory that the skill may read. NVM_DIR: Optional. Node.js NVM directory used by the shell runners for scheduled execution. CRON_PATH: Optional. Cron-safe PATH value used by the shell runners so
openclaw and system commands can be found.
OPENCLAW_BIN: Optional. Absolute path to the local openclaw binary used by the Python local-LLM resolver.
HEALTH_MATE_LANG: Optional. Force the output locale such as zh-CN, en-US, or ja-JP.
TAVILY_API_KEY: Optional. Enables Tavily-assisted fallback guidance and monthly clinic lookup hints.
DINGTALK_WEBHOOK: Optional. Enables DingTalk delivery.
FEISHU_WEBHOOK: Optional. Enables Feishu delivery.
TELEGRAM_BOT_TOKEN: Optional. Enables Telegram delivery when paired with TELEGRAM_CHAT_ID.
TELEGRAM_CHAT_ID: Optional. Required only for Telegram delivery.
LOG_FILE: Optional. Overrides the shell-runner log file path; if omitted, each runner uses its own file under logs/.
REPORT_WEB_DIR: Optional. Local directory used when generated PDFs should be copied for public download.
REPORT_BASE_URL: Optional. Public base URL used for generated PDF links.
ALLOW_RUNTIME_FONT_DOWNLOAD: Optional. Disabled by default. Set to true only if runtime fallback download of NotoSansSC-VF.ttf is explicitly allowed.
Health-Mate
Health-Mate is an executable OpenClaw skill, not a prompt-only package.
It reads structured Markdown logs from MEMORY_DIR, generates localized PDF reports, and can optionally deliver the final message to external services.
What It Does
report_preferences.population_branch, while the setup wizard still auto-suggests lifestyle vs disease mode from the primary goalbalanced / fat_loss reports into a lifestyle-review path with activity heatmaps, energy-balance, habit-progression, and lean-mass/fat-mass charts while skipping hospital lookupInstallation
pip install -r requirements.txt
Dependencies:
reportlabpillowmatplotlibRequired Runtime Setup
Required:
MEMORY_DIROptional:
NVM_DIRCRON_PATHOPENCLAW_BINTAVILY_API_KEYDINGTALK_WEBHOOKFEISHU_WEBHOOKTELEGRAM_BOT_TOKENTELEGRAM_CHAT_IDLOG_FILEREPORT_WEB_DIRREPORT_BASE_URLALLOW_RUNTIME_FONT_DOWNLOADFor ClawHub manual folder upload:
config/.env.example may be missing from the uploaded packageenv block inside config/user_config.example.json as the upload-safe reference templateconfig/.env template if the file does not already existconfig/.envconfig/.envUpgrade And Backup Notice
Before upgrading or reinstalling this skill, back up:
config/user_config.jsonconfig/.envassets/Important:
MEMORY_DIR, report preferences, scoring modules, webhook settings, and Tavily settings before running scheduled jobs againreport_preferences.population_branch in config/user_config.jsonLocal And Network Behavior
Expected local file I/O:
MEMORY_DIRconfig/.env when shell runners are used and the file existsconfig/.env template when the file is missingconfig/user_config.example.json as the upload-safe env reference during manual installationreports/logs/Expected network I/O:
TAVILY_API_KEY is configuredALLOW_RUNTIME_FONT_DOWNLOAD=trueImportant:
MEMORY_DIR fallback in the shell runnersMEMORY_DIR is missingNVM_DIR and CRON_PATH from the environment or project-local config/.env, with built-in defaults when those keys are missingOPENCLAW_BIN first and then tries common install paths without hardcoding a single fixed cron PATHCommands
/health/health summary/health monthMemory Write Protocol
When writing into MEMORY_DIR, the model must act like a strict recorder.
Hard rules:
1. Never write commentary, advice, summaries, emoji, or chat filler into the file. 2. Meals, hydration, medication events, and exercise events must use level-3 headings with time markers. 3. Hydration blocks must remain minimal and structured. 4. Step totals must stay in one dedicated level-2 block. 5. Monitoring modules must use stable level-2 headings. 6. Use one language per block.
Core template:
# 2026-03-20 Health LogMeals
Breakfast (around 08:30)
Oatmeal 50g -> approx. 190kcal
Skim milk 250ml -> approx. 87kcal Hydration
Morning (around 09:45)
Water intake: 300ml
Cumulative: 300ml/2000ml Exercise
Afternoon Cycling (around 17:17)
Distance: 10km
Duration: 47min
Burn: approx. 300kcal Today Steps
Total steps: 8500 steps
Chinese core template:
# 2026-03-20 健康记录体重记录
晨起空腹:64.4kg 饮水记录
上午(约 08:45)
饮水量:300ml
累计:300ml/2000ml 饮食记录
早餐(约 08:50)
燕麦片 50g -> 约 190kcal
脱脂牛奶 250ml -> 约 87kcal 运动记录
下午骑行(约 17:10)
距离:10.2km
耗时:42min
消耗:约 290kcal 今日步数
总步数:8200 步 用药记录
胆舒胶囊:1 粒
Chinese monitoring-module constraints:
## 血压记录 / ## 血糖记录 / ## 体成分 / ## 生化记录 must stay as stable level-2 titles- 血压:128/82 mmHg, - 血糖:7.1 mmol/L, - ALT:34 U/LRecommended LLM instruction:
soul.md, or memory-write policy so the model stays inside the parser-safe structureuser_config.json, add their exact section titles to the LLM write protocol and keep those titles stable across daysExpandable monitoring modules:
## Blood Pressure
Morning (around 08:00)
Blood Pressure: 128/82 mmHg
Heart Rate: 72 bpm Glucose Record
After Breakfast (around 10:10)
Glucose: 7.1 mmol/L
Timing: 2h after breakfast Body Composition
Weight: 64.4kg
Body Fat: 18.6% Biochemistry
ALT: 34 U/L
AST: 28 U/L
Forbidden content:
AssessmentStatusSummaryMonthly Report Expectations
The monthly report now includes:
balanced / fat_loss: energy balance, four-week habit progression, and lean-mass/fat-mass compositionIf the user manages multiple conditions, the monthly report should combine them instead of collapsing to a single narrow perspective.
Font Fallback
Preferred CJK font paths:
assets/NotoSansSC-VF.ttfassets/NotoSansJP-VF.ttfIf one of them is missing:
NotoSansSC-VF.ttf into assets/NotoSansJP-VF.ttf into assets/Changelog
v1.5.4 - 2026-04-01
v1.5.3 - 2026-03-29
v1.5.2 - 2026-03-25
MEMORY_DIR, sanitized web-publish placeholders, and the shared LOG_FILE exampleinit_config.py so first-time setup can create a commented project-local config/.env template without overwriting an existing one.env, cron PATH helpers, and optional-network behaviorconfig/.env template when the file is missingbalanced / fat_loss, including new charts, renamed section titles, screening suggestions, and hospital-lookup bypassv1.5.1 - 2026-03-24
config/user_config.example.jsondaily_health_report_pro.sh, weekly_health_report_pro.sh, and monthly_health_report_pro.sh loading environment variables from .envv1.5.0 - 2026-03-23
scripts/health_report_pro.py and scripts/pdf_generator.py wrappersinit_config.py to cover ja-JPOPENCLAW_BIN and common-path auto-discovery