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 configuredntfy — 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
See references/nutrition.md.
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.