Food photo analysis and meal logging for ClawCoach. Send a photo of your meal and get instant macro breakdown via Claude Vision.
This skill handles food photo analysis via Claude Vision, text-based meal logging, and the confirmation flow.
All meals are stored in ~/.clawcoach/food-log.json with this structure:
{
"meals": [
{
"id": "2026-02-22-lunch-001",
"date": "2026-02-22",
"type": "lunch",
"status": "confirmed",
"items": [
{
"name": "grilled chicken breast",
"portion": "6 oz",
"calories": 280,
"protein_g": 52,
"fat_g": 6,
"carbs_g": 0
}
],
"total_calories": 520,
"total_protein_g": 62,
"total_fat_g": 14,
"total_carbs_g": 48,
"source": "photo",
"timestamp": "2026-02-22T12:35:00Z"
}
]
}
When the user sends a photo:
Analyze the image using your vision capabilities. Identify every distinct food item visible. For each item estimate:
Use your nutritional knowledge. For common foods, these are well-established values. Be conservative with portions if uncertain.
Present the results in the user's persona voice:
Handle response:
~/.clawcoach/food-log.json with status "confirmed"After confirmation, always show updated daily totals.
When the user describes food in text:
Categorize meals by time:
The user can override: "log this as a snack"
After any meal is confirmed, calculate and show:
~/.clawcoach/profile.json for targetsUse these as a baseline. Scale by estimated portion size.
| Food | Cal | Protein | Fat | Carbs |
|---|---|---|---|---|
| Chicken breast (grilled) | 165 | 31 | 3.6 | 0 |
| Salmon (baked) | 208 | 20 | 13 | 0 |
| White rice (cooked) | 130 | 2.7 | 0.3 | 28 |
| Brown rice (cooked) | 123 | 2.7 | 1.0 | 26 |
| Pasta (cooked) | 131 | 5 | 1.1 | 25 |
| Broccoli (steamed) | 35 | 2.4 | 0.4 | 7 |
| Egg (whole, large ~50g) | 155 | 13 | 11 | 1.1 |
| Avocado | 160 | 2 | 15 | 9 |
| Sweet potato (baked) | 90 | 2 | 0.1 | 21 |
| Greek yogurt (plain) | 59 | 10 | 0.7 | 3.6 |
| Banana (~120g) | 89 | 1.1 | 0.3 | 23 |
| Oats (cooked) | 68 | 2.4 | 1.4 | 12 |
| Bread (white, per slice ~30g) | 265 | 9 | 3.2 | 49 |
| Cheese (cheddar) | 403 | 25 | 33 | 1.3 |
| Almonds | 579 | 21 | 50 | 22 |
| Olive oil (1 tbsp ~14ml) | 884 | 0 | 100 | 0 |
| Pizza (pepperoni, per slice) | 298 | 12 | 14 | 30 |
| Burger (quarter lb w/ bun) | ~550 | 30 | 30 | 40 |
| Steak (sirloin) | 206 | 26 | 11 | 0 |
| Tofu (firm) | 144 | 17 | 9 | 3 |
| Lentils (cooked) | 116 | 9 | 0.4 | 20 |
| Milk (whole, 250ml) | 61 | 3.2 | 3.3 | 4.8 |
| Protein shake (~1 scoop) | ~120 | 25 | 1.5 | 3 |
For foods not on this list, use your general nutritional knowledge. Be transparent when estimating.
{date}-{meal_type}-{sequence}