← docs

All pages

20 pages: the manual's chapters and the guides. Press / to search.

Oct 22, 2026 · slides

A Cookfile in sixty seconds

The whole language on six slides: recipe, gather, cook, placeholders, seal, chore. Press present.

Oct 22, 2026

From declaration to execution

What happens between saving a Cookfile and the first cache hit: lower, register, build the graph, execute what is ready.

Oct 22, 2026

Watch the cache work

A five-node recipe, run three times: cold, fully cached, and after one edit. Real output, replayed.

1. Installation

cook is a single Rust binary with a bundled Lua runtime and a bundled LuaRocks. No package manager to fight, no system Lua to match, no separate…

2. Your first recipe

cook init drops a minimal starter Cookfile and a .gitignore. The Cookfile is deliberately…

3. Gather and the cook step

Real builds have a shape: take input files, transform each, produce outputs, don't redo the transform if nothing changed. gather and cook describe exactly…

4. Connecting recipes

When one recipe's command reads another recipe's artifact, say so in the…

5. Tests

A test step checks the things a cook step produced. It declares no outputs; its exit code is the verdict. A test inherits the preceding cook step's outputs as…

6. Chores

Recipes build files. Chores are for everything else: clean the tree, run the formatter, deploy, open a picker. They have no gathered inputs, no outputs, and no…

7. Configuration

A config block declares knobs. The base block is unnamed; named overlays are applied on top with @name at invocation. Values are declared on the var sink…

8. Probes and data-driven fan-out

A probe is a named observation that the build graph can see: the output of a shell command, the contents of a JSON file, a recorded tool identity, a Lua…

9. Caching and cache trust

The cache is cook's center of gravity. Every cacheable unit (a step with at least one declared output) has exactly one content-addressed key, computed from…

10. Dropping into Lua

Most Cookfiles are pure surface syntax. Underneath, every Cookfile compiles to Lua, and you can reach for that API when the surface can't express what you…

11. Modules and composition

Two complementary…

12. The cook CLI

cook --help is the source of truth; this is the friendly…

13. Where to go next

The Cook Standard is the authoritative language and execution specification (RFC-2119, with a formal grammar appendix). The runnable examples are arranged in…

cook_cc

Cook C-family (C + C++) native build module. Provides step-contributor target makers (cc.bin / cc.lib / cc.shared / cc.headers) called inside a recipe body,…

cook_dotnet

cook_dotnet delegates project evaluation and compilation to the .NET SDK. workspace caches restore separately and rebuilds only changed projects and target…

cook_pnpm

Cook blessed module for pnpm-driven JS/TS monorepos. Turborepo-style task pipelines on top of Cook's content-addressed DAG — the same workspace gets remote…

cook_rust

cook_rust turns one Cargo manifest into one portable Cook seal. Cargo remains the build scheduler; the module only derives the determinants needed to share the…