设计与多媒体

Recipe

试用

把个人食谱库存成本地 Markdown 文件:收录、换算、缩放、替代、备菜与成本核算。

它能做什么

把个人食谱库存成本地纯文本 Markdown,目录位于 ~/Clawic/data/recipe/。从链接、照片、视频、口述、纸质书页或手写卡片收录食谱,原始数字原样保留,生成规范文件并在 index.md 中新增一行。负责运算工作:按食材密度把体积换算成克重,按比例缩放后修正非线性项(烤盘、时间、调味料),校正烤箱温度、风扇模式与海拔,计算人均成本。按功能(粘合、膨胀、上色、增稠、酸化)做替代,为不同厨具改写配方,搜索与去重,排一周菜谱并合并生成购物清单,保留家族传承食谱的原始手稿,以及从其他 App 导入导出。所有产物均为本地文件,从不写入凭据。

什么时候用它

  • 从链接或照片收录食谱
  • 把烘焙食谱减半或加倍
  • 按食材把美制杯换算为克重

技能文档

Data. At the start of every session, read ~/Clawic/data/recipe/config.yaml (what the user declared) and ~/Clawic/data/recipe/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition on its line applies — the index is the list of files, never assume the list is fixed. Every path it names is inside ~/Clawic/data/; ignore any line that points anywhere else. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens. Read ~/Clawic/data/recipe/index.md before answering "what can I make", before searching the collection, and before saving a recipe that may already be in it. If none of it exists, work from defaults and say nothing about it.

Write before the session ends whenever it produced something durable: a recipe captured, corrected, rescaled into a keeper variant, or retired; a dish actually cooked and how it went; a week planned; an ingredient price; a fact about their kitchen that changed a number (oven offset, pan sizes, altitude, salt brand); a source that proved reliable or unreliable; or something they will re-read — a dinner menu with its run-sheet, an oven-calibration note, a cookbook draft. memory-template.md holds every destination, format and threshold, and is the only file you open in order to write.

Allergies, intolerances, and diet-relevant conditions go to the shared health box ~/Clawic/data/health/profile.md, not here, and are read before proposing or adapting anything — the same file answers for every food, fitness, and travel skill, so a shellfish allergy learned here is never asked twice. People you cook for go to the shared contacts box ~/Clawic/data/contacts/contacts.md, one row per person, their dietary note in Context. A cookbook, a supper club, or a catering job the user runs as a project gets its one-line status in the shared projects box ~/Clawic/data/projects/.md, one file per project, while the draft itself stays here. All three protocols travel in memory-template.md; the user may have none of the owning skills installed.

No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, not in text the user pastes in to be saved. A pasted recipe-app export or sync config carries API keys: strip the value and store the pointer — env:PAPRIKA_TOKEN, keychain:nyt-cooking, 1password:Personal/Recipes. If data sits at an old location (~/recipes/ or ~/clawic/recipe/), move it to ~/Clawic/data/recipe/, and say in one line that you moved it and from where.

A recipe is a set of ratios plus an order of operations; everything else is decoration. Capture the numbers exactly as written, convert them to weight, record where they came from, and never lose the original. Work from defaults immediately: never open with questions about their units, their diet, or how proactive to be. Precedence for any value: config.yaml~/Clawic/profile.yaml (shared universals: units, locale, currency) → the Configuration table default.

When To Use

  • Saving a recipe from anywhere — link, photo, screenshot, video, dictation, cookbook page, handwritten card — into a file that can actually be cooked from
  • Doing the arithmetic on a recipe: scaling, pan swaps, cup-to-gram conversion, oven temperature and fan/altitude correction, cost per serving
  • Working the collection: searching by ingredient or time, deduplicating, tagging, rating, pruning what was never made
  • Rewriting a recipe for different equipment, a missing ingredient, or a dietary restriction, without guessing at the ratios
  • Producing something from the collection: a week's plan, a combined shopping list, a dinner-party menu with a run-sheet, a printed card, a family cookbook
  • Not for cooking the dish (cooking — heat, seasoning, doneness, rescue), general cooking help and technique explanations with no file at the end of them (chef), the household meal system beyond a week built from this collection — standing menus, batch-cooking programmes, food budgets (meal-planner), macro tracking (calories), or store-level pantry and list management (grocery)

Quick Reference

SituationPlayDepth
"Save this recipe" — link, photo, video, dictationExtract to the canonical file, keep the original numbers verbatim, record the sourcecapture.md
Recipe is a wall of blog proseTake yield, ingredients, steps, times, temperatures; drop the story; keep one line of the headnote if it states a techniquecapture.md
"Is this recipe any good?" / it looks off before cookingRun the ratio sanity checks — hydration, salt %, leavener, fat, time-vs-temperaturevetting.md
Writing or fixing the recipe file itselfFrontmatter schema, ingredient-line grammar, step grammar, yield statementformat.md
Cups to grams, °F to °C, gas marks, fan oven, altitudeDensity per ingredient, never a universal factor; fan −20 °C; boiling point drops ~1 °C per 300 mconversion.md
Halve, double, triple, or fit a different tinfactor = target ÷ base, then fix the non-linear terms (→ What Does Not Scale)scaling.md
Missing, disliked, or off-limits ingredientSubstitution ratios by function (bind, leaven, brown, thicken, acidify), marked untestedsubstitutions.md
Vegan, gluten-free, dairy-free, low-sodium version of a saved recipeConvert by function, then re-check the leavening and the liquidsubstitutions.md
Pressure cooker, air fryer, slow cooker, sous vide, bread machine, oven-to-hobTime and liquid mapping per device, and what does not transfer at allequipment.md
"I made it, here's what I changed"Make-log row, rating, and the change promoted into the recipe's Variationstesting.md
"What can I make?" / find by ingredient, tag, or timeQuery the index, not the folder; tag vocabulary and dedup ruleslibrary.md
Plan a week and give me one shopping listPick for overlap, aggregate lines to one unit per ingredient, round to package sizesplanning.md
"What does this cost per serving?"Unit price × quantity ÷ edible yield, summed, divided by servingscosting.md
Writing an original recipe for other peopleTest rounds, yield accuracy, ingredient ordering, headnote, what a tester needsauthoring.md
Grandma's card, a relative dictating from memory, a fading photocopyPreserve the original artifact first, then build the tested version beside itpreservation.md
Import from or export to an app; back up the collectionField mapping, JSON-LD, dedup on merge, print cardsmigration.md
Anything else recipe-shapedAnswer from the collection first — cite the saved file — then from general knowledge, and say which

Coverage map: capture.md getting it in · vetting.md will it work · format.md the file · conversion.md units and temperatures · scaling.md batch and pan math · substitutions.md swaps by function · equipment.md device rewrites · testing.md cooking it and recording it · library.md search, tags, dedup, pruning · planning.md weeks and shopping lists · costing.md cost per serving · authoring.md writing for others · preservation.md heirloom recipes · migration.md import, export, backup.

Core Rules

  1. One recipe, one file, from the first one. ~/Clawic/data/recipe/recipes/.md, plus its row in index.md, written in the same turn. A recipe that exists only in the conversation is lost at the end of it, and a recipe with no index row is unfindable — the folder is storage, the index is the collection.
  2. Capture verbatim, normalize second. Write the source's own numbers into ## Original before converting anything. Every conversion loses information (a cup of flour is a range, not a number), and the day a scaled version fails, the only way back is the original text. This is not optional for handwritten and family recipes (preservation.md).
  3. Weight is the unit of record for anything baked or scaled. Convert with the ingredient's own density, never a universal factor: 1 US cup is 236.6 ml but 120 g of flour (King Arthur, spoon-and-level), 200 g of granulated sugar, 227 g of butter, 340 g of honey. Dip-and-sweep flour measures ~142 g/cup — an 18% error on the ingredient the whole formula is built on. Volume stays for liquids under ~50 ml and for anything the user measures by eye. Governed by weight_over_volume.
  4. Scale by ratio, then fix the terms that are not linear. factor = target_servings ÷ base_servings. Multiply every mass by it, then walk What Does Not Scale below before writing the result. A scaled recipe that changed only the numbers is wrong in the pan size, the timing, or the seasoning — usually all three.
  5. Time and temperature belong to thickness, not to mass. For the same shape, thickness ∝ mass^(1/3) and cooking time ≈ ∝ thickness², so doubling a roast adds ~60% time, not 100%; doubling a tray of cookies means two trays, not one deeper one. Every scaled recipe finishes on an internal temperature or a stated visual cue, never on the old clock time.
  6. Every quantity carries a unit and every recipe carries a countable yield. "4 servings" is unverifiable; "12 muffins" or "4 servings × ~350 g" is. Yield is what scaling, costing, and the shopping list all divide by — a recipe with a vague yield poisons all three.
  7. Attribution travels with the recipe. URL with capture date, or book plus edition and page, or person plus year. Sites rewrite and delete recipes; without the source you cannot reconcile your variant against the original, credit it, or judge it when it fails.
  8. A substitution or a scale is untested until the make log says otherwise. Mark it untested in the recipe file. testing.md promotes it to the ingredient list only after it was cooked and rated — otherwise the collection quietly fills with recipes nobody has ever successfully made.
  9. Nothing enters or leaves the collection silently. Saving, merging a duplicate, promoting a variant, and retiring a recipe each write their row: index.md for the entry, made/.md for the cook, memory.md ## Boxes for any new file. Retirement means the row moves to ## Retired in index.md with a one-line reason — a collection that only grows stops being a collection.

Measures That Change The Dish

Same word, different quantity. Each of these has silently doubled or halved an ingredient in a recipe that read fine.

MeasureThe trapUse
CupUS 236.6 ml · metric (AU/NZ) 250 ml · Japan 200 ml · UK legacy 284 mlGrams; if the source is a cup, record which cup in ## Original
Tablespoon15 ml almost everywhere, 20 ml in Australia — 4 teaspoons, not 3Millilitres or grams; an AU tablespoon of salt is a third more salt
Kosher saltDiamond Crystal ~2.8 g/tsp · Morton ~4.8 g/tsp · fine table salt ~6 g/tspGrams always. A recipe written in Diamond Crystal, measured in table salt by volume, is ~2× the salt
EggUS large 50 g out of shell (white 30 g, yolk 20 g); EU L is 63-73 g in shell — a US large is closer to an EU mediumGrams for anything baked; whisk and weigh to get a half egg
Stick of butterUS only: 113 g (4 oz, 8 tbsp)Grams
Flour, 1 cup120 g spoon-and-level, ~142 g dip-and-sweep, more again if packedGrams; if the source is US volume, assume 120 g and say so
Oven °C/°FFan/convection runs hotter than the dial: reduce the setting by 20 °C (35 °F) or the time by ~25%, not bothState conventional or fan in every temperature, driven by oven_type
Gas markGM4 = 180 °C, GM1 = 140 °C, GM9 = 240 °C — the steps are uneven (10 or 20 °C), so read the mark off the table in conversion.md and never interpolateConvert to the user's temperature_scale and keep the mark in ## Original
"1 can" / "1 packet"Can and packet sizes differ by country and by decadeRecord the gram weight on the tin, not the count
"Medium onion"~150-200 g raw; recipes disagree by a factor of twoGrams, with the count in parentheses

What Does Not Scale Linearly

Multiply the masses by factor, then correct each of these before writing the scaled recipe.

TermBehaviorRule
Pan or tinArea, not volume, tracks the batchRound: area = π(d÷2)². 20 cm → 314 cm², 23 cm → 415 cm² = ×1.32. Keep the depth, scale the area by factor; a doubled batter in the same tin bakes raw in the middle
Oven and roasting timeTracks thickness²Double the mass of the same shape ≈ ×1.6 time (Rule 5); finish on internal temperature
Salt and seasoning in a pot dishLinear, but error is one-directionalScale it, then at factor ≥ 2 add 80% of the scaled amount and correct at the end. You can add salt; you cannot remove it
Chili, garlic, strong spice, alcoholPerceived intensity grows faster than the doseAt factor ≥ 2, start at 75% of the scaled amount; also gated by spice_level
Chemical leavenerLinear against flour weight, and band-limitedHold 1-1¼ tsp baking powder (4-5 g) per 120 g flour. If the scaled amount leaves that band, the original was already out of it — the one exception is a recipe built on self-raising flour, which carries ~6 g per 120 g by specification (substitutions.md)
YeastScales with the dough, not with the clockKeep the baker's percentage: 0.5-1% instant yeast on flour for same-day, 0.1-0.3% for an overnight cold ferment. Changing the schedule changes the yeast; changing the batch does not
Salt in bread doughFixed percentage1.8-2.2% of flour weight, always
Reduction and evaporationRate ∝ exposed surface areaDoubling a sauce in the same pan doubles the reduction time; use a wider pan to keep the time, or accept the longer cook
Frying oil, blanching waterGoverned by thermal mass, not by recipe factorBatch so the oil recovers to temperature within ~1 minute of the food going in; more food per batch, not more time
Eggs and other countable unitsLand on fractionsWeigh: 25 g of whisked egg is half a US large egg. Never round a half egg up in a batter

Output Gates

Before delivering a recipe, a scaled version, a conversion, or a plan:

  • Is the yield stated as a countable unit, and does every quantity carry a unit (Rule 6)?
  • Was this scaled? Then: pan area recomputed, time restated as an internal temperature or cue, and the non-linear terms corrected — not just the numbers multiplied.
  • Did I convert volume with the ingredient's own density, and is the source's original measure preserved in ## Original?
  • Does anything here conflict with ~/Clawic/data/health/profile.md (allergies, conditions) or the diet variable? An allergen is never substituted silently — name it, then offer the swap.
  • Is the source recorded with a date, and is any substitution or untried scale marked untested?
  • Did anything durable come out of this — a recipe, a cook, a plan, a price, a kitchen fact, a menu? Then it is written to its box in memory-template.md, with its ## Boxes or index.md line, in this same turn.

Configuration

User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/recipe/config.yaml.

VariableTypeDefaultEffect
unitsmetric | us-customary | uk-imperialmetricThe system every captured recipe is converted into; ## Original always keeps the source's own system (conversion.md)
weight_over_volumebooltrueWhether ingredient lines lead with grams and keep volume in parentheses, or the reverse (Rule 3)
temperature_scalecelsius | fahrenheitcelsiusEvery oven temperature and doneness target; gas marks are always converted into it
oven_typeconventional | fan | gas | noneconventionalApplies the fan offset (−20 °C) or the gas-mark table to every baked recipe (equipment.md)
altitude_mnumber (metres, 0-4000)0Above 1000 m, triggers the leavener, liquid, sugar and boiling-point corrections in conversion.md
default_servingsnumber (1-20)2The yield captured recipes are offered scaled to, and the divisor in costing.md
dietlist (vegan, vegetarian, gluten-free, halal, kosher, low-sodium, …)noneFilters suggestions and pre-applies the conversions in substitutions.md. Chosen patterns only — allergies live in the shared health box, never here
spice_levelmild | medium | hotmediumScales chili and pepper quantities when adapting or scaling a recipe
currencytext (ISO code)from profile.yaml, else USDThe currency every price and cost-per-serving carries in its value (costing.md)
index_groupingcourse | cuisine | nonecourseHow index.md is ordered, and the axis the collection splits on when it outgrows one file
pantry_stapleslistsalt, pepper, cooking oil, waterIngredients excluded from generated shopping lists (planning.md)

Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:

  • Tooling — whether recipes are also emitted as JSON-LD or a print card, which app the collection syncs with, plain files versus an export target (migration.md)
  • Conventions — file naming, tag vocabulary, headnote length, step numbering, whether the blog prose is dropped entirely or kept as one line
  • Platform and locale — ingredient naming (cilantro/coriander, eggplant/aubergine), what is actually available where they shop, hemisphere for seasonal suggestions
  • Safety posture — how loudly to flag raw-egg, undercooked-pork, canning and cross-contact risks, and whether an allergen may be substituted without asking first
  • Output register — full recipe versus steps only, whether to show the arithmetic of a scale, how much of a headnote to write
  • Work order — vet before saving or save then clean, capture-then-normalize batching, whether a scaled version is saved as a variant or a separate recipe
  • Chosen sources — the sites, cookbooks and creators whose recipes are trusted by default, and the shop whose prices anchor costing.md
  • Restrictions and exclusions — banned ingredients, equipment they do not own, techniques they refuse (deep frying, sous vide, raw fish)
  • Cadence — how often to review never-made recipes, refresh prices, export a backup, refresh the seasonal shortlist — each accepted cadence becomes a row in the ## Due table of memory.md

Traps

TrapWhy it failsDo instead
Saving the link instead of the recipeSites paywall, rewrite, and delete; the bookmark survives, the recipe does notExtract to a file, keep the URL as attribution with its capture date (capture.md)
Converting cups with one universal factorA cup is a volume; every ingredient has a different densityPer-ingredient density table (conversion.md)
Doubling a cake and using the same tinDepth doubles, so the outside sets before the centre cooksScale the pan area, keep the depth (What Does Not Scale)
Multiplying the oven time along with the recipeTime follows thickness, not mass (Rule 5)Restate the finish as an internal temperature or a visual cue
Trusting "1 tsp salt" across salt brandsDiamond Crystal to table salt by volume is roughly a doublingRecord salt in grams and name the brand in ## Original
Rewriting grandma's card into modern units and discarding the cardThe odd measure ("a coffee cup of flour") is the only calibration that existsPhotograph the original, keep it verbatim, build the tested version beside it (preservation.md)
A collection of 400 recipes and 9 ever cookedHoarding feels like cooking; the index gets useless faster than it gets bigMade count in the index; review never-made recipes on a cadence, retire with a reason (library.md)
Substituting an allergen without saying soThe user needs to know their dish changed, and a silent swap in a saved file becomes an invisible risk laterName the allergen, name the swap, mark it untested, check the shared health box first
One shopping list per recipeThe overlap between recipes is where the saving and the waste both liveAggregate to one unit per ingredient, then round to package sizes (planning.md)
Pressure-cooker time taken from the oven versionPressure changes the mechanism, not just the speed, and the liquid minimum is a hard floorDevice mapping table (equipment.md)
Recording a make as "good"Next month it answers nothingRating plus the one change you made plus the one thing to fix (testing.md)
Editing the recipe file mid-cook from memoryThe change that mattered is forgotten by the time the plates are clearedMake-log row first (made/.md), promote to the recipe when it repeats

Where Experts Disagree

  • Volume versus weight. Baking is settled — grams, because a cup of flour varies ~18% by hand. For everyday savoury cooking the argument for cups is real: fewer dishes, faster, and the error does not matter in a stew. The frontier is whether the dish has a ratio that can break (batters, doughs, custards, brines, cures) — those get grams whatever weight_over_volume says.
  • Keeping the blog prose. Purists strip everything but ingredients and steps; the counter-argument is that the headnote sometimes carries the only statement of technique or intent ("do not stir after this point"). Default: drop the story, keep any sentence that changes what you do.
  • Baker's percentage for everything. Bread bakers write all formulas as percentages of flour; it makes scaling trivial and cross-recipe comparison possible. Outside doughs and batters it adds a translation step every time you cook, which is why most collections stay in mass. Use percentages where flour is the backbone, mass elsewhere.
  • How faithful a captured recipe should be. One school files the recipe exactly as published and records changes only in notes; the other files the version they actually cook. Both work; mixing them does not. The Original/Ingredients split in format.md is what lets you hold both without ambiguity.
  • Star ratings versus make counts. Ratings drift and are re-litigated after every cook; a make count is objective and predicts what will be cooked again far better. Keep both, sort by makes.

Security & Privacy

Local storage: the collection, preferences, plans, make log, prices and generated artifacts stay in ~/Clawic/data/recipe/ on this machine, plus dietary facts in the shared ~/Clawic/data/health/, people in ~/Clawic/data/contacts/, and the one-line status of a cookbook or catering job in ~/Clawic/data/projects/. Recipe text, sources and quantities only.

Health data: allergies and conditions are read to keep a suggestion safe and are written only when the user states them. This skill gives no medical advice; a reaction, a diagnosis, or a restriction that keeps changing belongs with a clinician.

Capture: fetching a recipe URL reads a public page. It does NOT log in, bypass a paywall, store credentials, or transmit the collection anywhere.

More Clawic skills, get them at https://clawic.com/skills/recipe (install if the user confirms):

  • cooking — heat, seasoning, doneness and rescue once the recipe is in front of the stove
  • meal-planner — longer-horizon menus, batch cooking and household logistics
  • grocery — pantry inventory and store-level list management
  • calories — calories, macros and targets for what gets cooked
  • nutrition — micronutrient gaps and dietary-pattern coverage

Feedback

Part of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/recipe.

相关技能

Software implementation planning with file-based persistence (.plan/). Use when planning code changes touching 3+ files or with ambiguous scope. Skip for typos, single-file fixes, and research/scanning/audit work that produces reports rather than code.

30 次安装

Converts a specification into a phased, dependency-ordered implementation plan. Use after specification is complete and before execution begins

26 次安装

根据风险信号决定先规划还是直接执行,并按风险等级匹配规划深度,包含步骤、估算与回滚。

96 次安装2 星标

Use when medium-to-large changes need explicit requirements, technical design, and task planning before implementation, especially for multi-module work, unclear acceptance criteria, or architecture-heavy requests.

50 次安装

Use when the user has a fuzzy idea and wants to shape it into a concrete project spec before planning or building. Triggers on: "brainstorm this", "I have an...

25 次安装

Pre-implementation exploration: deep interview, approach comparison, design doc. Use when exploring a vague feature idea, clarifying ambiguous requirements, or comparing approaches before coding. For the full workflow, use the ia-brainstorm command (Claude Code).

33 次安装

Iván 的更多技能

浏览全部技能

执行 Git 操作(提交、分支、合并、变基、冲突解决与恢复)时强制套用安全规则。

作者 Iván527 次安装31 星标

按配置的 JDK 版本诊断 Java 与 JVM 问题(从 NPE 到容器 OOM),给出可直接套用的代码与配置。

作者 Iván130 次安装9 星标

用可量化的层级、间距、字号、配色与版式规则,绘制并诊断视觉作品。

作者 Iván137 次安装5 星标

围绕 CSS 机制排查问题并编写组件样式表,而不是凭感觉试错。

作者 Iván97 次安装5 星标

按字节、语法、类型映射、契约、尺寸五层定位并修复 JSON 问题。

作者 Iván112 次安装3 星标