cooklang / cooklang/cookcli

Ingredient substitutions: treat interchangeable ingredients as in stock for pantry recipes

Open
#436 1 comment 0 reactions 0 assignees View on GitHub
feature request needs discussion requires spec update
Dominant language
Rust
Stars
1.4k
Forks
109
Avg merge
1d 22h
Merged PRs (30d)
19

Description

From a trialing user (Discord, 2026-08-11), as a follow-on to global aisle aliases (see the alias issue). Aliases cover *same item, different name* (bell pepper / capsicum); this is about *different items that substitute for each other* in a recipe:

> I could use butter or oil for certain cooking process. If I'm out of butter, but do have oil, I would want the API to count that ingredient as in stock!

Sketch from the conversation: some way to declare substitutions — either in the .cook file itself (e.g. an `@butter|oil{}`-style alternative) or in workspace config — so that `pantry recipes` counts a recipe as cookable when any acceptable substitute is in the pantry, and the shopping list / recipe display can show the alternative.

Needs discussion on where the declaration lives (recipe syntax would require a spec update; a workspace-level substitutions config would not) and how it interacts with aisle aliases.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the global aisle aliases issue and the existing .cook syntax and workspace configuration options. Determine where substitution declarations should live and how they interact with aliases, then specify the expected pantry-recipes, shopping-list, and recipe-display behavior before implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.