Agent skill
cooklang-formatting
Format recipes using Cooklang markup syntax. Use when creating, editing, or converting recipes to Cooklang format. Covers ingredients, equipment, timers, metadata, and file organization.
Install this agent skill to your Project
npx add-skill https://github.com/keiththompson/video-to-cooklang/tree/main/skills/cooklang-formatting
SKILL.md
Cooklang Recipe Formatting
Style Guidelines (IMPORTANT)
1. Capitalize ingredients and equipment
@Leek{1} -- correct
@leek{1} -- wrong
#Pan{} -- correct
#pan{} -- wrong
2. No adjectives inside keywords
Adjectives go BEFORE the keyword, not as part of it:
large #Pan{} -- correct
#large pan{} -- wrong
hot #Skillet{} -- correct
#hot skillet{} -- wrong
medium @Onion{1} -- correct
@medium onion{1} -- wrong
3. Prefer metric measurements
Use grams, ml, litres instead of cups. Teaspoons and tablespoons are OK:
@Flour{250%g} -- correct
@Flour{2%cups} -- wrong
@Milk{500%ml} -- correct
@Milk{2%cups} -- wrong
@Stock{1%litre} -- correct
@Stock{4%cups} -- wrong
@Butter{2%tbsp} -- OK (tbsp allowed)
@Vanilla{1%tsp} -- OK (tsp allowed)
4. Include a recipe image
Save the most appealing frame from the video as an image with the same name:
Dinner/Garlic Butter Shrimp.cook
Dinner/Garlic Butter Shrimp.jpg -- same name, .jpg extension
Quick Reference
| Symbol | Purpose | Example |
|---|---|---|
@ |
Ingredient | @Butter{30%g} |
# |
Equipment | #Frying Pan{} |
~ |
Timer | ~{5%minutes} |
--- |
Metadata block | YAML frontmatter |
== |
Section header | == Sauce == |
Ingredient Syntax
@ingredient -- name only (to taste)
@ingredient{quantity} -- with amount, no unit
@ingredient{quantity%unit} -- full specification
@multi word ingredient{} -- braces required for multi-word
@ingredient{qty%unit}(prep) -- with preparation instructions
Examples
@Salt{}
@Eggs{3}
@Butter{30%g}
@Chicken Breast{500%g}
@Garlic{3%cloves}(minced)
@Onion{1}(diced)
Notes on Ingredients
- For pantry staples (salt, pepper, oil), just use
@Salt{}with no quantity - For optional ingredients, write "optional" in the text:
Add optional @Chilli Flakes{1%tsp} if desired. - Don't use
-,?, or&prefixes - they're not supported by most Cooklang apps - Don't mark cooking water as an ingredient - water for boiling/blanching is not a shopping list item:
cook
Bring a large #Pot{} of water to a boil. -- correct (plain text) Bring a large #Pot{} of @Water{} to a boil. -- wrong (creates ingredient)
Equipment Syntax
#Pot{}
#Frying Pan{}
#Mixing Bowl{}
#Baking Sheet{}
Adjectives go before, not inside:
large #Pot{} -- correct
#large pot{} -- wrong
Timer Syntax
~{5%minutes}
~{30%seconds}
~{1%hour}
~resting{10%minutes} -- named timer
Important: Use single values only, NOT ranges. Write ~{15%minutes} not ~{10-15%minutes}.
For variable times, pick the middle value or write it in text: "about 10-15 minutes".
Recipe Structure
Metadata (YAML Frontmatter)
---
source: https://example.com/recipe
servings: 4
prep_time: 15 minutes
cook_time: 30 minutes
---
Note: servings must be a number, not text.
Steps
Each paragraph becomes a numbered step. Separate steps with blank lines:
Preheat #Oven{} to 190°C.
Season @Chicken Breast{500%g} with @Salt{} and @Pepper{}.
Bake for ~{25%minutes} until internal temperature reaches 75°C.
Sections
Use == for complex recipes with multiple parts:
== Marinade ==
Combine @Soy Sauce{45%ml} and @Honey{30%g} in a #Bowl{}.
== Main Dish ==
Cook @Chicken{500%g} in the marinade.
Notes
Use > prefix for tips:
> For extra flavor, marinate overnight.
File Organization
Save recipes to category folders using Title Case:
Breakfast/Fluffy Pancakes.cook
Lunch/Greek Salad.cook
Dinner/Garlic Butter Shrimp.cook
Categories
- Breakfast: Morning meals, eggs, pancakes, smoothies
- Lunch: Salads, sandwiches, soups, light meals
- Dinner: Main courses, proteins, pasta, substantial meals
- Sides: Accompaniments, vegetables
- Sauces: Dressings, marinades, condiments
- Desserts: Sweets, baked goods
- Drinks: Beverages, cocktails
CLI Commands
If the cook CLI is installed:
cook recipe "path/to/recipe.cook" # Parse and display
cook recipe "path/to/recipe.cook:2" # Scale by 2x
cook shopping-list *.cook # Generate shopping list
cook doctor validate # Check for syntax errors
Common Patterns
Simple Recipe
---
source: https://tiktok.com/@creator/video/123
servings: 2
---
Heat @Olive Oil{2%tbsp} in a large #Skillet{} over medium heat.
Add @Garlic{3%cloves}(minced) and cook for ~{30%seconds}.
Add @Prawns{450%g} and cook for ~{2%minutes} per side until pink.
Season with @Salt{} and @Pepper{} to taste.
Recipe with Sections
---
servings: 4
---
== Sauce ==
Whisk @Soy Sauce{3%tbsp}, @Honey{2%tbsp}, and @Sesame Oil{1%tsp}.
== Stir Fry ==
Heat #Wok{} over high heat. Cook @Chicken{500%g}(sliced) for ~{5%minutes}.
Add sauce and toss to coat.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
obsidian-clipper-template-creator
Guide for creating templates for the Obsidian Web Clipper. Use when you want to create a new clipping template, understand available variables, or format clipped content.
claude-code-expert
Especialista profundo em Claude Code - CLI da Anthropic. Maximiza produtividade com atalhos, hooks, MCPs, configuracoes avancadas, workflows, CLAUDE.md, memoria, sub-agentes, permissoes e integracao com ecossistemas.
lex
Centralized 'Truth Engine' for cross-jurisdictional legal context (US, EU, CA) and contract scaffolding.
odoo-inventory-optimizer
Expert guide for Odoo Inventory: stock valuation (FIFO/AVCO), reordering rules, putaway strategies, routes, and multi-warehouse configuration.
android_ui_verification
Automated end-to-end UI testing and verification on an Android Emulator using ADB.
seo-cannibalization-detector
Analyzes multiple provided pages to identify keyword overlap and potential cannibalization issues. Suggests differentiation strategies. Use PROACTIVELY when reviewing similar content.
Didn't find tool you were looking for?