Plan a meal — propose recipes based on context (occasion, time, season, skill level), let the user pick one, then output a full recipe with grouped ingredients and step-by-step instructions. Use when the user wants to cook something and needs ideas or a recipe.
Help the user decide what to cook and produce a complete recipe ready to execute.
NEVER ask clarifying questions before proposing. Go straight to proposals every time.
Silently apply defaults for anything not provided:
State your defaults in ONE line at the top, then propose immediately. Example: "(No config — assuming 2 people, intermediate skill, no restrictions.)"
Special case — "surprise me": Skip the proposal list entirely. Go straight to the full recipe output (Step 4 + Step 5) for the dish you'd pick. Do not list options and ask which one.
Accept any combination of:
chef:source brief was produced earlier in the session, incorporate it as inspiration1. Read ~/.claude/chef/config.md (if it exists) → use defaults for missing fields
2. Propose 3–5 recipes immediately
3. User picks (or says "surprise me" → Claude picks the best fit)
4. Output full recipe
5. Output drink pairing
6. Output shopping list
7. Save to event file
Read ~/.claude/chef/config.md if it exists. Use what's there. Fill gaps with defaults. Do not pause.
For each recipe, include:
Format as a numbered list. Be opinionated — explain which one you'd recommend and why.
Example:
1. **Poulet rôti aux herbes** — 1h15 (20min active) · Intermediate
Simple classic. Fits a Sunday dinner and uses up thyme from the garden.
Technique: dry-brining overnight for crispier skin.
→ Recommended: best effort-to-wow ratio for 2 people.
2. **Pasta cacio e pepe** — 25min · Intermediate
...
# [Recipe Name]
[Cuisine] · [Total time] · [Difficulty] · Serves [N]
Group by category. Use metric for most measurements (mL, g), with practical equivalents when helpful (e.g. "250 mL (1 cup)").
## Ingredients
**Produce**
- 1 whole chicken (~1.5 kg)
- 4 cloves garlic
- 1 lemon
**Pantry**
- 30 mL (2 tbsp) olive oil
- Salt, freshly ground black pepper
**Herbs & Spices**
- 5–6 sprigs fresh thyme
- 2 sprigs rosemary
Categories to use (only include non-empty ones):
Number each step. Include:
oven_temp_unit in config (default: Fahrenheit first for oven temps). Examples: 400°F (200°C) for oven, 135°F (57°C) for internal doneness2–4 bullet points covering:
After Tips, always include a drink pairing section. Match the drink style to the occasion — junk food night gets beer or cocktail as primary, fine dining gets wine.
## Drink Pairing
🍷 **Primary**: [Name] — [one sentence why] *(SAQ ~$XX if applicable)*
🍺 **Alt**: [Name] — [different angle]
🥤 **Non-alc**: [Name] — [why it works]
preferred_stores includes SAQOutput a brief summary in chat: the dish name, total time, and that 3 files have been saved (see Step 7). Do not re-print the full recipe in chat after saving.
Save 3 separate files to {sessionDir}/{YYYY-MM-DD}-{slug}/ where sessionDir is:
sessionDir if provided in the test/session context (e.g. /tmp/chef-tests)./sessions in the current working directoryslug = short kebab-case event name (e.g. mexican-dinner-party, date-night-italian). sessions/ is in .gitignore.
plan.md — Full recipe referenceEvent header (date, guests, context) + menu table + recipe (ingredients, instructions, tips) + drink pairing. Do NOT include the timeline or shopping list — those are separate files.
timeline.md — Day-of run-of-showCheckbox format. Prep-ahead items must be visually distinct — put them in a clearly labelled block at the top with a note on why they benefit from being done early.
# Day-of Timeline — [Event]
**Date:** … · **Guests:** …
---
## ⭐ Prep Ahead
*Do these before the day — all improve with time.*
- [ ] **[Task]** — [why it's better made ahead, e.g. "mole deepens overnight"]
- [ ] **[Task]** — [e.g. "score + salt duck overnight = crispier skin"]
---
## Day of
### [X]h before guests
- [ ] [Task]
### [X] min before eating
- [ ] [Task]
### During dinner
- [ ] [Task]
### Dessert
- [ ] [Task]
shopping.md — Grocery list by storeGroup items by store, not category — one trip per section. Include everything in the recipe, including pantry staples (salt, pepper, olive oil, etc.) — mark common staples with *(pantry check)* so the user can verify quickly without skipping them entirely. Note any items that need ordering ahead.
# Shopping List — [Event]
**Date:** … · **Guests:** …
---
## Order Ahead
- [ ] [item] — [where to order]
## [Store Name]
- [ ] [item] [quantity] *(any note)*
## [Store Name]
- [ ] [item]
## SAQ
- [ ] [wine/spirit] ×[N bottles] (~$XX) — [brief note]
Confirm all 3 save paths to the user at the end.
When other dishes are specified ("a friend is making birria", "we're also having X"):
When a key ingredient is out of season or potentially unavailable, proactively flag it and offer the best substitute — do not wait to be asked. Examples:
For any ingredient that may be hard to find (specialty chiles, specific cuts, imported items), automatically include a tiered fallback in the Tips section:
For dinner parties, date nights, or any "impress" occasion, include a brief plating note after the instructions:
Toast — restaurant POS, orders, menus, employees, revenue centers, and reporting.