Feast
A meal planning skill that transforms weekly cooking into a cultural experience.
Quick Start
- New user? Run onboarding: "Let's set up Feast" or "Onboard me for meal planning"
- Returning user? Check status: "What's the meal plan status?"
- Planning day? Start planning: "Let's plan next week's meals"
- Cooking day? Get reveal: "What's for dinner?"
Core Files
User data lives in their workspace:
workspace/meals/
โโโ profile.yaml # User preferences (created during onboarding)
โโโ history.yaml # What they've eaten
โโโ favourites.yaml # Loved recipes
โโโ failures.yaml # Never again
โโโ weeks/
โโโ YYYY-MM-DD.md # Each week's plan (self-contained)
Note: Weekly plans are fully self-contained โ each day's recipe, theme research, music playlist, and cultural context is embedded directly in the week file. There are no separate recipe or theme files.
Weekly Cadence
Default schedule (user-configurable):
| Day | Activity | Trigger |
|---|---|---|
| Thursday | Research & draft | "Let's plan next week" |
| Friday | Confirm plan | "Confirm the meal plan" |
| Saturday | Shopping list | "Generate shopping list" |
| Sunday | Shopping | User shops |
| Week | Daily reveals | "What's for dinner?" |
| End of week | Review | "Review this week's meals" |
Notifications
Feast sends reminders at key moments: planning day, confirmation, shopping list, daily reveals, and week review. These are delivered via cron jobs that spawn isolated agents to send notifications.
Notification Channels
Users configure their preferred channel in profile.yaml under schedule.notifications.channel:
| Channel | Delivery Method |
|---|---|
auto |
Delivers to the current session or first available channel |
telegram |
Sends via Telegram (requires Telegram channel configured in OpenClaw) |
discord |
Sends via Discord (requires Discord channel configured in OpenClaw) |
signal |
Sends via Signal (requires Signal channel configured in OpenClaw) |
webchat |
Outputs to the chat session |
Push Notifications (Optional)
For notifications to mobile devices independent of chat channels, users can enable push notifications:
schedule:
notifications:
push:
enabled: true
method: "pushbullet" # or "ntfy"
Supported methods:
- Pushbullet โ Requires the
pushbullet-notifyskill installed separately with API key configured - ntfy โ Uses ntfy.sh (or self-hosted); configure topic in profile
Push notifications are sent in addition to the primary channel, not instead of it. If push delivery fails, the notification still goes to the primary channel.
Timing
Notifications are delivered via OpenClaw's cron system with wakeMode: "next-heartbeat". This means notifications arrive within the heartbeat interval (typically up to 1 hour) after the scheduled time. For most meal planning purposes, this slight delay is acceptable.
Managing Notifications
Users can adjust their notification preferences anytime:
- "Change my Feast notifications to Telegram"
- "Turn off morning hints"
- "Enable Pushbullet notifications"
When updating, remove old cron jobs using stored IDs and create new ones with updated settings.
Workflows
Onboarding
Read references/onboarding.md for the full flow.
Essential questions:
- Location (for seasonality, units, stores)
- Household size & portion needs
- Week structure (start day, cooking days, cheat day)
- Dietary requirements & phase
- Equipment & cooking confidence
- Preferences (cuisines, spice, budget)
Save to workspace/meals/profile.yaml.
Planning (Thursday)
- Check user profile
- Review history (avoid recent repeats)
- Check upcoming cultural events (see references/events.md)
- Check seasonality for location
- Select 6-7 meals with:
- Cuisine variety
- Ingredient overlap
- Balanced nutrition
- Mix of quick/involved
- For each meal, research and embed:
- The Place: Identify specific region of origin (drill down to province, city, or area). Research regional context, history, current events. Write an evocative description.
- The Dish: Research authentic recipe from native sources (search in original language). Include origin story, cultural significance, full ingredients and method.
- The Soundtrack: Curate a 1-2 hour playlist with contemporary hits + classic/traditional from the region (see references/theme-research.md). Include full tracklist with links.
- Setting the Scene: How to serve, what to drink, atmosphere tips.
- Draft plan to
workspace/meals/weeks/YYYY-MM-DD.md(all content embedded in this single file) - Present summary (themes only, not full reveals)
Confirmation (Friday)
- Present draft plan with themes
- Allow amendments
- Mark as confirmed
- Set up daily reveal reminders
Shopping List (Saturday)
- Generate from confirmed plan
- Optimise:
- Group by category
- Combine overlapping ingredients
- Check pack sizes vs needs
- Flag seasonal items
- Price check key ingredients (see references/price-checking.md):
- Identify top 3-5 most expensive items (usually proteins, specialty ingredients)
- Check prices across user's available stores
- Note current deals, multi-buy offers, loyalty card prices
- Add price recommendations to the shopping list
- Suggest shopping strategy (single store or split if savings are significant)
- Present for review with price guidance
- Allow amendments
- Mark as approved
Daily Reveal
- Check it's a cooking day
- Reveal:
- Full recipe (in user's units)
- Theme dossier highlights:
- The place: Regional context, history, and character
- What's happening there now (current news/events from planning time)
- The dish: Origin story, cultural significance, how it's eaten locally
- Curated playlist:
- Contemporary hits from the region (what people there listen to now)
- Classic/traditional music from the region
- Full tracklist with links (Spotify/YouTube)
- The vibe and journey the playlist creates
- Setting the scene: Serving suggestions, drinks pairings, atmosphere tips
- Optional morning hint for anticipation
Review (End of Week)
- For each meal: rating (1-5), notes
- Update history
- Identify favourites โ add to favourites
- Identify failures โ add to failures
- Capture improvements for system
- Save review to week file
Recipe Regionalisation
All recipes stored in standardised internal units. On output, convert to user's preferred units:
- Temperature: Celsius / Fahrenheit / Gas Mark
- Weight: Metric (g/kg) / Imperial (oz/lb)
- Volume: Metric (ml/L) / Cups
See references/conversions.md.
Authenticity Guidelines
When researching cuisines:
- Search in the original language where possible
- Look for recipes from native sources, not just English food blogs
- Identify the specific region of origin โ not just "Thai food" but "Northern Thai, Chiang Mai style"
- Research music that's actually from the region:
- Find contemporary hits (what's charting there now)
- Find classic/traditional music (legendary artists from the region)
- Build a curated 1-2 hour playlist โ not generic Spotify searches
- See references/theme-research.md for guidance
- Research the region itself โ history, current events, social context, what it's famous for
- Note cultural context and any associated events
- Respect dietary traditions (e.g., no pork in Middle Eastern themes)
- Embed everything in the week plan โ recipes, themes, music, and context all go in the single week file
See references/cuisines/ for per-cuisine guides.
Templates
- templates/profile.yaml โ User profile
- templates/week.md โ Weekly plan with embedded recipes, themes, music, and shopping list
- templates/shopping-list.md โ Standalone shopping list format (for reference; usually embedded in week)
References
- references/onboarding.md โ User onboarding guide
- references/theme-research.md โ How to research cultural themes and curate music
- references/price-checking.md โ Smart shopping and price comparison guidance
- references/events.md โ Cultural events calendar for themed planning
- references/nutrition.md โ Dietary phases and balanced meal guidance
- references/conversions.md โ Unit conversion tables
- references/cuisines/ โ Per-cuisine research guides
- references/seasonality/ โ Regional seasonal produce
Scripts
History Tracking
After a meal is revealed and cooked, update history:
python scripts/update-history.py \
--meals-dir ~/.openclaw/workspace/meals \
--date 2026-02-03 \
--name "Thai Green Curry" \
--cuisine "Thai" \
--region "Central Thailand" \
--week-file "2026-02-02.md" \
--rating 4 \
--notes "Great, maybe more chilli next time"
This updates history.yaml and recalculates statistics automatically.
When doing the daily reveal, after the user confirms they've cooked and optionally rated the meal, run this script to keep history current.
Health & Nutrition
- Track calories per meal if user has a target
- Ensure weekly variety across food groups
- Respect dietary phases (weight loss = deficit, etc.)
- Flag any nutritional concerns
Seasonal Awareness
Check seasonality for user's location before suggesting ingredients. Seasonal produce is:
- Better quality
- Often cheaper
- More environmentally responsible
Not every ingredient needs to be in season, but prefer seasonal when possible.
See references/seasonality/ for regional guides.