water-coachHydration tracking and coaching skill. Use when user wants to track water intake, get reminders to drink water, log body metrics (weight, body fat, muscle %,...
Install via ClawdBot CLI:
clawdbot install water-coachFollow the first setup here references/setup.md
water setup
| is_setup | What to do |
|----------|-------------|
| false | Ask: 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! |
| true | Skip setup. Just log water or show status. |
water_coach.py <namespace> <command> [options]
Namespaces: water | body | analytics
logged_at,drank_at,date,slot,ml_drank,goal_at_time,message_id
| Column | Description |
|--------|-------------|
| logged_at | When user told you (NOW) |
| drank_at | When user actually drank (user can specify past time) |
| date | Derived from drank_at |
| slot | morning/lunch/afternoon/evening/manual |
| ml_drank | Amount in ml |
| goal_at_time | Goal at that moment |
| message_id | Audit trail - link to conversation |
Key Rules:
Details at references/log_format.md
Every water log entry captures:
water audit 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 runwater audit. This is off by default (audit_auto_capture: false).
>
> # 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 :
- 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.
# 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)
water threshold, don't hardcodewater-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
User data is stored in the AGENT WORKSPACE, NOT in the skill folder!
| Data | Location |
|------|----------|
| water_log.csv | |
| water_config.json | |
| 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.
| Type | When | Command |
|------|------|---------|
| User Configured | Per user's schedule | water status |
| Default Suggestion | 9am, 12pm, 3pm, 6pm, 9pm | water status |
| Dynamic | Every ~30 min (heartbeat) | water dynamic |
| Weekly | Sunday 8pm | analytics week |
| Monthly | 2nd day 8pm | analytics month |
| Task | Command |
|------|---------|
| Check progress | water_coach.py water status |
| Log water | water_coach.py water log 500 |
| Need extra? | water_coach.py water dynamic |
| Body metrics | water_coach.py body log --weight=80 |
| Weekly report | water_coach.py analytics week |
| Monthly report | water_coach.py analytics month |
The water dynamic command had a bug where the hourly notification counter wouldn't reset when the hour changed. This is now fixed:
last_extra_hour and resets the counter accordinglyThe analyticsPM ā 5 week and analytics month commands had a bug:
cumulative_ml column in CSVml_drank per day insteadUse these functions (don't reinvent):
| Report | Script | Function |
|--------|--------|----------|
| Weekly | water_coach.py analytics week | analytics_week() in water_coach.py |
| Monthly | water_coach.py analytics month | analytics_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!
python3 -m pytest skills/water-coach/scripts/test/test_water.py -v
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
Generated Mar 1, 2026
Integrate Water Coach into fitness apps or personal training services to automate hydration tracking for clients. Coaches can monitor client water intake via analytics, set personalized goals, and send automated reminders, ensuring clients stay hydrated during workouts and daily routines.
Deploy Water Coach in workplace wellness initiatives to promote employee health. It can be used to track hydration habits across teams, provide reminders during work hours, and generate analytics for HR to assess program effectiveness and reduce fatigue-related productivity loss.
Use Water Coach in clinical settings or telehealth platforms to help patients with conditions like kidney disease or dehydration risks. Healthcare providers can set specific water intake goals, log intake via voice commands, and review audit trails for compliance during check-ups.
Connect Water Coach to smart devices like water bottles or home assistants for seamless hydration tracking. Users can log intake through voice interactions, receive reminders on smart displays, and sync data with other health metrics for a holistic wellness dashboard.
Implement Water Coach in schools to teach students about hydration habits. Teachers can set up reminders during class breaks, track collective water intake for health education projects, and use analytics to promote healthy routines among children.
Offer Water Coach as a cloud-based service with tiered subscriptions for individuals, teams, or enterprises. Revenue comes from monthly fees for advanced features like detailed analytics, custom reminder schedules, and integration APIs with other health platforms.
Release a free mobile app with basic hydration tracking and reminders, then monetize through premium upgrades. Users can pay for features like body metrics history, audit trail access, or ad-free experiences, driving revenue from one-time purchases or subscriptions.
License Water Coach's technology to existing health, fitness, or corporate software providers. Revenue is generated through licensing fees or revenue-sharing agreements, allowing partners to embed hydration tracking into their products without developing it from scratch.
š¬ Integration Tip
Ensure user data is stored in the agent workspace, not the skill folder, to simplify backups and updates; use the CLI for all operations to maintain accuracy and consistency.
Plan, focus, and complete work with energy management, time blocking, and context-specific productivity systems.
Build habits with streaks, reminders, and progress visualization
Comprehensive AI-assisted therapeutic support framework with CBT, ACT, DBT, MI, session notes CLI, and crisis protocols.
iOS HealthKit data sync CLI commands and patterns. Use when working with healthsync CLI, fetching Apple Health data (steps, heart rate, sleep, workouts), pairing iOS devices over local network, or understanding the iOS Health Sync project architecture including mTLS certificate pinning, Keychain storage, and audit logging.
Retrieve and summarize health, sleep, activity, readiness, and biometric data from the Oura Ring API via a command-line interface.
Load and analyze Strava activities, stats, and workouts using the Strava API