← Back to Skills
General

feast

smadgerano By smadgerano 👁 3 views ▲ 0 votes

Comprehensive meal planning system with cultural themes, authentic recipes,.

GitHub
---
name: feast
description: |
  Comprehensive meal planning system with cultural themes, authentic recipes, intelligent shopping, and surprise reveals. Use when:
  - Planning weekly meals or menus
  - Generating shopping lists
  - Asking for recipe ideas or cooking help
  - Reviewing past meals or planning ahead
  - Onboarding a new user to the meal system
  - Looking for cuisine inspiration or cultural food events
  - Tracking dietary goals or nutrition
  - Managing favourites, failures, or meal history
---

# Feast

A meal planning skill that transforms weekly cooking into a cultural experience.

## Quick Start

1. **New user?** Run onboarding: "Let's set up Feast" or "Onboard me for meal planning"
2. **Returning user?** Check status: "What's the meal plan status?"
3. **Planning day?** Start planning: "Let's plan next week's meals"
4. **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:

```yaml
schedule:
  notifications:
    push:
      enabled: true
      method: "pushbullet"    # or "ntfy"
```

**Supported methods:**

- **Pushbullet** — Requires the `pushbullet-notify` skill 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](references/onboarding.md) for the full flow.

Essential questions:
1. Location (for seasonality, units, stores)
2. Household size & portion needs
3. Week structure (start day, cooking days, cheat day)
4. Dietary requirements & phase
5. Equipment & cooking confidence
6. Preferences (cuisines, spice, budget)

Save to `workspace/meals/profile.yaml`.

### Planning (Thursday)

1. Check user profile
2. Review history (avoid recent repeats)
3. Check upcoming cultural events (see [references/events.md](references/events.md))
4. Check seasonality for location
5. Select 6-7 meals with:
   - Cuisine variety
   - Ingredient overlap
   - Balanced nutrition
   - Mix of quick/involved
6. **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](references/theme-research.md)). Include full tracklist with links.
   - **Setting the Scene:** How to serve, what to drink, atmosphere tips.
7. Draft plan to `workspace/meals/weeks/YYYY-MM-DD.md` (all content embedded in this single file)
8. Present summary (themes only, not full reveals)

### Confirmation (Friday)

1. Present draft plan with themes
2. Allow amendments
3. Mark as confirmed
4. Set up daily reveal reminders

### Shopping List (Saturday)

1. Generate from confirmed plan
2. Optimise:
   - Group by category
   - Combine overlapping ingredients
   - Check pack sizes vs needs
   - Flag seasonal items
3. **Price check key ingredients** (see [references/price-checking.md](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)
4. Present for review with price guidance
5. Allow amendments
6. Mark as approved

### Daily Reveal

1. Check it's a cooking day
2. 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
3. Optional morning hint for anticipation

### Review (End of Week)

1. For each meal: rating (1-5), notes
2. Update history
3. Identify favourites → add to favourites
4. Identify failures → add to failures
5. Capture improvements for system
6. 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](references/conversions.md).

## Authenticity Guidelines

When researching cuisines:
1. Search in the original language where possible
2. Look for recipes from native sources, not just English food blogs
3. **Identify the specific region of origin** — not just "Thai food" but "Northern Thai, Chiang Mai style"
4. **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](references/theme-research.md) for guidance
5. **Research the region itself** — history, current events, social context, what it's famous for
6. Note cultural context and any associated events
7. Respect dietary traditions (e.g., no pork in Middle Eastern themes)
8. **Embed everything in the week plan** — recipes, themes, music, and context all go in the single week file

See [references/cuisines/](references/cuisines/) for per-cuisine guides.

## Templates

- [templates/profile.yaml](templates/profile.yaml) — User profile
- [templates/week.md](templates/week.md) — Weekly plan with embedded recipes, themes, music, and shopping list
- [templates/shopping-list.md](templates/shopping-list.md) — Standalone shopping list format (for reference; usually embedded in week)

## References

- [references/onboarding.md](references/onboarding.md) — User onboarding guide
- [references/theme-research.md](references/theme-research.md) — How to research cultural themes and curate music
- [references/price-checking.md](references/price-checking.md) — Smart shopping and price comparison guidance
- [references/events.md](references/events.md) — Cultural events calendar for themed planning
- [references/nutrition.md](references/nutrition.md) — Dietary phases and balanced meal guidance
- [references/conversions.md](references/conversions.md) — Unit conversion tables
- [references/cuisines/](references/cuisines/) — Per-cuisine research guides
- [references/seasonality/](references/seasonality/) — Regional seasonal produce

## Scripts

### History Tracking

After a meal is revealed and cooked, update history:

```bash
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 

... (truncated)
general

Comments

Sign in to leave a comment

Loading comments...