Ingredients Studio¶
The AI skills behind the ingredient work on this site: one router, ingredient-studio, in front of a set of specialists. The router holds no chemistry. It checks each request against the ingredient registry, proposes who should do the work and in which mode, waits for approval, then runs the specialists and combines what they return. Each specialist has its own guide (listed at the bottom of this page) for the detail.
Download the router · v2.2 · CC0 · specialists: Maillard v8.1, Treatments v1.2, Sensory v1. Installing them is covered at the end of this page. Specialists also run on their own, without the router.
How it fits together¶
Three layers: you, the router, and the specialists. The router decides and records; specialists do the work; nothing writes to a shared file except you.
flowchart LR
U(["You"]) -- "request" --> R["ingredient-studio<br/>router"]
RD[("registry<br/>specialist register<br/>batch log")] -.-> R
R -- "preflight, proposal" --> U
R -- "specialist(s) request" --> S["Specialist(s)"]
SD[("own catalogue,<br/>references, setup,<br/>calculator")] -.-> S
S -- "results, blocks" --> R
R -- "combined answer,<br/>blocks to paste" --> U
| Step | Who | Takes in | Gives back |
|---|---|---|---|
| 1. Check and propose | Router | Your request (free-form or a directive); registry.yaml (IDs, aliases, hazards, house preferences, design links); specialists.yaml (who is installed, their modes and roles); batch-log.md (batch context) |
A preflight (IDs, hazards, blockers, design number); for a free-form request, a routing proposal, then it waits for go or amend |
| 2. Call | Router | Your approval, or your directive | A specialist request: mode, resolved ingredient IDs, the registry hazards (including those of parts), house preferences, design number, batch and beer volume |
| 3. Work | Specialist | The request; its own catalogue keyed by registry ID, references, data/setup.md and calculator |
What the mode produces: directions, a design (design-NNN-….md), a critique, an analysis (a section of the ingredient analysis page) with its catalogue row and registry block, a log block, a debrief. Every hazard gets the owning specialist's verdict |
| 4. Combine | Router | Each specialist's output | One answer: disagreements shown, lowest confidence tag kept; for a batch, the whole-beer envelope with summed sugar, acid, alcohol, cyanide and CO₂, allergens and the hazard ledger |
| 5. Record | You | The blocks in the reply | Pasted into registry.yaml, batch-log.md or a catalogue; then studio:check. Designs go to the wiki by hand-over |
The registry holds facts about an ingredient; each specialist owns the verdict on its own process. The router never overrides a verdict.
Specialists come in two kinds. Process specialists (Maillard, Treatments) own preparations: they design, judge their own processes and write batch-log blocks. The advisory specialist (Sensory) owns knowledge: what an ingredient brings to a living beer, its precedent and its pairings. It frames the work, carries hazards to their owners, and never sets a batch dose or writes a batch-log block.
Two ways to call it¶
Free-form: the router proposes, you approve¶
Start with /ingredient-studio and say what you want in your own words:
/ingredient-studio I've got 2 kg of quince, what are my options?
The router runs its checks, then replies with a preflight and a routing proposal, and stops:
Preflight
- Ingredients: quince (quince)
- Hazards: quince: patulin [handle]; seeds, amygdalin [note]
- House: quince = shortlist
- Specialists: maillard v8.1, treatments v1.2, sensory v1
- Design number: 006 (if a design is written)
- Blockers: none
Proposed route: R3 Explore
1. sensory:1 (Scope): quince → forms, partners, owners
2. treatments:1 (Options): quince, 2 kg, on that shortlist → 2-4 directions
3. maillard:1 (Ingredients-first, directions only): quince → 2-4 directions
4. Router combines and recommends; the owner builds your choice as design 006
Proceed? go / amend
Reply go, or amend it: change the route, drop or add a specialist, change a mode, add inputs.
Nothing is designed, calculated or written until you approve.
Directed: you choose, the router checks and runs¶
Name the specialist and mode, or the route. The router runs the same checks, shows the preflight, and proceeds without proposing a routing choice.
| Directive | Meaning | Example |
|---|---|---|
<short>:<n> |
Run that specialist's mode n | maillard:5 medlar |
<short>:<n> + <short>:<n> |
Run several in that order; the router combines | maillard:5 + treatments:4 medlar |
<short> |
A plain question to that specialist | treatments: how long can dates sit vacuum-bagged? |
R1 … R6 |
Run a route with its standard specialists and modes | R2 sea buckthorn |
studio:check |
Run the registry and specialist checks and report | studio:check |
A directed request still stops on a blocker, and asks, without suggesting another route:
- an ambiguous ingredient name (marigold, elder, laurel, cherry);
- a registry hazard that excludes the material asked for (rhubarb leaves);
- an unregistered ingredient going into a design, critique or log;
- a batch log without the beer's volume.
Calling a specialist directly (/fruit-maillard-prep, /ingredient-treatments, /ingredient-sensory)
skips the router and its checks; the specialist then works standalone.
What the router checks, every time¶
- Which ingredient. Names and aliases are matched to registry IDs; ambiguous names are resolved before anything else.
- What is intrinsically risky. Registry hazards, including those of parts (the stones inside whole fruit). Excluded parts stop there.
- House preferences. First picks win when two ingredients serve equally; it never asks what is in stock.
- Which specialists are available, and their versions.
- The design number, when a design will be written: design NNN is WB-ING-YYYY-NNN.
- Batch context: which batch the work belongs to and whether the beer volume is known.
Facts are shared, verdicts are owned. The registry says what a hazard is and how it behaves under heat, drying, freezing, alcohol or fermentation. Each specialist decides whether its own process is safe with it. The router never overrides a specialist's verdict; it adds only what no single specialist can see: totals across preparations in the same beer, allergens, interactions.
Routes¶
Routes pick specialists by the roles their modes carry, so a new specialist joins a route as soon as it is registered.
| Route | Use it for | Who runs, in which mode | You get |
|---|---|---|---|
| R1 Question | One factual question | The specialist that owns the topic, no mode; flavour, persistence, precedent and pairings go to Sensory | Its answer, with its confidence tags |
| R2 Dossier | Everything about one ingredient | Sensory's analysis first (it settles the forms), then each process specialist's analysis on the forms it owns | One ingredient analysis page per ingredient family, composed from their sections and extended in place later; the registry entry and each catalogue row to paste |
| R3 Explore | Options from ingredients, a flavour target or a beer | Router intake if a beer is involved; Sensory's options first (scope for an ingredient, enhance for a beer or target), then every process specialist's options on its shortlist; then the chosen owner's design mode | 2-4 directions across specialists, a recommendation, then a full design |
| R4 Existing design or formula | Critique, log or debrief of one design; critique of your own formula | The design's own specialist, critique, log or debrief; your formula is split by process and each part goes to its owner; optionally Sensory's critique afterwards for the flavour outcome of a blend | That specialist's output; parts no specialist owns are marked not assessed |
| R5 Batch | Log or debrief a whole beer | Router writes the batch entry and the totals; each preparation's owner writes its own block; at debrief, optionally Sensory reads the tasting notes | One entry per beer: combined sugar, acid, alcohol, cyanide and CO₂, allergens; at debrief, each miss routed to the skill that made it |
| R6 Registry | Add, correct or check ingredients and preferences | Router only | The YAML block to paste, then the check to run |
Specialists and modes¶
The two tables below are generated from the specialist register. Use the short name and mode number
as a directive: maillard:5, treatments:2. Modes are grouped by specialist.
Generated from ingredient-studio/data/specialists.yaml by specialists_check.py --render-guide. Edit the register, not this table.
Specialists¶
| Specialist | Short name | Kind | Owns | Version | Status | Guide |
|---|---|---|---|---|---|---|
| fruit-maillard-prep | maillard |
process | Cooked stages A1, A2, B, C, in the jar at 121 °C by default or by another cook method on wet material (roast finish, open roast, open reduction, hot age; 140 °C ceiling), raw fruit into the beer (D), botanical spirit tinctures (T), kernels and cyanide, beer-side sugar, acid, K+ and FAN, dose arithmetic | v8.1 | in use, published v8.1 | Maillard Skill |
| ingredient-treatments | treatments |
process | Freeze-thaw; cold, vacuum and warm maceration; oleo-saccharum and sugar maceration; low-temperature drying; dry toasting of dry material at 140 °C or below; lacto pre-ferment; fat-washing; hydrosol; oak and other woods (no smoking) | v1.2 | in use, published v1.2 | Treatments Skill |
| ingredient-sensory | sensory |
advisory | What an ingredient brings natively to a living beer, by form: descriptors, impact compounds, thresholds and potency; fate of native compounds through mixed fermentation and ageing; interactions with the base; precedent in beer and other fermented drinks, graded; forms by precedent; pairings and influences; sensory critique; spike tests; tasting calibration. Advisory: no preparations, batch doses or process verdicts | v1 | in use, published v1 | Sensory Skill |
Modes¶
| Directive | Mode | Roles | What it does |
|---|---|---|---|
fruit-maillard-prep (maillard) |
|||
maillard:1 |
Ingredients-first | options, design | 2-4 directions from ingredients you have, then a build |
maillard:2 |
Target-first | options, design | From a flavour target back to compounds, stages and ingredients |
maillard:3 |
Base beer first | intake, options, design | Intake on a beer, then a target-first build to its constraints |
maillard:4 |
Critique | critique | What will actually happen to a formula; the top tweaks |
maillard:5 |
Ingredient analysis | analysis | Chemistry verdict, catalogue row, registry entry |
maillard:6 |
Batch-log entry | log | Component block with a scoreable prediction |
maillard:7 |
Debrief | debrief | Scores the prediction; reference corrections; pH calibration row |
ingredient-treatments (treatments) |
|||
treatments:1 |
Options | options | 2-4 treatment directions for an ingredient or target |
treatments:2 |
Design | design | Full treatment plan: parameters, holds, beer-side sums, hazard verdicts |
treatments:3 |
Critique | critique | What a treatment plan will do; rule breaches first |
treatments:4 |
Ingredient analysis | analysis | Which treatments suit, which to avoid, hazard verdicts, facet row |
treatments:5 |
Log block | log | Component block for the batch log |
treatments:6 |
Debrief | debrief | Scores the prediction; corrections to its references |
ingredient-sensory (sensory) |
|||
sensory:1 |
Scope | options | Forms in use across drinks, cultures and periods; candidate partners; owners; an analysis brief |
sensory:2 |
Enhance | intake, options | From a beer or a flavour target to ingredient and form candidates; an analysis brief |
sensory:3 |
Profile | analysis | In-depth analysis: the sensory lead of the ingredient analysis page, catalogue row, registry block |
sensory:4 |
Extend | analysis | Add a form, partner, facet section or evidence to an analysis page, or merge adjacent pages |
sensory:5 |
Critique | critique | What will dominate, fade, clash or mask in a design or blend, and when |
sensory:6 |
Tasting debrief | debrief | Scores its predictions against tasting notes; house-evidence lines and corrections |
Files the router keeps¶
| File | What it is | You |
|---|---|---|
ingredient-studio/data/registry.yaml |
Every ingredient: ID, aliases, hazards and their behaviour, house preferences, the designs that used it | Paste the blocks the skills give you |
ingredient-studio/data/specialists.yaml |
The specialist register: short names, versions, what each owns, modes and roles, guide pages | Changed only when a specialist is added or updated |
ingredient-studio/data/batch-log.md |
The batch log: one entry per beer, one block per preparation | Paste the blocks |
ingredient-studio/scripts/registry_check.py |
Checks the registry against every specialist's catalogue | Run after pasting; --render refreshes the index |
ingredient-studio/scripts/specialists_check.py |
Checks the register against the skill folders; renders the tables on this page | Run after a specialist changes |
ingredient-studio/evals/issues.md |
Errors found in use and how they were fixed | Add to it when something goes wrong |
ingredient-studio/evals/routing-cases.md |
Worked examples of the route the router should propose | Reference only |
Typical flows¶
- New ingredient:
sensory:1 <ingredient>to narrow the forms and partners →R2 <ingredient>on the brief → the analysis page indesigns/analysis/→ paste the registry entry and catalogue rows →studio:check→ "send to the wiki". - New preparation: free-form request → approve the R3 proposal → pick a direction → design →
maillard:6ortreatments:5for the log block → cook or treat → debrief at 6 and 18 months. - Two preparations in one beer: design each, then
R5to log them as one batch so the totals are summed. - Hand a design to the wiki: "send to the wiki" → wiki-intake → wiki-publish.
Choosing the model¶
| Job | Default | Why |
|---|---|---|
| Design, critique, debrief, dossier, sensory scope and profile | Opus 5, high effort | Arithmetic and safety verdicts; a missed hazard is costly; research breadth and grading |
Directed question, registry update, studio:check |
Sonnet 5, medium | Short, and checked by the scripts |
Adding or updating a specialist¶
Every specialist meets the contract in ingredient-studio/references/specialist-contract.md: a kind
(process or advisory), numbered modes with the roles its kind requires, a catalogue keyed by registry
ID with hazard verdicts (carried, for an advisory specialist), a log block the router can sum (process
specialists), a section of the ingredient analysis page, standalone use, and a guide page here. The steps for adding, updating or retiring one are in
ingredient-studio/references/specialist-lifecycle.md; how the guides and downloads here are kept
in step is this site's own maintenance process, not part of the download.
Versions¶
| Skill | Version | Date | Download | Change |
|---|---|---|---|---|
| ingredient-studio | 2.2 | 2026-09-26 | ingredient-studio-2.2.zip | Advisory specialists (contract v3); Sensory placed in R1-R5; R2 composes one ingredient analysis page per family; routing cases 22-27 |
| ingredient-sensory | 1 | 2026-09-26 | ingredient-sensory-1.zip | First release; see its guide |
| fruit-maillard-prep | 8.1 | 2026-09-26 | fruit-maillard-prep-8.1.zip | Boundary with Sensory; see its guide |
| ingredient-treatments | 1.2 | 2026-09-26 | ingredient-treatments-1.2.zip | Boundary with Sensory; see its guide |
| ingredient-studio | 2.1 | 2026-09-25 | ingredient-studio-2.1.zip | Lifecycle made generic (documentation and publishing are the maintainer's own process); routing cases for the Maillard / Treatments boundary; no route or check changed |
| fruit-maillard-prep | 8 | 2026-09-25 | fruit-maillard-prep-8.zip | Cook method becomes a choice; see its guide |
| ingredient-treatments | 1.1 | 2026-09-25 | ingredient-treatments-1.1.zip | Boundary by moisture; see its guide |
| ingredient-studio | 2.0 | 2026-09-23 | ingredient-studio-2.0.zip | First release: preflight checks, routing proposals, directives, routes R1–R6, registry r3 (58 entries), specialist register, batch log v5, both checkers |
| ingredient-treatments | 1 | 2026-09-23 | ingredient-treatments-1.zip | First release; see its guide |
| fruit-maillard-prep | 7 | 2026-09-22 | fruit-maillard-prep-7.zip | See its guide |
Guides¶
| Page | Summary | Updated |
|---|---|---|
| Dregs Analysis Skill | How to run the bottle-dregs-analysis skill: plan the isolation of bugs from a bottle's dregs with only the kit you have at home, keep the plan honest as the work proceeds, and turn it into a culture journey. | 2026-09-28 |
| Maillard Skill | How to run the fruit-maillard-prep skill: modes, the 15-point output contract, the calculator, batch life-cycle, defaults and refusals. | 2026-09-28 |
| Sensory Skill | How to run the ingredient-sensory skill: what an ingredient brings to a living beer, its precedent and pairings; six modes, the evidence rules, the analysis page and the spike-test calculator. | 2026-09-28 |
| Treatments Skill | How to run the ingredient-treatments skill: its nine processes, six modes, the safety rules that bite, and its calculator. | 2026-09-28 |
Installing the skills¶
For anyone downloading them. Brief by design: if something here is unclear, hand this section and the zips to your own AI.
- Download the router and the specialists you want (links at the top). Each zip is one skill folder, CC0.
- Put the folders side by side in one skills directory, names unchanged:
ingredient-studio/,fruit-maillard-prep/,ingredient-treatments/,ingredient-sensory/. The skills find each other through relative paths (../ingredient-studio/data/registry.yaml); a specialist without the router beside it works standalone from its owndata/files. - Install them where your Claude setup reads skills: upload each folder in Claude (Settings →
Capabilities → Skills), or point Claude Code or Cowork at the directory. The scripts need Python 3
and PyYAML (
pip install pyyaml). - Make the data yours. The zips ship the ingredient registry with its entries and hazards but
no house preferences or design links, an empty batch log, and each specialist's
data/setup.mddescribing this brewery's kit. Editsetup.mdto your equipment first: specialists plan only around kit listed as held. Sethouse:preferences inregistry.yamlas you go. - Check the install:
python ingredient-studio/scripts/specialists_check.pyandpython ingredient-studio/scripts/registry_check.py, or ask the router forstudio:check. Both should report no errors. - Adapt: the register (
data/specialists.yaml) lists which specialists exist; remove the ones you did not install, or mark themplanned. To add your own specialist, followreferences/specialist-contract.mdandreferences/specialist-lifecycle.md. Theguide:paths point at this wiki's pages; they are only checked with--repo.
The skills assume a mixed-fermentation home brewery working in 4.5 L carboys and UK units and
rules (FSA, HMRC). The safety rules are written for that setting; read setup.md and the safety
references before you rely on them.