Meal setup
Claude or other agent skills to help plan, make, and shop for meals
npx -y skills add scurry/meals-agent --skill meal-setupAssembled 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"):
- "What diet style? (e.g., mediterranean, whole30, paleo, keto, vegetarian, none)" — default:
mediterranean - "Any ingredients to always exclude? (e.g., tuna, shellfish)" — default: none
- "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.