Jason L Causey

Over the Thanksgiving holiday, I discovered cooklang and started experimenting with it. My first impression was “ewww”—I didn’t like that you couldn’t have ingredients without steps. Many of my own “recipes” are just a list of ingredients, so I don’t forget what flavors I used in a dish. The “steps” come from memory, or instinct, or whatever. Cooklang does not play well with this style of “recipe”.

But I started converting some recipes I’ve either written “correctly” to share, or found somewhere online. Although the conversion process is tricky sometimes (LLMs help a lot, but you have to do some editorial passes to get it just right), I ended up with a nice database of scripting-friendly recipes.

I like the idea of the point-of-use declaration syntax for keeping a recipe internally consistent. When making changes or writing a recipe in a hurry, it is easy to forget to mention an ingredient, or to forget to list an ingredient that is mentioned in the steps. Cooklang handily eliminates this problem. So, once I stopped thinking of it as a “Markdown for recipes” and started thinking of it as a computer language for recipes, I started appreciating it more. It really is a storage format, not a presentation format.

To really appreciate cooklang, you need good conversion tools. You need to be able to convert a “traditional” recipe into cooklang, and you need to be able to convert cooklang into a nice presentation format (where it looks like a traditional recipe). Luckily, the community has already created most of these tools. I wasn’t able to find a Markdown recipe to Cooklang converter though, so I started writing one that uses a few passes through Claude to convert and verify the conversion, plus handling additions of ingredients to your “aisle.conf” file. I don’t think my tool (which was largely “vibe coded” with Claude) is ready for prime-time yet, but if I polish it up a bit I may release it on Github later.

Honestly, this is the best solution I’ve found so far for the one thing that sends me down this rabbit-hole every single year: Creating a detailed and organized shopping list given a meal plan. Totally scriptable (and the cook tool does it out of the box). Nice. What I still miss is a really good looking PDF output option. I’m working on that too, and I have something that is about 85% of what I want. I guess that’s half the fun, right?