3. Upgrade Capabilities
Add stacks to your recipe to declare additional capabilities. Stacks are monotonic: they add power without removing what was already available.
Adding stacks
The same recipe can declare additional capabilities by opting into stacks. Each stack signals a contract that tools may rely on. In this form, the recipe explicitly declares which capabilities it supports.
{
"$schema": "https://spec.soustack.org/soustack.schema.json",
"name": "Simple Pancakes",
"stacks": {
"prep": 1,
"scaling": 1,
"timing": 1
},
"yield": {
"amount": 4,
"unit": "servings"
},
"ingredients": [
{
"item": "flour",
"quantity": { "amount": 2, "unit": "cups" }
},
{
"item": "eggs",
"quantity": { "amount": 2 }
},
{
"item": "milk",
"quantity": { "amount": 1.5, "unit": "cups" }
}
],
"instructions": [
{
"id": "mix",
"text": "Whisk all ingredients together.",
"timing": {
"duration": "PT5M",
"type": "active"
}
},
{
"id": "cook",
"text": "Cook on a hot griddle until golden.",
"timing": {
"duration": "PT10M",
"type": "active"
}
}
]
}Applications may choose which stacks they understand, while recipes remain portable and incrementally upgradable.
Available stacks
Common stacks include:
- prep — Ingredient prep annotations and mise en place
- scaling — Scaling metadata for intelligent yield changes
- timing — Active/passive time tracking and scheduling
- equipment — Required equipment and capacity
- storage — Storage methods and reheating guidance
- illustrated — Images and media for presentation
See the stack documentation in the specification for complete details.
How stacks work
Stacks are declared in the stacks object with version numbers. For example:
"stacks": {
"prep": 1,
"scaling": 1,
"timing": 1
}When you declare a stack, you commit to providing the data structures that stack requires. Applications that understand that stack can rely on those structures being present and valid.
Profiles
Profiles are named conformance bundles that combine multiple stacks. They act as trust badges: when a recipe declares a profile, it guarantees that specific data structures and behaviors are present.
See the adoption ladder to understand profile progression from Lite to Timed.
Next steps
Once you've upgraded your recipe with stacks, you can import the rest of your recipe collection using ingestion tools.