Language Reference
Every statement in CKL — what it means in the kitchen, how to write it, and what the checker holds it to.
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:
- What you need — servings, ingredients and equipment, declared up front.
- What you do — one step per line, each with its numbers.
- 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 4ingredient
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" 3clovesNames 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"| Type | What it is |
|---|---|
pan | A flat cooking surface — skillets, sauté pans, baking dishes |
pot | A deep vessel — stock pots, saucepans, dutch ovens |
oven | An enclosed heat source |
bowl | An unheated vessel for mixing and holding |
knife | Required before any cut (E401) |
sheet | A flat tray you arrange things on |
refrigerator | Required 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"| Technique | Use it for |
|---|---|
sear | High heat to build a browned crust |
saute | Quick cooking in a little fat over medium-high heat |
fry | Cooking in a layer or bath of hot oil |
roast | Dry oven heat around the food, for even browning |
bake | Dry oven heat for doughs, batters and assembled dishes |
toast | Drying and browning a surface — bread, nuts, spices |
render | Melting the fat out of meat over low, steady heat |
boil | Cooking submerged in water at a rolling 100 °C |
simmer | Cooking in liquid just below the boil |
braise | Long, slow cooking partly submerged in liquid |
poach | Gentle cooking in liquid well below a simmer |
sweat | Softening aromatics in fat without browning |
bloom | Waking up spices briefly in hot fat |
infuse | Steeping an aromatic in warm fat or liquid |
season | Adding salt, acid, spice or herbs to a component |
toss | Coating components evenly with a dressing or sauce |
blend | Processing until smooth or uniform |
assemble | Bringing finished components together on a base |
dust | Scattering 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 15Crest 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 30sTwo 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| Food | Minimum | Checked |
|---|---|---|
| Poultry | 74 °C | Yes — lower is an error (E101); no check at all is a warning (W101) |
| Ground meat | 71 °C | Not yet — state it yourself |
| Whole cuts and fish | 63 °C | Not 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| Target | Meaning | Typical use |
|---|---|---|
au_sec | Nearly dry; alcohol cooked off, fond dissolved | Wine after deglazing (2–5 min) |
nappe | Coats the back of a spoon | Pan sauces, stock reductions |
thickened | Visibly less volume, more body | Tomato sauces |
concentrated | Much reduced, flavour intensified | Glazes |
melded | Flavours fully integrated over long cooking | Ragù, braises (60 min and up) |
glossy | Shiny and emulsified | Butter-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 6minThis 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 minceStyles: 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 elasticFor 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 120gForms: 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 potSeveral 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" 2lThe 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 dishA 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 paleStates: 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 mixingin <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_freeWhat 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 90gweight 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 4Cin 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 2timesChanging 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 4minWhat 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
| Measure | Units | Example |
|---|---|---|
| Mass | g, kg | 500g |
| Volume | ml, l | 30ml |
| Temperature | C | 180C |
| Time | min, s | 6min, 30s |
| Length | mm, cm | 5mm, 30cm |
| Count | cloves, times, additions | 3cloves, 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 5minIt 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.