agentsclimarketplace

Meal setup

Skill scurry/meals-agent/.claude/skills/meal-setup

Claude or other agent skills to help plan, make, and shop for meals

Install
npx -y skills add scurry/meals-agent --skill meal-setup

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when initializing the Meal OS project for the first time. Triggered by "/meal-setup" or "set up meal OS" or when any other meal skill fails because docs/ directories or canonical-ingredients.yaml are missing.

SKILL.md

7.9 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

/meal-setup — Project Initialization

Create the Meal OS directory structure, seed data/config.yaml with household preferences, and seed data/canonical-ingredients.yaml with the core ingredient set.

Announce at start: "Setting up Meal OS project..."

Step 1: Check Current State

Check what already exists to avoid overwriting:

ls data/ 2>/dev/null && echo "data exists" || echo "data missing"
ls data/config.yaml 2>/dev/null && echo "config exists" || echo "config missing"
ls data/canonical-ingredients.yaml 2>/dev/null && echo "yaml exists" || echo "yaml missing"

Report findings to the user before proceeding.

Step 2: Create Directory Structure

Run:

mkdir -p data/recipes data/flyers data/meal-plans data/shopping-lists data/receipts/images/processed samples/flyers samples/meal-plans samples/shopping-lists samples/receipts
  • data/recipes/ holds family recipes (local household data, gitignored)
  • data/ directories are gitignored (local household data)
  • samples/ directories hold sanitized examples safe to commit

Step 3: Create CLAUDE.md

If CLAUDE.md already exists at repo root: Skip this step — the user may have customized it.

If it does not exist, write CLAUDE.md at the project root:

# Meal OS

Personal meal planning system for a family.

## Household Configuration

User-specific constraints (diet, excluded ingredients, stores, thresholds) live in `data/config.yaml`.
All skills read this file at startup. See `samples/config.sample.yaml` for the format and defaults.

If `data/config.yaml` is missing, run `/meal-setup` to create it.

## Directory Structure

### data/ — local household data (gitignored)
- data/config.yaml — household preferences (diet, stores, thresholds)
- data/recipes/ — one markdown file per recipe (from /meal-add)
- data/canonical-ingredients.yaml — authoritative ingredient normalization reference
- data/flyers/ — parsed weekly store flyers (from /meal-flyer)
- data/meal-plans/ — weekly meal plans (from /meal-plan)
- data/shopping-lists/ — aisle-grouped shopping lists (from /meal-plan)
- data/receipts/ — receipt images, price history ledger, and OCR aliases (from /meal-receipt)

### samples/ — sanitized examples (tracked in git)
- samples/flyers/, samples/meal-plans/, samples/shopping-lists/, samples/receipts/

## Skills
- /meal-add — recipe intake and normalization
- /meal-flyer — store flyer parsing + loss leader detection
- /meal-plan — weekly meal planning + shopping list generation
- /meal-receipt — receipt OCR, price tracking, and alias learning

Step 4: Create config.yaml

If the file already exists: Ask — "data/config.yaml already exists. Overwrite with defaults (loses your customizations), or skip?"

If skip, go to Step 5.

If overwrite or creating new, ask the user these questions (use defaults if they say "use defaults"):

  1. "What diet style? (e.g., mediterranean, whole30, paleo, keto, vegetarian, none)" — default: mediterranean
  2. "Any ingredients to always exclude? (e.g., tuna, shellfish)" — default: none
  3. "What grocery stores do you shop at?" — default: none (user must provide at least one)

Write data/config.yaml using the user's answers:

# Meal OS — Household Configuration
# Edit this file to customize your meal planning preferences.

diet: [user's diet choice]

excluded_ingredients:
  - [user's excluded items, or omit section if none]

stores:
  - [user's stores]

rotation_target:
  min: 12
  max: 15

ingredient_thresholds:
  target: 18
  warning: 25
  too_complex: 35

Step 5: Create canonical-ingredients.yaml

If the file already exists: Ask — "canonical-ingredients.yaml already exists. Overwrite with defaults (loses any custom entries), or skip?"

If skip, go to Step 6.

If overwrite or creating new, write data/canonical-ingredients.yaml:

# Meal OS — Canonical Ingredient Reference
# Each entry: display_name, aisle, pantry_staple flag
# snake_case IDs are used in recipe files and flyer mappings.

proteins:
  chicken_thigh:
    display_name: Chicken Thighs
    aisle: Meat & Seafood
    pantry_staple: false
  salmon:
    display_name: Salmon
    aisle: Meat & Seafood
    pantry_staple: false
  shrimp:
    display_name: Shrimp
    aisle: Meat & Seafood
    pantry_staple: false
  chickpea:
    display_name: Chickpeas (canned)
    aisle: Canned & Dry Goods
    pantry_staple: false
  lentil:
    display_name: Lentils
    aisle: Canned & Dry Goods
    pantry_staple: true
  egg:
    display_name: Eggs
    aisle: Dairy & Eggs
    pantry_staple: false
  greek_yogurt:
    display_name: Greek Yogurt
    aisle: Dairy & Eggs
    pantry_staple: false
  white_bean:
    display_name: White Beans (canned)
    aisle: Canned & Dry Goods
    pantry_staple: false

vegetables:
  zucchini:
    display_name: Zucchini
    aisle: Produce
    pantry_staple: false
  bell_pepper:
    display_name: Bell Peppers
    aisle: Produce
    pantry_staple: false
  cherry_tomato:
    display_name: Cherry Tomatoes
    aisle: Produce
    pantry_staple: false
  cucumber:
    display_name: Cucumbers
    aisle: Produce
    pantry_staple: false
  spinach:
    display_name: Spinach / Baby Spinach
    aisle: Produce
    pantry_staple: false
  kale:
    display_name: Kale
    aisle: Produce
    pantry_staple: false
  green_bean:
    display_name: Green Beans
    aisle: Produce
    pantry_staple: false
  eggplant:
    display_name: Eggplant
    aisle: Produce
    pantry_staple: false
  potato:
    display_name: Potatoes
    aisle: Produce
    pantry_staple: false
  avocado:
    display_name: Avocado
    aisle: Produce
    pantry_staple: false

flavor_base:
  garlic:
    display_name: Garlic
    aisle: Produce
    pantry_staple: true
  lemon:
    display_name: Lemons
    aisle: Produce
    pantry_staple: false
  red_onion:
    display_name: Red Onion
    aisle: Produce
    pantry_staple: true
  olive_oil:
    display_name: Olive Oil
    aisle: Pantry
    pantry_staple: true

herbs_and_extras:
  feta:
    display_name: Feta Cheese
    aisle: Dairy & Eggs
    pantry_staple: false
  parsley:
    display_name: Fresh Parsley
    aisle: Produce
    pantry_staple: false
  oregano:
    display_name: Dried Oregano
    aisle: Pantry
    pantry_staple: true
  kalamata_olive:
    display_name: Kalamata Olives
    aisle: Canned & Dry Goods
    pantry_staple: false

grains:
  farro:
    display_name: Farro
    aisle: Grains & Pasta
    pantry_staple: true
  quinoa:
    display_name: Quinoa
    aisle: Grains & Pasta
    pantry_staple: true
  whole_wheat_pasta:
    display_name: Whole Wheat Pasta
    aisle: Grains & Pasta
    pantry_staple: true
  pita:
    display_name: Pita Bread
    aisle: Grains & Pasta
    pantry_staple: false

Step 6: Confirm

Output:

Meal OS setup complete!

  CLAUDE.md: [created / skipped — already exists]
  Directories created:
  - data/recipes/         ← add recipes with /meal-add (local, gitignored)
  - data/flyers/          ← parsed flyers from /meal-flyer (local, gitignored)
  - data/meal-plans/      ← generated by /meal-plan (local, gitignored)
  - data/shopping-lists/  ← generated by /meal-plan (local, gitignored)
  - data/receipts/        ← receipt OCR and price tracking with /meal-receipt (local, gitignored)
  - samples/              ← sanitized examples (tracked in git)

  config.yaml: [created / skipped — already exists]
    Diet: [diet]
    Excluded: [list or "none"]
    Stores: [list]

  canonical-ingredients.yaml: [created with N ingredients / skipped — already exists]

Next steps:
  1. Run /meal-add to add your first recipe
  2. Run /meal-flyer to import this week's store flyer
  3. Run /meal-plan to generate your first weekly plan
  4. Edit data/config.yaml anytime to change your preferences

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,970. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.