recipes
Add, update, and manage family recipes in the recipe book app
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Add, update, and manage family recipes in the recipe book app
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | recipes |
| description | Add, update, and manage family recipes in the recipe book app |
The family recipe book lives at apps/recipes/ and is deployed to recipes.benjaminshafii.com.
Recipes are stored as Markdown files with YAML front matter in apps/recipes/content/recipes/.
When a user says "add this recipe" or provides recipe details, create a new .md file:
# Create the recipe file
cat > apps/recipes/content/recipes/{slug}.md << 'EOF'
---
title: "Recipe Title"
slug: recipe-slug
description: "Brief description"
tags: [tag1, tag2]
yield:
amount: 4
unit: servings
prepTime: 15
cookTime: 30
totalTime: 45
variables:
servings: 4
ingredients:
- id: ingredient-id
name: Ingredient Name
amount: 100
unit: g
prep: optional prep notes
notes: |
- Family tips go here
createdAt: 2025-01-07
updatedAt: 2025-01-07
author: Family
---
## Steps
1. **Action** - Instruction with **100g ingredient name**.
2. **Next action** - More instructions.
EOF
ls apps/recipes/content/recipes/*.md
grep -l "ingredient" apps/recipes/content/recipes/*.md
| Type | Unit | Never Use |
|---|---|---|
| Weight | g (grams) | cups, tbsp, tsp, oz, lb |
| Volume (liquids) | ml | cups, fl oz |
| Temperature | °F (Fahrenheit) | Celsius |
| Count | whole, pieces | - |
Conversions Reference:
Each ingredient MUST have:
id: kebab-case identifier (e.g., ground-beef)name: Display name (e.g., Ground beef)amount: Number (e.g., 450)unit: Unit string (e.g., g)prep: Optional prep notes (e.g., diced, minced)ingredients:
- id: ground-beef
name: Ground beef
amount: 450
unit: g
- id: onion
name: Onion
amount: 150
unit: g
prep: diced
- id: garlic
name: Garlic
amount: 15
unit: g
prep: minced
Steps are written in Markdown under ## Steps heading.
Each step should:
## Steps
1. **Preheat oven** - Set to 375°F.
2. **Brown meat** - Heat **30ml olive oil** in large skillet. Add **450g ground beef**, cook 8-10 min until browned.
3. **Build sauce** - Add **150g diced onion**, cook 5 min. Add **15g minced garlic**, cook 1 min.
The variables field defines what the user can adjust in the UI. The first variable is used as the primary scaler.
variables:
servings: 4 # User can change this, all ingredients scale proportionally
For ratio-based recipes (like lemonade), use the key ingredient:
variables:
lemonJuice: 22 # Scale based on lemon juice amount
Use lowercase, hyphenated tags:
italian, mexican, asian, americanbreakfast, lunch, dinner, dessert, snack, drinksvegetarian, vegan, gluten-free, dairy-freequick, meal-prep, family-favorite, holidaybaked, grilled, slow-cooker, one-potStore images in apps/recipes/content/recipes/images/ with the recipe slug:
image: images/garlic-butter-pasta.jpg
If no image, omit the field (a placeholder will show).
---
title: "Garlic Butter Pasta"
slug: garlic-butter-pasta
description: "Simple weeknight pasta with garlic, butter, and parmesan"
tags: [italian, pasta, quick, vegetarian]
yield:
amount: 2
unit: servings
prepTime: 10
cookTime: 15
totalTime: 25
variables:
servings: 2
ingredients:
- id: spaghetti
name: Spaghetti
amount: 200
unit: g
- id: butter
name: Butter
amount: 60
unit: g
- id: garlic
name: Garlic
amount: 20
unit: g
prep: minced
- id: parmesan
name: Parmesan
amount: 30
unit: g
prep: grated
- id: parsley
name: Fresh parsley
amount: 10
unit: g
prep: chopped
- id: salt
name: Salt
amount: 5
unit: g
- id: black-pepper
name: Black pepper
amount: 2
unit: g
notes: |
- Reserve pasta water before draining - it helps the sauce come together
- Don't brown the garlic, just cook until fragrant
- Add red pepper flakes for heat
createdAt: 2025-01-07
updatedAt: 2025-01-07
author: Family
---
## Steps
1. **Boil water** - Bring large pot of salted water to boil (start this first while prepping).
2. **Prep ingredients** (while water heats) - Mince **20g garlic**, grate **30g parmesan**, chop **10g parsley**.
3. **Cook pasta** - Add **200g spaghetti** to boiling water, cook 8-10 min until al dente. Reserve 120ml pasta water before draining.
4. **Make garlic butter** (while pasta cooks) - Melt **60g butter** in large pan over medium heat. Add **20g minced garlic**, sauté 1-2 min until fragrant (don't brown).
5. **Combine** - Toss drained pasta in garlic butter. Add **30g parmesan** and splash of pasta water. Toss until creamy.
6. **Season and serve** - Add **5g salt** and **2g black pepper** to taste. Top with **10g parsley**. Serve immediately.
Edit the notes field in the front matter:
# Open the recipe file and add to notes section
Find and update the ingredient in the ingredients array, then update any step references.
Add to the tags array in front matter.
Update both yield.amount and variables.servings (or the primary variable).
Before saving a recipe, verify:
slug is kebab-case and uniqueid, name, amount, unittotalTime = prepTime + cookTimeThe recipe will appear on recipes.benjaminshafii.com after the next deployment.
To test locally:
cd apps/recipes && pnpm dev
To trigger deployment:
git add apps/recipes/content/recipes/
git commit -m "Add recipe: Recipe Name"
git push
Create and manage isolated git worktrees safely.
Opinionated workflow for submodule development + PRs + control-center pointer bumps.
Store Apple notarization IDs in Keychain and notarize/staple OpenWork DMGs locally.
Sync control-center master and update submodule pointers safely.
Require every OpenCode plugin to expose get_skills and get_version tools.
Use client.app.log() instead of console.log in OpenCode plugins