Token导航 LogoToken导航TokenDH.com
开发只读clawhub未标认证来源可访问clear审计提醒

water-coach水上教练

Agent Skill

water-coach 用于补充开发相关能力,适合在 OpenClaw 中需要让 Agent 承接开发相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

30,458

周安装

1,295

GitHub Stars

2

下载量

10,671
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:water-coach(水上教练)
来源仓库:https://github.com/oristides/water-coach
安装命令:
openclaw skills install water-coach
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install water-coach

简介

水合作用跟踪和指导技能。当用户想要跟踪饮水量、获取喝水提醒、记录身体指标(体重、体脂、肌肉百分比等)时使用

SKILL.md

name
water-coach
description
Hydration tracking and coaching skill. Use when user wants to track water intake, get reminders to drink water, log body metrics, or get analytics on hydration habits.
compatibility
Requires python3, openclaw cron feature, heartbeat feature
metadata
{"clawdbot":{"emoji":"💧"}
author
oristides

💧 Water Coach

First-time Setup

Follow the first setup here references/setup.md


🤖 How Other Agents Should Interact

First-time Setup Check

water setup
is_setupWhat to do
falseAsk: weight OR desired goal. Also ask: "What times do you want water reminders?" (let user configure their schedule). Then use water set_body_weight 80 or water set_goal 3000. Don't assume hardcoded times!
trueSkip setup. Just log water or show status.

❌ Don't Ask

  • Reminder schedules after first setup (user already configured)

✅ Do Ask

  • "How much water did you drink?"
  • Only weight/goal (first time)

CLI Structure

water_coach.py <namespace> <command> [options]

Namespaces: water | body | analytics


Data Format

CSV Format

logged_at,drank_at,date,slot,ml_drank,goal_at_time,message_id
ColumnDescription
logged_atWhen user told you (NOW)
drank_atWhen user actually drank (user can specify past time)
dateDerived from drank_at
slotmorning/lunch/afternoon/evening/manual
ml_drankAmount in ml
goal_at_timeGoal at that moment
message_idAudit trail - link to conversation

Key Rules:

  • drank_at is MANDATORY - always required
  • If user doesn't specify drank_at → assume drank_at = logged_at
  • Cumulative is calculated at query time (not stored)
  • Use drank_at to determine which day counts

Details at references/log_format.md

Audit Trail

Every water log entry captures:

  • message_id: Links to the conversation message where user requested the log
  • Auto-capture: CLI automatically gets message_id from session transcript
  • Proof: Use water audit <message_id> to get entry + conversation context
# Check proof of a water entry
water audit msg_123
# Returns: entry data + surrounding messages for context
⚠️ Privacy Notice: The audit feature can read your conversation transcripts, but only when you explicitly run water audit <message_id>. This is off by default (audit_auto_capture: false). ``bash # Edit water_config.json and set: "audit_auto_capture": true ` **How it works:** - Water log **always** saves the message_id (regardless of this setting) ✅ - When you run water audit <message_id>: - If false: Shows entry data only (message_id saved, but no context read) - If true`: Also reads transcript to show conversation context ("User said: I drank 500ml") Why disable it? If you discuss sensitive topics and don't need proof of intake, leave it off.

Daily Commands

# Water
water status                                      # Current progress (calculated from drank_at)
water log 500                                    # Log intake (drank_at = now)
water log 500 --drank-at=2026-02-18T18:00:00Z  # Log with past time
water log 500 --drank-at=2026-02-18T18:00:00Z --message-id=msg_123
water dynamic                                    # Check if extra notification needed
water threshold                                  # Get expected % for current hour
water set_body_weight 80                        # Update weight + logs to body_metrics
water set_body_weight 80 --update-goal          # + update goal
water audit <message_id>                        # Get entry + conversation context

# Body
body log --weight=80 --height=1.75 --body-fat=18
body latest          # Get latest metrics
body history 30     # Get history

# Analytics
analytics week       # Weekly briefing (Sunday 8pm)
analytics month     # Monthly briefing (2nd day 8pm)

Rules (MUST FOLLOW)

  1. ALWAYS use CLI - never calculate manually
  2. LLM interprets first - "eu tomei 2 copos" → 500ml → water log 500
  3. Threshold from CLI - run water threshold, don't hardcode
  4. GOAL is USER'S CHOICE - weight × 35 is just a DEFAULT suggestion:

- At setup: Ask weight → suggest goal → CONFIRM with user - On weight update: Ask "Want to update your goal to the new suggested amount?" - User can set any goal (doctor's orders, preference, etc.)


Config Tree

water-coach/
├── SKILL.md              ← You are here
├── scripts/
│   ├── water_coach.py   ← Unified CLI
│   └── water.py         ← Core functions
├── data/                 ← DO NOT USE - keep skill code separate from user data
└── references/
    ├── setup.md
    ├── dynamic.md
    └── log_format.md

⚠️ IMPORTANT: Data Location

User data is stored in the AGENT WORKSPACE, NOT in the skill folder!

DataLocation
water_log.csv<agent-workspace>/memory/data/water_log.csv
water_config.json<agent-workspace>/memory/data/water_config.json
body_metrics.csv`<agent-workspace>/memory/data/body_metrics.csv

Example path: /home/oriel/.openclaw/workspace/memory/data/

Why? Keeps user data separate from skill code — makes backups, migrations, and skill updates easier.


Notifications Schedule

TypeWhenCommand
User ConfiguredPer user's schedulewater status
Default Suggestion9am, 12pm, 3pm, 6pm, 9pmwater status
DynamicEvery ~30 min (heartbeat)water dynamic
WeeklySunday 8pmanalytics week
Monthly2nd day 8pmanalytics month

Notification Rules (MUST FOLLOW)

  • USER CONFIGURES THEIR SCHEDULE — Agent should ask user: "What times do you want water reminders?" and respect that
  • NO "no log" skip logic — Always send notifications when scheduled, don't skip because user hasn't logged water
  • Notifications STIMULATE logging — That's the point! Don't assume user will log on their own

Quick Reference

TaskCommand
Check progresswater_coach.py water status
Log waterwater_coach.py water log 500
Need extra?water_coach.py water dynamic
Body metricswater_coach.py body log --weight=80
Weekly reportwater_coach.py analytics week
Monthly reportwater_coach.py analytics month

Dynamic Scheduling details

references/dynamic.md

⚠️ Bug Fix (Feb 2026)

The water dynamic command had a bug where the hourly notification counter wouldn't reset when the hour changed. This is now fixed:

  • The script now checks if the current hour differs from last_extra_hour and resets the counter accordingly
  • This ensures notifications work correctly after hour boundaries (e.g., 4PM)

⚠️ Bug Fix (Feb 2026) - Analytics

The analyticsPM → 5 week and analytics month commands had a bug:

  • Was looking for non-existent cumulative_ml column in CSV
  • Fixed to sum ml_drank per day instead

✅ How to Build Good Weekly/Monthly Reports

Use these functions (don't reinvent):

ReportScriptFunction
Weeklywater_coach.py analytics weekanalytics_week() in water_coach.py
Monthlywater_coach.py analytics monthanalytics_month() in water_coach.py

These call get_week_stats() and get_month_stats() in water.py.

When updating analytics functions, follow these rules:

1. Include ALL days, even with 0ml

# In get_week_stats() / get_month_stats()
# Include every day in the range, not just days with data
for i in range(days):
    d = (date.today() - timedelta(days=i)).strftime("%Y-%m-%d")
    ml = by_date.get(d, {}).get("ml", 0)  # Default to 0, not skip

2. Calculate true average

# Average = total_ml / ALL days (including zeros), not just tracked days
avg_ml = total_ml / days  # e.g., 15440ml / 7 days = 2205ml/day

3. Show all days in table format

| Dia | ML | % | Status |
| Sab 22 | 2250ml | 67.7% | ⚠️ |
| Seg 17 | 0ml | 0.0% | ❌ |

This gives users an accurate picture of their habits!

Tests

python3 -m pytest skills/water-coach/scripts/test/test_water.py -v

Example

User: "eu tomei 2 copos"
Agent: (LLM interprets: 2 copos ≈ 500ml)
Agent: exec("water_coach.py water log 500")
→ Python logs to CSV

Agent Evaluations → evaluation/AGENT.md

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

71.89%
按下载量换算7,671

安全审计

VirusTotal

可疑

ClawScan

通过

Static analysis

未展示

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills