
cooklang-formatting
by keiththompson
A Claude Code plugin that converts recipe videos from TikTok, Instagram, YouTube, and other platforms into Cooklang format.
SKILL.md
name: cooklang-formatting description: Format recipes using Cooklang markup syntax. Use when creating, editing, or converting recipes to Cooklang format. Covers ingredients, equipment, timers, metadata, and file organization.
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:
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.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
