Skills¶
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.0 · CC0 · specialists: Maillard v7, Treatments 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, a dossier with its catalogue row and registry block, a log block, a debrief. Every hazard gets the specialist's own 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.
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 v7, treatments v1 (sensory, precedent: not installed)
- Design number: 006 (if a design is written)
- Blockers: none
Proposed route: R3 Explore
1. treatments:1 (Options): quince, 2 kg → 2-4 directions
2. maillard:1 (Ingredients-first, directions only): quince → 2-4 directions
3. 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) 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 | Its answer, with its confidence tags |
| R2 Dossier | Everything about one ingredient | Every specialist, its analysis mode | One combined dossier; 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; every specialist's options mode; 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 | 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 | 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 | Owns | Version | Status | Guide |
|---|---|---|---|---|---|
| fruit-maillard-prep | maillard |
Cooked jars at up to 121 °C (A1, A2, B, C), raw fruit into the beer (D), botanical spirit tinctures (T), kernels and cyanide, beer-side sugar, acid, K+ and FAN, dose arithmetic | v7 | in use, published v7 | Maillard Skill |
| ingredient-treatments | treatments |
Freeze-thaw; cold, vacuum and warm maceration; oleo-saccharum and sugar maceration; low-temperature drying; dry toasting at 140 °C or below; lacto pre-ferment; fat-washing; hydrosol; oak and other woods (no smoking) | v1 | in use, published v1 | Treatments Skill |
| ingredient-sensory | sensory |
Native aroma and flavour descriptors, impact compounds, odour thresholds and potency, persistence through fermentation, masking | – | planned | – |
| ingredient-precedent | precedent |
Use in beer and other drinks, culinary pairings, with sources graded | – | planned | – |
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 |
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:
R2 <ingredient>→ paste the registry entry and catalogue rows →studio:check. - 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 | Opus 5, high effort | Arithmetic and safety verdicts; a missed hazard is costly |
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: numbered
modes with roles, a catalogue keyed by registry ID with hazard verdicts, a log block the router can
sum, standalone use, and a guide page here. The steps for adding, updating or retiring one, including
the wiki guide and this page's tables, are in ingredient-studio/references/specialist-lifecycle.md.
Versions¶
| Skill | Version | Date | Download | Change |
|---|---|---|---|---|
| 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 |
|---|---|---|
| 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-23 |
| Treatments Skill | How to run the ingredient-treatments skill: its nine processes, six modes, the safety rules that bite, and its calculator. | 2026-09-23 |
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/. 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.