Diet Tracker
Scanned@YonghaoZhao722
npx machina-cli add skill @YonghaoZhao722/diet-tracker --openclawDiet Tracker
This skill helps track daily diet and achieve weight loss goals with automated meal reminders.
Trigger Conditions
User might say:
- "I had [food] for lunch/dinner"
- "What's my remaining calorie budget?"
- "How many calories have I eaten today?"
- "Log my meal"
- "Check my diet progress"
Or automatically triggered by cron job for meal reminders.
Cron Job Integration
This skill works with automated cron jobs:
- Lunch reminder: ~12:30 (checks if lunch logged, sends reminder if not)
- Dinner reminder: ~18:00 (checks if dinner logged, sends reminder if not)
Cron job system event: 饮食记录检查:午餐 or 饮食记录检查:晚餐
User Profile (Required)
The skill reads from USER.md:
- Daily calorie target (default: 1650 kcal)
- Macronutrient targets (protein/carbs/fat)
- Height, weight, age, gender, activity level (for TDEE calculation)
Activity levels:
- Sedentary (little or no exercise)
- Lightly active (light exercise 1-3 days/week)
- Moderately active (moderate exercise 3-5 days/week)
- Very active (hard exercise 6-7 days/week)
- Extra active (very hard exercise + physical job)
Workflow
When User Logs a Meal:
- Identify food items from user's description
- Fetch nutrition data via
scripts/get_food_nutrition.py- MUST GET: calories(kcal), protein(g), carbs(g), fat(g)
- Searches web for calorie/protein/carbs/fat info
- Falls back to
references/food_database.jsonif needed - If complete nutrition data cannot be found, MUST clearly inform user of estimated values
- Update daily log via
scripts/update_memory.py- Saves to
memory/YYYY-MM-DD.md - RECORD FORMAT:
Food Name - XX kcal (P: XXg, C: XXg, F: XXg) - Calculates meal totals
- Updates daily running totals
- Saves to
- Report to user:
- MUST REPORT: calories + protein/carbs/fat grams
- Today's consumed / remaining calories
- MUST REPORT: Remaining macronutrient budgets
- Predicted weight change based on deficit/surplus
When User Asks for Status:
- Read current day's memory file
- Calculate totals consumed
- Report:
- Remaining calorie budget
- Remaining protein/carbs/fat (if targets set)
- Weight change prediction
Scripts
scripts/get_food_nutrition.py: Fetches nutrition info + calculates TDEEscripts/update_memory.py: Updates daily memory file with meal datareferences/food_database.json: Fallback database of common foods
Error Handling
Common Issues
Issue: "Cannot read USER.md" or missing user data
- Cause: User profile not configured
- Solution: Ask user for height, weight, age, gender, activity level, and calorie target
Issue: Nutrition lookup fails for uncommon foods
- Cause: Food not found in online databases
- Solution: Ask user for approximate calorie count or use similar food from database
Issue: Multiple food items in one meal
- Cause: User says "I had pizza, salad, and coke"
- Solution: Process each item separately, sum the nutrition values
Data Format
Daily Memory Entry (memory/YYYY-MM-DD.md)
REQUIRED FORMAT — Must include calories + macronutrients:
## Diet Log
**Breakfast**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g)
**Lunch**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g)
**Dinner**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g)
**Daily Total**: [X] / [target] kcal
- Protein: [X] / [target]g (remaining: [X]g)
- Carbs: [X] / [target]g (remaining: [X]g)
- Fat: [X] / [target]g (remaining: [X]g)
**Predicted weight change**: [-/+ X] kg
⚠️ Strictly prohibited to record only calories while omitting macronutrient grams!
Progressive Disclosure
- Level 1 (frontmatter): Skill activation criteria
- Level 2 (SKILL.md): Full workflow instructions (this file)
- Level 3 (references/): Food database and nutrition guidelines
Overview
Diet Tracker logs daily meals, calculates calories and macronutrients, and shows progress toward weight loss goals. It supports automated meal reminders via cron at lunch and dinner, and uses your profile to tailor calorie and macro targets. It updates a daily memory log and reports remaining budgets and predicted weight change.
How This Skill Works
When you log a meal, the system identifies foods, fetches nutrition data via scripts/get_food_nutrition.py (calories, protein, carbs, fat) and falls back to references/food_database.json if needed. It then updates memory/YYYY-MM-DD.md with a standardized entry and recalculates running totals. Finally it reports calories, macros, remaining budgets, and predicted weight change.
When to Use It
- User provides meal details (e.g., 'I had X for lunch'), to log and update totals
- User asks for remaining calorie budget for the day
- User asks how many calories they've eaten today or review macronutrients
- User requests to log a meal or starts a new logging action
- Cron-based reminders trigger at lunch or dinner if meals are not logged yet
Quick Start
- Step 1: Identify food items from your message (e.g., 'I had...')
- Step 2: Fetch nutrition with scripts/get_food_nutrition.py; use food_database.json if needed
- Step 3: Update memory with the entry and review calories, macros, and remaining budgets
Best Practices
- Log full meals with itemized foods and portions for accuracy
- Provide complete nutrition data (calories, protein, carbs, fat) when logging
- If data is missing, report estimated values clearly and transparently
- Break complex meals into individual items to sum nutrition correctly
- Regularly review and update USER.md targets (calorie and macros) to stay aligned with progress
Example Use Cases
- Logged Breakfast: Oatmeal with berries - 350 kcal (P: 12g, C: 60g, F: 6g)
- Asked: 'What is my remaining calories for today?'
- Logged Dinner: Salmon + quinoa - 550 kcal (P: 38g, C: 45g, F: 18g)
- Cron reminder sent for lunch because lunch was not logged (参加: 饮食记录检查:午餐)
- Logged multiple items in one meal (pizza, salad, coke) and the system summed nutrition across items