--- name: meal-plan-grocery-list description: Use when the user asks for a meal plan, what to cook this week, a grocery or shopping list, or to turn recipes into a list, or when a scheduled weekly meal-planning routine runs. Plans the week's meals around their tastes, dietary rules, budget and what's already in the pantry, then builds one grocery list grouped by aisle with an estimated cost. Never orders or buys anything. metadata: id: meal-plan-grocery-list version: "1.0.0" author: BotPlaza --- # Meal Plan & Grocery List > Dinner sorted for the week, and one list for one trip. ## What it does Plans the week's meals around what you like, what you can't eat, how much time you have and what's already in the cupboard. Then it turns the plan into one grocery list, grouped by aisle, with a rough total, so the shop takes one trip and nothing goes to waste. ## When to use - "Plan my dinners this week", "what should I cook?", "make me a grocery list", "turn these recipes into a shopping list". - A scheduled routine (default: Sundays at 10:00 AM). ## Requires Nothing to start: answers are kept in the assistant's memory. Optional: web access for recipes and typical prices, a notes page or doc for the pantry list, and a grocery-shopping skill if the user wants the list put into a cart they check out themselves. ## Schedule Default: Weekly, Sunday 10:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs | Field | Default | Notes | |---|---|---| | `meals` | Dinners, Mon–Fri | Which meals and days to plan. Breakfast, lunch and weekends are opt-in. | | `household` | 2 people | Servings per meal. Note kids or bigger appetites. | | `diet` | none | Rules that must hold: vegetarian, halal, kosher, gluten-free, nut allergy, low sodium, and so on. Allergies are hard rules. | | `dislikes` | none | Foods to skip. | | `cuisines` | any | Favourite cuisines, to rotate through. | | `weeknight_time` | 30 minutes | Longest hands-on cooking time on a weeknight. | | `budget` | none | Weekly grocery budget. The plan aims to stay under it. | | `pantry` | ask | What's already at home. Items listed here are left off the list. | | `leftovers` | on | Cook once, eat twice: plan at least one leftover lunch or dinner. | | `store` | any | Preferred store, used only for aisle order and price estimates. | Remember the answers and last week's plan, so meals don't repeat two weeks running. ## Steps 1. **Check what's changed.** On a scheduled run, ask one short question only if needed ("Anything special this week, like guests or a night out?"). If there's no answer within the run, plan with the saved settings. 2. **Check the pantry.** Use the saved pantry list and any items the user mentions. Plan at least one meal that uses up something already at home or about to go off. 3. **Plan the meals.** Pick meals that meet every diet rule, fit the weeknight time, rotate cuisines, and share ingredients so little is wasted (for example, half a bunch of cilantro on Monday, the rest on Thursday). Put the longest recipe on the lightest evening. 4. **Build the list.** Combine quantities across recipes, convert to the units a store sells (one 2 lb bag, not 0.6 lb), remove pantry items, and group by aisle: Produce, Meat & Fish, Dairy & Eggs, Bakery, Pantry, Frozen, Household. 5. **Estimate the cost.** Use typical prices for the user's area or store. Mark it as an estimate. If it runs over the budget, offer one or two swaps that bring it under. 6. **Report** in the format below. Offer to hand the list to a grocery-shopping skill, which fills a cart for the user to review and check out themselves. ## Output format ```markdown # Meals for {date range} {N} dinners · {servings} servings · est. {total} (budget {budget}) | Day | Meal | Time | Notes | |---|---|---|---| | Mon | {meal} | {min} | {uses up / leftovers for} | ## Grocery list **Produce:** {item} ({qty}), ... **Meat & Fish:** ... **Dairy & Eggs:** ... **Pantry:** ... **Already have:** {pantry items skipped} Estimated total: {total}. {One line: over/under budget and any swap offered.} ``` ## Edge cases - **An allergy or diet rule conflicts with a recipe:** drop the recipe. Never "mostly" meet an allergy rule. - **Prices unknown:** give the plan and list without a total and say so, rather than inventing prices. - **User is away part of the week:** plan only the days they're home. - **Pantry list is stale:** ask once a month whether it's still right. ## Boundaries Never orders, buys, or checks out groceries, and never signs up for a store account or delivery service. It only plans and lists. If the user wants a cart filled, it hands the list to a grocery skill that stops before checkout, and the user reviews and pays themselves. Not dietary or medical advice.