name: create-recipes description: Create cocktail recipe JSON files for the Cocktail Index from user-provided recipes, batches, books, videos, or notes. Use when adding new recipes, converting recipe text into data files, or backfilling recipes from YouTube or another source.
Create Cocktail Recipes
Create recipe files in the right packages/data/data/recipes/[type]/[source]/[slug].json location, following packages/data/schemas/recipe.schema.json and the project conventions in README.md and AGENTS.md.
Workflow
- Read the relevant schema and nearby recipe/source files before writing new JSON.
- Search existing recipes first. If the recipe already exists, update it instead of creating a duplicate.
- Search existing ingredients before adding or naming ingredient references. Reuse the existing ingredient names whenever possible.
- If the user provides YouTube URLs, use the
youtubeskill to fetch video metadata and extract recipe-relevant notes before writing recipe files. - For tricky ingredient matching, use the
ingredient-validatorskill. - Run
yarn check-dataafter edits. This may autofix data formatting.
Recipe Rules
Infused, fat-washed, tea-infused, pepper-infused, and similar modified spirits are techniques, not separate bottles. Use the base ingredient with a
techniqueobject, for example:{ "name": "Chateau du Tariquet 15 Year Armagnac", "technique": { "technique": "infusion", "agent": "chamomile" } }Do not create ingredient files for infused or otherwise modified spirits unless the underlying base ingredient itself is missing.
Do not use
Houseas an ingredient-name prefix. It is ambiguous outside the source context. Namespace source-specific house ingredients to their source, for exampleDeath & Co Horchata, while preserving the source wording in extraction notes.Watch for renamed products and search before creating new bottles. Examples:
Appleton Estate Reserveis nowAppleton 8Appleton Estate V/Xis nowAppleton Signature
Prefer existing project conventions from similar recipe files over inventing new shapes.
If required details are missing, use
FIXMErather than guessing.