Plan a weekly meal prep session — batch cooking based on your config (prep_days, people, prep_extras). Factors in ingredients to use up, health goals, and this week's grocery deals. Use when the user wants to plan a Sunday meal prep or weekly food prep.
Plan a weekly meal prep session. Output: a meal plan, component reuse map, shopping list, timed prep timeline, and saved session files.
Accept any combination of:
1. Read ~/.claude/chef/config.md → calculate portions, extract health_goals/dietary/stores
2. Run chef:grocery-check → get this week's deals (uses cache if fresh)
3. Plan meals
4. Output meal plan + component map + shopping list + prep timeline
5. Save session files
Read ~/.claude/chef/config.md. Extract:
people — people eating each mealprep_days — days to prep for (default: 4)prep_extras — extra portions per meal beyond people (default: 0, e.g. 1 for packed next-day lunches)health_goals — weekly macro/diet targetdietary — hard constraints (never violate)preferred_stores — passed to grocery-checkprep_time — available prep session time (default: 2h30)Portion formula:
portions_per_meal = people + prep_extras
total_portions = prep_days × portions_per_meal
anchor_batch = portions_per_meal × 2
Show the calculated targets at the top of your output:
Prep target: 4 days · 3 portions/meal (2 people + 1 packed lunch) · 12 total
Structure: 1 anchor ×6 + 2 lighter ×3
Invoke chef:grocery-check (integrated mode — returns deals data, no formatted output).
Use deals to bias protein selection toward what's on sale. A 40%+ deal on a protein should strongly influence the anchor batch choice.
Constraint priority (when conflicts arise):
dietary — hard, never violatehealth_goals — hard for the week's balance, soft for a single mealStructure:
anchor_batch portions) — highest effort, must reheat well. Braises, grain bowls, soups, roasted protein + veg.portions_per_meal each, faster, complement the anchorHealth balance across the week:
Format per proposed meal:
1. **[Name]** — [portions] · [time] · reheats: [yes/well/poorly]
Protein: X · Veg: Y, Z · Base: W
On sale: [ingredient ↓XX%] (if applicable)
Uses up: [ingredient] (if applicable)
Be opinionated — recommend the plan you'd pick and explain why.
Every component listed MUST appear in ≥2 meals. If no genuine reuse exists for a recipe, note it as "standalone" — do not fabricate reuse.
## Component Map
| Component | Prep once | Used in |
|---|---|---|
| Roasted sweet potato | 800g, 400°F (200°C) 25min | Meal 1 bowl + Meal 2 side |
| Quinoa | 300g dry | Meal 1 base + Meal 3 addition |
| Poached chicken | 600g | Meal 2 sliced + Meal 3 shredded |
Grouped by store (preferred_stores). Include all ingredients — mark accordingly:
(already have) — from use-up input(pantry check) — common staplesTimed order for the prep session, using prep_time from config (default 2h30). Start longest tasks first; run independent tasks in parallel.
## Prep Session (2h30)
**0:00** — Preheat oven to 400°F (200°C). Start braise (45 min unattended).
**0:10** — Prep + roast veg tray (25 min).
**0:15** — Cook grains (20 min).
...
**2:15** — Label + refrigerate. Note what freezes vs. fridge only.
Save to {sessionDir}/{YYYY-MM-DD}-prep/:
plan.md — meal plan + component mapshopping.md — shopping list by storetimeline.md — prep session ordermetadata.md — session context:---