Design & media

Calorie Tracker

Log meals from photos, text, or labels and get ranged calorie and macro estimates with built-in safety guardrails.

What it does

A calorie and macro tracker that turns meal photos, text logs, and label photos into ranged estimates, then runs them against targets from the Mifflin-St Jeor formula or the user's own 14+ day logs. It reads scale trends on a 7-day rolling average, treats stalls and overnight jumps as water rather than fat, and enforces hard floors (1200 kcal women, 1500 men) plus Red Flags screening for pregnancy, under-18, BMI under 18.5, insulin/GLP-1/thyroid meds, or disordered-eating signals. Output is ranges with context, not single numbers.

When to use it

  • Log a meal by photo, text, or nutrition-label photo
  • Set a cut, bulk, or maintenance calorie or protein target
  • Diagnose a stalled scale or an overnight weight jump
  • Decide whether to eat back exercise calories

The skill document

User preferences, memory, and the food library live in ~/Clawic/data/calories/ (see setup.md on first use, memory-template.md for the file formats). If you have data at an old location (~/calories/ or ~/clawic/calories/), move it to ~/Clawic/data/calories/.

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/calories/config.yaml.

VariableTypeDefaultEffect
unitsmetric | imperialmetricConverts bodyweight, portions, and every formula input/output (kg↔lb, cm↔in)
energy_unitkcal | kJkcalAll energy figures; kJ = kcal × 4.184 (labels.md for kJ-labeled countries)
summary_cadenceper_meal | daily | weekly | noneper_mealWhen running totals are reported back to the user
clarify_styleask_once | assumeask_onceAsk the single clarifying question, or estimate silently and state the assumption that moves the number most

Preference areas to record as the user reveals them:

  • logging medium — photo-first, text-first, or label-first; affects which path in estimation.md opens by default
  • goal style — casual logging vs coached (weekly trend reviews, proactive check-ins); affects prompting intensity everywhere
  • food conventions — home cuisine, staple dishes, recurring restaurants; affects portion defaults and library seeding
  • data of record — an external tracker the user also logs in; affects whether totals mirror its database entries or this skill's estimates
  • restrictions — vegetarian/vegan, allergies, religious rules; affects protein-source assumptions and meal defaults
  • weigh-in ritual — scale owned or not, daily vs 3-4×/week tolerance, cycle-aligned comparisons; affects the protocol and averaging in trend.md

When To Use

  • User logs a meal by photo, text, or label and wants a calorie/macro estimate
  • User wants a calorie or protein target for a cut, bulk, or maintenance, or asks to count macros
  • User reports scale readings and wants the trend read — stalls, overnight jumps, first-week drops
  • User asks how accurate an estimate is, how to read a label, or whether to eat back exercise calories
  • Not for meal planning or recipes (that is dietitian / meal-planner territory)
  • Mode: act-as tracker for logging and math; advise-only for targets; any Red Flags hit suspends both

Quick Reference

SituationPlay
Meal photoItemize, size against plate/utensils, add hidden calories, output a range → estimation.md
Vague text log ("had pasta")Portion defaults + at most one clarifying question (per clarify_style) → estimation.md
Packaged foodOne label photo, extract, audit the serving size, save to library → labels.md
Repeat mealLibrary match, confirm "same as last time?", skip re-estimation
Restaurant, delivery, buffet, or bar nightPublished data for chains; +20-30% over homemade for the rest → restaurants.md
Wants a target (cut/bulk/maintain/macros)Mifflin-St Jeor × activity, sized per rule 3, floors per rule 4 → targets.md
14+ days of logs existMeasured TDEE replaces the formula (rule 5) → calibration.md
Scale stalled 2+ weeksStall protocol — confirm, audit, recalibrate, then adjust → trend.md
Weight jumped overnightWater, not fat: sodium, carbs, training, cycle, travel → trend.md
Smart scale says body fat changedBIA tracks hydration — monthly same-condition averages only → trend.md
User is 65+, BMI 30+, very lean, or in menopauseFormula and protein adjustments → targets.md
On GLP-1s, insulin, or weight-moving medsTrack against clinician numbers, protect protein → safety.md
"Should I eat back my workout?"≤50% of reported burn, never on top of an active multiplier → exercise.md
Cut finished, or "I'm done dieting"Transition to maintenance, band watching, recomp → maintenance.md
Any Red Flags signalSuspend all protocols → Red Flags table, response scripts in safety.md
Anything elseLog it with a range, save to memory, zero commentary on whether the number is good or bad

Depth on demand: estimation.md portions, hidden calories, recipes · labels.md label reading · restaurants.md eating out and alcohol · targets.md formulas and macros · calibration.md measured TDEE · trend.md scale readings and plateaus · exercise.md activity calories · maintenance.md phase changes · safety.md escalation depth.

Core Rules

  1. Estimates are ranges, never single numbers. Single foods run ±10-15%, mixed dishes ±25-40%, restaurant meals +20-30% vs homemade. "350-450" is honest; "412" is theater.
  2. Round against the goal's failure mode. Weight loss rounds intake UP 10-15%, muscle gain rounds DOWN 10-15%, maintenance takes the midpoint — estimation bias should oppose the direction the user would fail in.
  3. Targets come from a formula, not vibes. BMR (Mifflin-St Jeor): 10×kg + 6.25×cm − 5×age, +5 men / −161 women. TDEE = BMR × activity (1.2 sedentary, 1.375 light, 1.55 moderate, 1.725 heavy). Deficit 300-500 kcal/day, or sized to lose 0.5-1.0% bodyweight/week (worked example in targets.md).
  4. Hard floors: 1200 kcal/day (women) / 1500 (men) — never set or endorse targets below them without clinician oversight. Repeated logs below floor trigger the Red Flags table, not encouragement.
  5. After 14+ days of consistent logs, measured TDEE beats any formula: TDEE = mean daily intake − (weekly weight change in kg × 7700 ÷ 7), weight change signed (loss = negative). Losing 0.4 kg/week on 2200 kcal → 2200 − (−440) = ~2640. Formulas carry ±10% per-person error; the user's own data does not (calibration.md).
  6. Judge 7-day rolling averages, never day-to-day readings. Daily weight swings 1-2 kg on water and glycogen alone (each gram of glycogen binds ~3 g water — trend.md for the full variance table).
  7. Protein is the second number that matters: 1.6-2.2 g/kg bodyweight during a deficit (Morton meta-analysis); below that the deficit eats muscle, not just fat. Sedentary maintenance can run at the 0.8 g/kg RDA — except 65+ and BMI 30+, adjusted in targets.md.
  8. Screen before tracking. Run the Red Flags table on first contact and on every concerning signal. A calorie tracker in the wrong hands is a harm amplifier.

Everyday Anchors

The numbers needed on almost every log. Canonical here; reference, don't restate.

ItemEnergy
Cooking oil, 1 tbsp / 15 ml~120 kcal — invisible in photos, the #1 undercount
Butter, 1 tbsp~100 kcal
Sugar, 1 tbsp~48 kcal
Beer, 330-355 ml~140-150 kcal
Wine, 150 ml glass~120-150 kcal
Spirits, 44 ml shot~100 kcal before mixers
Latte, medium, whole milk150-250 kcal
Pizza slice, chain medium250-350 kcal
Egg, large~70-75 kcal
Mayonnaise, 1 tbsp~90-100 kcal — the sandwich's hidden half
Protein powder, 1 scoop (~30 g)~110-120 kcal, ~24 g protein
Per gramprotein 4 · carbs 4 · fat 9 · alcohol 7 kcal (Atwater) — use to audit any total

Red Flags

Signal (observable)SuspicionAction
Logs below floor (1200 W / 1500 M) on 3+ days in a weekUnsupervised over-restrictionPause targets, state the floor and why, suggest clinician review
Guilt or shame language, panic over imprecise entries, logging every gramDisordered eating patternStop tracking entirely; share an eating-disorder helpline: ANAD 1-888-375-7767 (US) / BEAT 0808 801 0677 (UK)
Skipping meals then large uncontrolled eating, or exercise framed as punishment for foodBinge-restrict cycleStop tracking, no calorie feedback, route to clinician (safety.md scripts)
Mentions pregnancy or breastfeedingDeficit unsafe for fetus/infantDecline deficit tracking; neutral logging only if their clinician approved it
Diabetes on insulin, kidney disease, thyroid or metabolism-affecting meds (incl. GLP-1 agonists)Targets require medical coordinationTrack only against clinician-set numbers, never self-derived ones (safety.md)
Under 18, or stated stats give BMI under 18.5Growth needs / underweightDecline deficit tracking, route to clinician or pediatrician
Losing more than 1.5 kg/week for 2+ weeksGallstone and muscle-loss riskRecommend raising intake; clinician if it continues

Anything in this table suspends every protocol above: route to a clinician. Response wording and condition-specific depth in safety.md.

Traps

TrapWhy it failsDo instead
Treating nutrition labels as exactUS labeling tolerance allows ~20% deviationKeep a 10-20% margin; labels are the best single source, not ground truth (labels.md)
Crediting wearable exercise burns at face valueWrist devices overestimate energy expenditure by ~27% or more (Shcherbina, Stanford)Eat back at most 50% of any reported burn (exercise.md)
Counting exercise twiceAn active TDEE multiplier already contains the workoutsMultiplier or eat-back — one accounting, never both (exercise.md)
Logging the wrong dry/cooked basisDry rice ~360 kcal/100 g vs cooked ~130 — a 2.7× errorMatch the database entry's basis to what was weighed (estimation.md)
Cutting intake at the first stallWater retention and logging drift mask real progress for 1-2 weeksRun the stall protocol: confirm, audit, recalibrate, then adjust (trend.md)
Escalating precision (gram-weighing everything)Inputs carry 15-40% error, so gram precision is fake accuracy and an obsession on-rampRanges plus library reuse; precision only where it is cheap (labels)
Moralizing foods as good/bad or clean/dirtyDrives hiding, guilt, and binge-restrict cyclesNeutral logging; context ("high for its satiety") over judgment
Ignoring liquids and cooking fatOil, lattes, and alcohol (Everyday Anchors) are the biggest silent gapPrompt once per savory or restaurant log for drinks and cooking method
Trusting recipe-site per-serving numbers"Serves 4" is the author's guess, not a measurementRecompute from ingredients ÷ actual servings (estimation.md)
Skipping the log after a blowout dayOne unlogged day becomes an abandoned week (the "what the hell" cascade)Log a rough range, close the day, move on (restaurants.md)

Output Gates

Before sending any tracking reply, check:

  • Is every estimate a range with context adjustments applied, not a lone exact number?
  • Does any target I state clear the 1200/1500 floor and derive from formula or measured TDEE?
  • Am I citing a 7-day average for any trend claim, not two scale readings?
  • Did I ask (at most once, per clarify_style) about cooking fat and drinks on this savory or restaurant log?
  • Is exercise counted exactly once — multiplier or eat-back, not both?
  • Is my reply free of praise or criticism of the day's total, and free of good/bad food labels?

Where Experts Disagree

  • Eat back exercise calories or not. Both accountings are valid: activity-inclusive multiplier and ignore workouts, or sedentary multiplier plus ≤50% eat-back. The only wrong answer is mixing them (exercise.md).
  • Daily vs weekly budgets. Banking calories for social days is sound arithmetic over a 7-day window; the boundary is users with restrict-binge tendencies, where banking becomes a restriction script — for them, flat daily targets.
  • Gram weighing vs hand portions. Weighing for short physique-driven phases and calibration weeks; hand portions for long-horizon adherence. Precision beyond input error (rule 1) is spent, not earned.
  • Straight to maintenance vs reverse dieting after a cut. Evidence strongly favors neither; default is straight to calculated maintenance, reverse only for post-show athletes or users anxious about regain (maintenance.md).

More Clawic skills, get them at https://clawic.com/skills/calories (install if the user confirms):

  • dietitian — turning targets into actual meal plans and timing
  • nutrition — micronutrients and full dietary tracking beyond calories and macros
  • gym — the training side of a recomposition, surplus, or cut
  • fasting — eating windows and fast tracking when the user time-restricts

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/calories.

Questions people ask

Will it give a single-number calorie estimate?
No. Single foods run ±10-15%, mixed dishes ±25-40%, restaurant meals +20-30% vs homemade, so estimates are output as ranges with context rather than one exact figure.
How are calorie targets computed?
Mifflin-St Jeor BMR × activity multiplier, with a 300-500 kcal/day deficit (or sized to 0.5-1.0% bodyweight/week) for cuts. After 14+ days of consistent logs, measured TDEE from the user's own data replaces the formula.
Will it track deficits during pregnancy or for minors?
No. Pregnancy/breastfeeding, under-18, BMI under 18.5, and several medical conditions decline deficit tracking and route to a clinician. Disordered-eating signals stop tracking entirely and share a helpline.

Related skills

Diagnoses nutrient gaps from symptoms, labs, and diet, and recommends the food or supplement that closes them safely.

91 installs4 stars

Query your local Treeline Money data — balances, spending, budgets, and transactions — through chat using the `tl` CLI.

140 installs2 stars

Compose a personalized morning briefing whose tone and depth adapt to last night's sleep quality.

87 installs11 stars

Capture journal entries verbatim, review them on a cadence, and spot patterns only when the evidence clears a defined bar.

71 installs2 stars

Read and manage Google Calendar events through authenticated REST API calls.

81 installs33 stars

Get day-by-day trip plans backed by research on current prices, visas, weather, and local events.

59 installs1 stars

More from Iván

Browse all skills

Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.

by Iván527 installs31 stars

Create and critique visual artifacts with quantified rules for hierarchy, spacing, type scale, color, and layout.

by Iván137 installs5 stars

Debug CSS mechanics and write component stylesheets grounded in named mechanisms, not trial-and-error.

by Iván97 installs5 stars

Plans and runs self-directed learning as a system: exit test, spaced review, deliberate practice, and transfer proof.

by Iván93 installs3 stars

Get Azure architecture, debugging, security, and cost reviews grounded in a live inventory of your subscription.

by Iván86 installs2 stars

Diagnoses Java and JVM issues from exception messages to container OOM-kills, and writes Java code matching the configured JDK.

by Iván130 installs9 stars