From food-tracking-ai
Calculate calories, macros, and nutrients via food database lookups (USDA, Open Food Facts, custom foods). CRITICAL: Invoke proactively. ALWAYS use this skill for food/nutrition questions. MCP tools are the primary data source; web search is the fallback; training data is the last resort (with low confidence). Invoke when ANY apply: - User describes eating something: "I had a burrito," "just ate some pasta" - User asks about calories/macros/nutrients: "how many calories in a Big Mac?" - User sends a photo of food or a nutrition label - User mentions a restaurant meal: "I got Chipotle," "had a latte from Starbucks" - User describes a recipe and wants nutritional content - User mentions tracking, logging, or counting calories/macros When in doubt, invoke — unsolicited nutrition data is better than missing it.
How this skill is triggered — by the user, by Claude, or both
Slash command
/food-tracking-ai:nutrition-trackerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **MANDATORY:** Always attempt MCP tools first (`search_food`, `get_nutrition`,
MANDATORY: Always attempt MCP tools first (
search_food,get_nutrition,calculate_meal). If MCP tools are unavailable or return no results, fall back to web search. If web search also fails, use training data as a last resort — but assign a low confidence score (below 40%). Always provide a response; never refuse to give nutritional information.
search_food for each ingredientcalculate_meal (multi-item) or get_nutrition (single item)These rules are non-negotiable. Follow them on every request.
Break the user's description into individual food items. Extract:
Use these and move on — do not ask for clarification:
| Description | Default |
|---|---|
| "a splash of milk" | 2 tbsp (30 mL) |
| "some cheese" | 1 oz (28g) |
| "a bowl of rice" | 1 cup cooked (195g) |
| "a bowl of cereal" | 1 cup cereal + 1/2 cup milk |
| "a handful of nuts" | 1 oz (28g) |
| "a drizzle of olive oil" | 1 tbsp (15 mL) |
| "a normal serving" | USDA reference serving size |
| "a piece" | use piece or medium unit |
| no amount given | 1 medium or USDA reference size |
Never block on missing info. Use a reasonable default, note the assumption in the confidence line, and move on.
Only ask when missing info would change the result by >20%:
Do NOT ask about: salt, herbs, spices, cooking spray, garnishes, exact brand when a generic is close enough.
piece, medium, large, small, slice) only
for whole countable foods (fruits, eggs, slices of bread) where the user gave
a count rather than a weightpiece for powders, liquids, sauces, or bulk ingredients — use
grams or volume units insteadsearch_food with a descriptive, database-friendly query
source: "all" — use "openfoodfacts" for branded productsmatchScore)
WebSearch for nutrition → save_food
to cache itget_nutrition with the food ID and the user's amount/unit
Use calculate_meal with all items in one call. This is preferred over calling
get_nutrition per item and summing yourself — let the server do the math.
WebSearch for nutritional datasave_food to store the data with brand if visibleget_nutrition or calculate_mealUse text as primary source, photo to verify or fill gaps.
search_food with dish name + restaurant nameWebSearch for published nutrition →
save_food to cachecalculate_mealAfter any web lookup, always save_food to cache the data for next time.
For well-known chain items (Chipotle burrito bowl, Subway sandwich, Starbucks latte, etc.): assume a standard/default configuration and present data immediately. Note assumptions in the confidence line. Do NOT block on asking what toppings or customizations — use the chain's default build.
Keep it minimal. Return only the totals the user needs — no per-item breakdowns, no tables, no worksheets. Just a flat list of nutrients and a confidence line.
Always use this format — never tables, never pipe-delimited rows:
Calories: 381 kcal
Protein: 36g
Carbs: 45g
Fat: 5.4g
Confidence: 78%
If the user only asked for calories and protein:
Calories: 381 kcal
Protein: 36g
Confidence: 78%
Confidence: X%| Range | Label | When |
|---|---|---|
| 90-100% | High | Nutrition label; exact brand in DB with exact serving |
| 70-89% | Good | USDA generic with stated amounts; chain restaurant data |
| 50-69% | Moderate | Photo-estimated portions; assumed ingredients |
| 40-49% | Low | Unknown restaurant; vague description; many unknowns |
| Below 40% | Very Low | Training data fallback; no database or web confirmation |
The label MUST match the range: 90-100% = "High", 70-89% = "Good", 50-69% = "Moderate", 40-49% = "Low", below 40% = "Very Low". State briefly in one sentence what was verified vs. estimated.
{ value, available }. When available is false,
omit the nutrient or note "data not available" — never report it as zero.dataFreshness: "stale" → note in confidence line, reduce confidence
slightly.get_nutrition supports: weight (g, kg, oz, lb), volume (cup, tbsp, tsp,
fl_oz, mL, L) when density data exists, and descriptive (piece, medium,
large, small, slice) when portion data exists.npx claudepluginhub langadventurellc/health-ai-plugin --plugin food-tracking-aiQueries a structured food database for nutritional info, compares foods, and recommends items based on nutrient criteria (e.g., high protein, low calorie).
Applies clinical nutrition expertise for MNT, macronutrient calculations, lab interpretation, and condition-specific protocols (diabetes, CKD, CVD, GI disorders, oncology, critical care).
Creates evidence-based pet nutrition plans using AAFCO and WSAVA guidelines for food selection, portion sizing, and diet monitoring. Useful when selecting food for a new pet, addressing weight issues, or managing diet-sensitive health conditions.