The shape of a recipe

A recipe is a .ckl.md file: a block of frontmatter, any prose you want to keep — notes, background, serving suggestions — and the method itself in a fenced code block marked ckl.

---
title: Pasta Aglio e Olio
description: Classic Italian pasta with garlic and olive oil
tags: pasta, vegetarian, quick
prepTime: 5
cookTime: 15
---

prepTime and cookTime are in minutes. Inside the ckl block, a recipe reads top to bottom in the order a cook works:

  1. What you need — servings, ingredients and equipment, declared up front.
  2. What you do — one step per line, each with its numbers.
  3. What must be true — checks such as an internal temperature, written right after the step they verify.

A few rules hold everywhere:

  • Every line is one statement and starts with a keyword.
  • Ingredient and equipment names are in double quotes: "olive oil".
  • Every number carries its unit, with no space: 500g, 180C, 6min.
  • Temperatures are in Celsius. There is no Fahrenheit.
  • A line starting with # is a comment. It is ignored by the checker but shown to readers of the source.

Declarations

servings

How many portions the recipe makes. Required, and a whole number.

servings 4

ingredient

A name and an exact quantity. Every ingredient a step uses must be declared first (E102), and every declared ingredient must be used (E106).

ingredient "chicken breast" 600g
ingredient "olive oil" 30ml
ingredient "garlic" 3cloves

Names should match an entry in the ingredient database — that is how the checker knows chicken is poultry, and how the site links each ingredient to its page.

Equipment

Equipment is declared with its type, a quoted name, and an optional size. The name must exist in the equipment database (E104).

pan "cast iron skillet" 30cm
pot "dutch oven" 5l
oven "oven"
bowl "mixing bowl" 3l
knife "chef's knife"
sheet "baking sheet" 46cm
refrigerator "refrigerator"
TypeWhat it is
panA flat cooking surface — skillets, sauté pans, baking dishes
potA deep vessel — stock pots, saucepans, dutch ovens
ovenAn enclosed heat source
bowlAn unheated vessel for mixing and holding
knifeRequired before any cut (E401)
sheetA flat tray you arrange things on
refrigeratorRequired before any chill (E402)

Steps refer to equipment by its type — in pan, not in "cast iron skillet". When a recipe needs two bowls or two pans at once, give each its own name with stage.

Techniques

Most of a method is techniques: one keyword that names what a cook does, followed by what it is done to and how.

<technique> <what…>
    [in <equipment>] [with <ingredients…>] [on "<base>"]
    [at <temperature>] [for <duration>]
  • what — one or more quoted ingredients, or the name of a stage.
  • in — the equipment it happens in.
  • with — ingredients that go in alongside: the fat, the seasoning, the cooking liquid.
  • on — a base the others are arranged on, for assemble.
  • at and for — the temperature and the time.

Every clause is optional and they can come in any order, but give the numbers whenever there are numbers to give: they are what turn a step into a timer on the recipe page.

sear "beef steak" in pan with "olive oil" "salt" "black pepper" at 190C for 8min
saute "onion" "carrot" "celery" in pot with "olive oil" at 140C for 6min
boil "spaghetti" in pot with "water" "salt" at 100C for 10min
braise "beef steak" in pot with "tomato" "beef stock" for 90min
bloom "garlic" "cumin" "paprika" in pan for 2min
assemble "tomato" "basil" on "bread"
TechniqueUse it for
searHigh heat to build a browned crust
sauteQuick cooking in a little fat over medium-high heat
fryCooking in a layer or bath of hot oil
roastDry oven heat around the food, for even browning
bakeDry oven heat for doughs, batters and assembled dishes
toastDrying and browning a surface — bread, nuts, spices
renderMelting the fat out of meat over low, steady heat
boilCooking submerged in water at a rolling 100 °C
simmerCooking in liquid just below the boil
braiseLong, slow cooking partly submerged in liquid
poachGentle cooking in liquid well below a simmer
sweatSoftening aromatics in fat without browning
bloomWaking up spices briefly in hot fat
infuseSteeping an aromatic in warm fat or liquid
seasonAdding salt, acid, spice or herbs to a component
tossCoating components evenly with a dressing or sauce
blendProcessing until smooth or uniform
assembleBringing finished components together on a base
dustScattering a fine powder over a surface

A technique's at is the temperature it runs at. If the same equipment was just set to a different temperature with heat, the two numbers contradict each other and the checker stops (E302).

Heat, time and checks

heat and cool

Set equipment to a temperature. heat is how a recipe preheats — most often the oven, before a bake or roast. cool brings equipment or a stage down to a temperature.

heat oven to 200C
cool zabaione to 15C

rest and wait

rest lets food stand after cooking — for meat, so the juices settle before it is cut. wait is a pause in the middle of a method. Both take a duration.

rest 5min
wait 30s

Two in a row is an error (E301): say the total once. A rest or wait over two hours is a warning (W301) — past that point, holding food at room temperature is a food-safety decision, and the step should probably be a chill.

until: internal temperature

States the internal temperature the food from the previous step must reach. This is where CKL enforces food safety.

until internal_temp >= 74C
FoodMinimumChecked
Poultry74 °CYes — lower is an error (E101); no check at all is a warning (W101)
Ground meat71 °CNot yet — state it yourself
Whole cuts and fish63 °CNot yet — state it yourself

There is no way to override the poultry check, and there will not be one.

reduce

Concentrates a liquid by simmering it. Every reduce gives a duration and the state it is aiming for.

reduce 3min until au_sec
reduce 90min until melded
TargetMeaningTypical use
au_secNearly dry; alcohol cooked off, fond dissolvedWine after deglazing (2–5 min)
nappeCoats the back of a spoonPan sauces, stock reductions
thickenedVisibly less volume, more bodyTomato sauces
concentratedMuch reduced, flavour intensifiedGlazes
meldedFlavours fully integrated over long cookingRagù, braises (60 min and up)
glossyShiny and emulsifiedButter-mounted sauces

Any other target is an error (E501).

deglaze

Pours liquid into a hot pan to lift the browned fond from the bottom. The pan should have been heated earlier in the method (W002).

deglaze pan with "white wine"

The older form: apply

Before techniques, a method was written as mechanical steps: heat the pan, apply each ingredient, wait.

heat pan to 180C
apply "olive oil" to pan
apply "chicken breast" to pan
wait 6min

This still works, and applying food to equipment that was never heated is a warning (W001). But it cannot say which technique is happening — the same three lines could be a sear or a sauté — so new recipes should use a technique instead.

Preparation

cut

Cuts an ingredient in a named style, with an optional finished size. A knife must be declared (E401).

cut "onion" style dice size 5mm
cut "garlic" style mince

Styles: dice, slice, mince, chop, julienne, brunoise, chiffonade, grate, crush, pound.

mix and knead

Work the contents of a vessel until they reach a state. mix can also heat while it mixes.

mix bowl until combined
mix zabaione while heating to 65C until smooth
knead dough until elastic

For mix: combined, uniform, smooth, cohesive, emulsified, homogeneous, stiff. For knead: elastic, smooth, tacky.

shape

Forms a mixture into pieces, with an optional size or weight for each one. Shaping something that was never mixed is a warning (W201).

shape bowl into balls size 3cm
shape bowl into patties weight 120g

Forms: balls, patties, logs, rounds, discs, sheets, strips, dumplings, loaves, rolls, squares, wedges.

coat, soak and drain

coat gives an ingredient a surface layer — several in a row make a breading station. soak submerges an ingredient in a liquid for a time. drain pours the free liquid off a vessel.

coat "chicken breast" with "flour"
coat "chicken breast" with "eggs"
coat "chicken breast" with "breadcrumbs"
soak "chickpeas" in "water" 480min
drain pot

Several components

Some dishes are built from parts made separately — a sauce and a filling, or tiramisu's zabaione and whipped cream. Each part gets its own named vessel.

stage

Declares a vessel with a name of its own. From then on, the name can be used anywhere equipment can, and it stands for whatever is in that vessel.

stage zabaione bowl "mixing bowl" 3l
stage whipped_cream bowl "mixing bowl" 2l

The form is stage <name> <type> "<equipment name>" [size]. Without stages a recipe has one of each type of equipment; with them it can have as many bowls as the dish needs.

combine and layer

combine merges two or more stages into another. layer builds a layered dish from ingredients and stages, in order.

stage cream_mix bowl "mixing bowl" 5l
combine zabaione whipped_cream in cream_mix
mix cream_mix until folded

stage dish pan "baking dish" 24cm
layer "ladyfingers" cream_mix "cocoa powder" in dish

A combine that names a stage that was never declared is an error (E107).

Baking and pastry

Baking asks things of a notation that stove cooking does not: steps whose endpoint is a state rather than a time, the difference between stirring and folding, portions measured by weight, and refrigeration as a step of its own. The reasoning behind each statement here — including two things deliberately left out — is in the baking design notes.

cream

Beats fat with sugar until it holds air. There is no duration on purpose: how long it takes depends on the mixer, and the endpoint does not.

cream "butter" "sugar" until fluffy
cream "butter" "brown sugar" in dough until pale

States: light, fluffy, pale, creamy, aerated, ribbon (E502).

add

Adds an ingredient to a vessel, optionally in several portions and optionally with the mixer running.

add "vanilla extract" to dough
add "eggs" to dough in 2additions while mixing

in <n>additions needs at least 2. In new recipes, add is preferred over apply for anything going into a mixture.

fold

Combines gently, keeping the air an earlier step beat in. Not a synonym for mix — the difference is the point.

fold "dark chocolate" into dough
fold whipped_cream into zabaione until streak_free

What is folded in can be ingredients or stages. The optional state is one of combined, uniform, streak_free, marbled, folded (E502).

portion

Divides a batch into equal pieces — what makes every cookie on the sheet finish at the same moment.

portion dough into balls weight 80g count 12
portion dough into rolls weight 90g

weight is the mass of each piece, count is how many, and size is the finished dimension. At least one of weight or count is required, and a weight times count that is more than the recipe contains is a warning (W202).

chill

Refrigerates, as an active step. rest and wait are at room temperature and are not substitutes.

chill dough in refrigerator for 1440min to 4C

in must name a declared refrigerator (E402). for gives the time and the optional to gives a target temperature.

place and tap

place arranges items on a surface, with the spacing between them measured centre to centre. tap raps a sheet on the counter a number of times — to collapse a cookie's centre, or knock large bubbles out of a batter.

place dough on sheet spacing 50mm
tap sheet 2times

Changing the oven mid-bake

There is no separate statement for this. Each bake states the temperature it runs at, so the second one is the change:

heat oven to 180C
bake dough in oven at 180C for 9min
tap sheet 2times
bake dough in oven at 170C for 4min

What is not allowed is two different temperatures for the same equipment at the same moment — heat oven to 170C followed directly by bake … at 180C is an error (E302), because one of them must be wrong.

Doneness cues go in the notes

until fluffy is in the language; until golden_edges is not, and that is deliberate. A creaming state is something you work towards, with no honest time to give instead. A doneness cue is an observation about a step whose controls — 180 °C, 9 minutes — are already stated, and it does not travel: how golden depends on the sugar, the pan and the oven. Write cues as prose under ## Notes in the recipe file.

Units

MeasureUnitsExample
Massg, kg500g
Volumeml, l30ml
TemperatureC180C
Timemin, s6min, 30s
Lengthmm, cm5mm, 30cm
Countcloves, times, additions3cloves, 2times, 3additions

There are no hours: a long braise is 150min. A clause that takes one kind of measure rejects another — a weight given in cm is an error (E503).

A complete recipe

The method of pan-seared chicken breast:

servings 4

ingredient "chicken breast" 600g
ingredient "olive oil" 30ml
ingredient "salt" 5g
ingredient "black pepper" 2g
ingredient "butter" 20g
ingredient "garlic" 10g
ingredient "thyme" 3g

pan "cast iron skillet" 30cm
knife "chef's knife"

cut "garlic" style mince size 2mm

# Sear, then baste with butter, garlic and thyme
sear "chicken breast" in pan with "olive oil" "salt" "black pepper" at 180C for 6min
sear "chicken breast" in pan with "butter" "garlic" "thyme" for 6min
until internal_temp >= 74C
rest 5min

It passes the checker because every ingredient and piece of equipment is declared before it is used, the knife is declared before the cut, each step gives its numbers, and the chicken is checked at the poultry minimum of 74 °C before it rests.