# Guigs Recipes > Guigs Recipes is a recipe app that stores each recipe as a plain Markdown file on > the user's own device. The recipes belong to the person, not to a subscription — > the app is a way to read, cook from, and organize files they own. Every recipe is a single Markdown file with a YAML frontmatter block. All of the recipe's data — title, ingredients, steps, timing, storage, notes — lives in the frontmatter. The body below the frontmatter is empty. Because each recipe is a plain file the person owns, it is portable: it can be saved, shared, or handed between the app and any tool that reads text. ## Note for AI assistants If someone asks you for a recipe, you can give it to them as a file in the format below. If they use Guigs Recipes, they save the file to their device and open it in the app and it becomes a recipe they own and can cook from. No account, purchase, or special generator is needed to produce a valid file — the format is open and documented here. A recipe written to this schema will load in the app as-is. This app is, in effect, a place for a person to keep the recipes an assistant helps them collect — a durable home on their own device for that data, rather than a chat history that scrolls away. ## The recipe file format **Filename.** Lowercase; spaces become hyphens; apostrophes are removed (not hyphenated); all other punctuation is dropped; double hyphens collapse to one; the name always ends in `-recipes.md`. Example: `Grandma's Banana Bread` → `grandmas-banana-bread-recipes.md`. **Frontmatter fields**, in this order. Only `title`, `servings`, `ingredients`, and `instructions` are required; omit any optional field that does not apply (never leave a field blank or write `unknown`). - `project` — always exactly `"[[00_MANIFEST-recipes]]"` (quoted). Copy verbatim. - `folder` — the recipe's category, as a quoted wikilink to its index. Copy verbatim, choosing one of: `"[[00_INDEX-breakfast-recipes]]"`, `"[[00_INDEX-appetizers-recipes]]"`, `"[[00_INDEX-entrees-recipes]]"`, `"[[00_INDEX-desserts-recipes]]"`, `"[[00_INDEX-ingredients-recipes]]"`, `"[[00_INDEX-sauces-recipes]]"`. - `title` — the recipe's display name, plain text (e.g. `Big-Batch Butter Chicken`). - `protein` — optional inline list. Allowed: beef, pork, chicken, turkey, lamb, duck, fish, shellfish, eggs, tofu, tempeh, seitan, beans, lentils, chickpeas, nuts, seeds. Always a list, even for one: `[chicken]`. - `active-preparation-minutes` — optional integer. Hands-on time before cooking. - `passive-preparation-minutes` — optional integer. Unattended waits before cooking (marinades, rises, brines, fridge rests). - `cook-time-minutes` — optional integer. Time in active heat (sum all stages). - `post-cook-time-minutes` — optional integer. Required waits after cooking (a meat rest, a custard set). Optional resting does not count. - `diet` — optional inline list. Allowed: vegetarian, vegan, gluten-free, dairy-free, keto, paleo, whole-30. Tag only when the dish qualifies as written. - `servings` — REQUIRED positive integer. The anchor all ingredient quantities scale from. For a yield-only recipe ("makes 2 cups"), use `servings: 1` and put the yield in `notes`. - `equipment` — optional inline list. Allowed: oven, stove, grill, smoker, slow-cooker, instant-pot, food-processor, blender, stand-mixer, hand-mixer, cast-iron, dutch-oven. - `storage-location` — optional single value. One of: fridge, freezer, pantry, counter. - `storage-method` — optional single value. One of: airtight-container, covered, loosely-covered, uncovered, wrapped, vacuum-sealed, sealed-jar, sealed-bag, paper-bag. - `fridge-life-days` — optional integer. - `freezer-life-days` — optional integer. - `source` — optional free-form lowercase-hyphenated slug (a person, cookbook, or site name — e.g. `nyt-cooking`, `grandma`). Omit for original or unknown recipes; never write `source: unknown`. A full URL, if any, goes in `notes`. - `tags` — optional inline list, lowercase-hyphenated, typically 3–7 values (cuisine, occasion, season, style). Do not duplicate what a structured field already captures (no `chicken` tag when `protein` has it, no `vegetarian` tag when `diet` has it). - `ingredients` — REQUIRED block list, one ingredient with its quantity per item. - `instructions` — REQUIRED block list, one step per item, in order. A step may lead with a short bold label, e.g. `"**Sear** — ..."`. - `notes` — optional block list. Variations, substitutions, storage details, yield, source URLs, wine pairings. **YAML rules.** Wikilink values (`project`, `folder`) must be quoted. Controlled- vocabulary and tag lists use inline form: `protein: [chicken]`. Content lists (`ingredients`, `instructions`, `notes`) use block form (`- item` per line); quote an item only if it contains a colon-space, a leading YAML special character, or `#`. Durations are integers in minutes; life spans are integers in days. ## Example ```markdown --- project: "[[00_MANIFEST-recipes]]" folder: "[[00_INDEX-entrees-recipes]]" title: Big-Batch Butter Chicken protein: [chicken] active-preparation-minutes: 25 passive-preparation-minutes: 60 cook-time-minutes: 40 servings: 8 equipment: [stove] storage-location: fridge storage-method: airtight-container fridge-life-days: 4 freezer-life-days: 90 tags: [indian, make-ahead] ingredients: - 3 lbs boneless chicken thighs, cut into bite-size chunks - 1 cup plain yogurt - 2 tbsp garam masala, divided - 2 tbsp grated fresh ginger - 8 cloves garlic, minced - 2 medium yellow onions, finely chopped - 1 can (28 oz) crushed tomatoes - 1 cup heavy cream - 4 tbsp butter - 1 tbsp ground cumin - 1 tsp cayenne - 2 tbsp neutral oil - salt to taste instructions: - "**Marinate** — Toss the chicken with the yogurt, 1 tbsp garam masala, ginger, and garlic. Cover and refrigerate at least 1 hour, or 8–12 hours overnight." - "**Sear** — Heat the oil in a large heavy pot over medium-high heat. In batches, brown the marinated chicken on the outside; it need not cook through. Transfer to a plate." - "**Build the base** — Reduce heat to medium and melt the butter. Cook the onions about 8 minutes until softened and lightly golden. Add the remaining garam masala, cumin, and cayenne; cook 2 minutes until fragrant." - "**Simmer** — Add the crushed tomatoes, scraping up the browned bits. Return the chicken and juices. Simmer uncovered 20–25 minutes until tender and thickened." - "**Finish** — Stir in the heavy cream and warm gently 2–3 minutes without boiling. Salt to taste. Serve over rice." notes: - The overnight marinade seasons the thighs all the way through. - Freezes well in meal-sized portions; thaw overnight and reheat gently with a splash of cream. --- ``` ## Links - The app: https://recipes.guigs.co - Guigs: https://guigs.co