{"id":"795b7c34-9a46-45ad-b0c2-88ebc6234bd6","shortId":"6sWyBF","kind":"skill","title":"cook","tagline":"This skill should be used when the user has an approved spec, pasted requirements, or a focused unambiguous implementation request and wants the code written — phrases like \"implement this\", \"build this feature\", \"write the code\", \"cook this spec\", \"make it work\", \"/cook .cheese/","description":"# /cook\n\nUse this skill when the user has an approved spec, pasted requirements, a precise implementation request with acceptance criteria, or any unambiguous task that meets the standalone fast-path checks below.\n\nDo not use it for fuzzy planning (`/mold`), no-write discussion (`/culture`), or review-only work (`/age`).\n\n## Inputs\n\nAccept one of:\n\n- A spec path, usually `.cheese/specs/<slug>.md`.\n- A bare slug whose spec lives at `.cheese/specs/<slug>.md` (cook resolves the path; this is the form `/ultracook` uses when chaining).\n- A pasted spec or issue.\n- A focused implementation request with acceptance criteria.\n- A clear, unambiguous task — single-file fix, named bug, well-scoped tweak — even without a spec.\n\nOptional flags:\n\n- `--auto` — autonomous mode. Skip every handoff gate, propagate the flag through `/press → /age → /cure`, and fix every medium-or-above finding across up to two cure passes. See `## Auto mode` below.\n- `--hard` — propagate the `/hard-cheese` metacognitive gate flag through `/press → /age → /cure`. Cook does not fire the gate itself; it only passes the flag along. The gate fires at `/cure`'s share-for-review handoff or, under `--auto --hard`, at the end of cure's final auto pass. See `skills/hard-cheese/SKILL.md` and `skills/hard-cheese/references/composition.md`.\n\n### Standalone fast-path\n\n`/cook` runs without `/mold` when the task is unambiguous. Treat a request as unambiguous when **all three** are present or trivially derivable:\n\n1. **Inputs/outputs are clear.** \"Tail returns wrong byte count when file ends without newline\" ✓; \"make tail better\" ✗.\n2. **Scope is bounded.** A named function, a single failing test, a specific call site, or a small region of one or two files.\n3. **Verification is obvious.** A failing test that can be made to pass, or a runnable command whose output should change in a stated way.\n\nWhen the fast-path applies, derive a slug from the task (e.g. `tail-trailing-newline`), treat **Contract** as a one-sentence restatement of the request, and proceed directly to **Cut** without a spec round-trip. Route to `/mold` only when one of the three checks fails — silent ambiguity is the cardinal sin.\n\n## Flow\n\n1. **Contract** — confirm behaviour, non-goals, likely scope, quality gates. For standalone fast-path tasks, the contract is the user's request restated in one sentence.\n2. **Cut** — write failing tests for the changed behaviour. See `references/tdd-loop.md`.\n3. **Implement** — make the cut tests pass with the smallest production change.\n4. **Taste-test** — check spec drift, readability, and scope creep. Two-round cap; details in `references/tdd-loop.md`.\n5. **Hand off** — produce the package-ready report (`references/package-report.md`), write the handoff slug (`## Handoff slug` below), and prompt the next step via the shared handoff gate (see `## Handoff` below). The default chain is `/press` → `/age` → `/cure`.\n\nCode search, reading, and editing all go through the cheez-* skills (`/cheez-search`, `/cheez-read`, `/cheez-write`) — see those skills for tool selection rules and out-of-scope fallbacks.\n\n## Preferred tools and fallbacks\n\n| Need | Prefer | Fallback |\n| --- | --- | --- |\n| Diffs | `delta` | plain `git diff` |\n| GitHub context | `gh` | local git history or user-provided links |\n| Merge assistance | mergiraf | manual conflict resolution with tests |\n| Task commands | `just`, package scripts | direct documented commands |\n\nWhen a preferred tool is unavailable, continue with the fallback and mention any loss of precision if it affects risk.\n\n## Quality gates\n\nUse existing project commands only. Run the most relevant tests for the touched area, plus lint/type/build commands if the repository already defines them. Never remove, skip, or weaken unrelated tests to make the change pass.\n\n## Output\n\nSummarize:\n\n- Files changed and why.\n- Tests or checks run.\n- Remaining risks or skipped checks.\n- Suggested next skill: usually `/press` → `/age` → `/cure`.\n\n## Handoff slug\n\nWrite a minimum-shape handoff slug to `.cheese/cook/<slug>.md` so downstream phases (and the `/ultracook` orchestrator) can resume or chain without re-reading the full package-ready report. The slug is prepended at the top of the same file the package-ready report lives in — there is no second file. Schema:\n\n```markdown\nstatus: ok | halt: <one-line reason>\nnext: press | age | done\nartifact: <path-to-richer-report-if-any>\n<one-line orientation: what cook changed>\n```\n\n`status: ok` when cook finished cleanly. `status: halt: <reason>` when cook stopped per the package-report stop conditions (missing spec decision, blocked test, taste-test cap hit, quality gate fail outside scope). `next:` is `press` for the standard chain, `age` if the user opts to skip press, or `done` if the package-report status itself is `blocked`. The orientation line is a single factual sentence about what the diff does — not a summary of the report.\n\n## Handoff\n\n**Pipeline:** culture → mold → **[cook]** → press → age → cure → ship\n\nAfter the package-ready report is printed and the handoff slug is on disk, ask via the shared handoff gate in [`../../shared/handoff-gate.md`](../../shared/handoff-gate.md). Lead each option with the verb (what the user wants to *do* next); the skill command (with any in-scope `--hard` propagation) is the backing detail. Default options:\n\n- **Harden tests before review** *(recommended)* — `/press <slug>`.\n- **Review the diff now (skip the press pass)** — `/age <slug>`.\n- **Stop** — dispatch none; leave further hardening for later.\n\nPre-select **Harden tests before review** when the cooked diff added new behaviour or touched untested seams. The user may also chain: pressing then age then cure happens via each step's own handoff gate. Never dispatch before selection; after a non-stop selection, run the selected command immediately.\n\nWhen invoked with `--auto`, skip this gate entirely and proceed straight into the auto-mode chain (see `## Auto mode` below).\n\n## Auto mode\n\n`--auto` is the autonomous-pipeline switch. Use it when the user has signalled they want the whole chain to run forward without being asked between steps.\n\n### What auto mode does\n\n1. After cook's package-ready report, invoke `/press <slug> --auto`.\n2. `/press --auto` runs its hardening pass and, if readiness is `ready for /age` or `follow-up recommended`, invokes `/age <slug> --auto`. Both states mean the cooked contract is sound and every changed behaviour has a hardening test; documented follow-ups are review-safe. Only `blocked` stops auto — false premise, unfixable level-1/2 gap, a changed behaviour with no stable hardening test, or spinning wheels (three attempts at one gap without green).\n3. `/age <slug> --auto` writes the report and invokes `/cure <slug> --auto --stake medium+`.\n4. `/cure --auto --stake medium+` bypasses the selection gate, applies every finding of `medium` or `high` stake, then invokes `/age --scope <touched-paths> --auto` for verification.\n5. The age → cure cycle is capped at **two cure passes total**. Pass 1 fixes the initial findings. Pass 2 fixes anything the re-age surfaces. After pass 2 the chain stops with a final summary, regardless of whether new findings remain.\n6. Auto mode never invokes `/gh`. Opening or updating a PR stays user-triggered.\n\n### When auto mode stops early\n\n- A quality gate (test, lint, type, build) fails and the failure cannot be attributed to a single revertible finding.\n- `/press` returns `blocked` (false premise, unfixable level-1/2 gap, missing hardening test, or spinning wheels at three attempts).\n- A cure pass cannot apply any finding (every selected fix breaks tests on revert-or-keep evaluation).\n- Two cure passes complete (success path).\n\nIn every early-stop case, surface the report from the failing skill and tell the user the cap reached or the blocker hit. Do not silently downgrade.\n\n### When invoked from /ultracook\n\n`/ultracook` spawns each phase as a fresh-context sub-agent and owns the chain itself. When the spawn prompt explicitly says \"for THIS PHASE ONLY\" and \"do not chain forward to the next phase,\" honour the override: write `.cheese/cook/<slug>.md` and stop. Do not invoke `/press <slug> --auto` from inside the sub-agent. The orchestrator reads the handoff slug and decides whether to spawn the next phase. Without this override, sub-agent #1 would run the entire pipeline inside its own context and `/ultracook`'s per-phase isolation guarantee would be silently broken.\n\n### Failure handling inside cure\n\nSee `skills/cure/SKILL.md` `### Auto mode` for cure's per-finding revert/defer behaviour. Cook does not duplicate the contract — cure owns it.\n\n### Final report\n\nThe skill that ends the chain prints the summary below. On the success path that is the final `/age --auto` (after the two-cure-pass cap is reached); on an early stop it is the skill that surfaced the blocker.\n\n```\nAuto-mode summary\nPasses:        <1|2>\nFindings fixed: <count by stake>\nDeferred:       <count, with cure-report path>\nFinal age:      <path>\nNext step:      review the diff, then /gh when ready\n```\n\nAuto mode is a propagated flag, not a separate skill — every downstream invocation passes `--auto` along so each step knows to skip its own handoff gate.\n\n## Rules\n\n- Keep changes scoped to the accepted contract.\n- Prefer existing dependencies and patterns.\n- Do not invent architecture already rejected by the spec.\n- Stop and ask when implementation reveals a design decision the spec did not answer.\n- If the spec or fast-path request rests on a false premise, stop and surface the premise before writing code; do not work the wrong angle to honour the request literally.\n- Apply the shared voice kernel (lives at `skills/age/references/voice.md` in this repo): lead the package-ready report with the answer, name loaded assumptions in the contract, flag residual risk as `certain | speculating | don't know`.","tags":["cook","easy","cheese","paulnsorensen","agent-skills","ai-coding","claude-code","code-review","developer-tools"],"capabilities":["skill","source-paulnsorensen","skill-cook","topic-agent-skills","topic-ai-coding","topic-claude-code","topic-code-review","topic-developer-tools"],"categories":["easy-cheese"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/paulnsorensen/easy-cheese/cook","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add paulnsorensen/easy-cheese","source_repo":"https://github.com/paulnsorensen/easy-cheese","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (9,904 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:40.813Z","embedding":null,"createdAt":"2026-05-18T13:21:08.585Z","updatedAt":"2026-05-18T19:13:40.813Z","lastSeenAt":"2026-05-18T19:13:40.813Z","tsv":"'-1':1043,1189 '/../shared/handoff-gate.md':819,820 '/2':1044,1190 '/age':96,172,201,497,642,864,1002,1009,1065,1095,1399 '/cheez-read':511 '/cheez-search':510 '/cheez-write':512 '/cook':43,45,248 '/culture':90 '/cure':173,202,220,498,643,1072,1077 '/gh':1148,1446 '/hard-cheese':195 '/mold':85,251,377 '/press':171,200,496,641,855,987,990,1182,1304 '/ultracook':124,661,1256,1257,1343 '1':270,393,978,1113,1332,1427 '2':287,421,989,1119,1129,1428 '3':311,432,1064 '4':444,1076 '5':462,1100 '6':1143 'accept':63,98,138,1481 'across':182 'ad':884 'affect':583 'age':707,750,794,898,1102,1125,1439 'agent':1268,1311,1331 'along':215,1464 'alreadi':607,1492 'also':894 'ambigu':387 'angl':1537 'answer':1510,1562 'anyth':1121 'appli':341,1085,1205,1543 'approv':12,54 'architectur':1491 'area':600 'artifact':709 'ask':812,971,1499 'assist':550 'assumpt':1565 'attempt':1058,1200 'attribut':1176 'auto':160,189,229,238,927,938,942,945,947,975,988,991,1010,1038,1066,1073,1078,1097,1144,1159,1305,1360,1400,1423,1449,1463 'auto-mod':937,1422 'autonom':161,951 'autonomous-pipelin':950 'back':846 'bare':108 'behaviour':396,429,886,1022,1048,1369 'better':286 'block':731,768,1036,1184 'blocker':1247,1421 'bound':290 'break':1211 'broken':1353 'bug':149 'build':31,1169 'bypass':1081 'byte':277 'call':300 'cannot':1174,1204 'cap':458,736,1106,1243,1407 'cardin':390 'case':1230 'certain':1573 'chain':127,494,666,749,895,940,965,1131,1272,1287,1386 'chang':331,428,443,620,625,1021,1047,1477 'check':76,384,448,630,636 'chees':44 'cheese/cook':654,1297 'cheese/specs':105,114 'cheez':508 'clean':715 'clear':141,273 'code':25,36,499,1531 'command':327,558,564,590,603,836,922 'complet':1222 'condit':727 'confirm':395 'conflict':553 'context':539,1265,1341 'continu':571 'contract':354,394,411,1016,1375,1482,1568 'cook':1,37,116,203,713,719,792,882,980,1015,1370 'count':278,1432 'creep':454 'criteria':64,139 'cultur':790 'cure':186,235,795,900,1103,1109,1202,1220,1357,1363,1376,1405,1435 'cure-report':1434 'cut':368,422,436 'cycl':1104 'decid':1319 'decis':730,1505 'default':493,848 'defer':1431 'defin':608 'delta':534 'depend':1485 'deriv':269,342 'design':1504 'detail':459,847 'diff':533,537,780,858,883,1444 'direct':366,562 'discuss':89 'disk':811 'dispatch':866,910 'document':563,1027 'done':708,759 'downgrad':1252 'downstream':657,1460 'drift':450 'duplic':1373 'e.g':348 'earli':1162,1228,1412 'early-stop':1227 'edit':503 'end':233,281,1384 'entir':931,1336 'evalu':1218 'even':154 'everi':164,176,1020,1086,1208,1226,1459 'exist':588,1484 'explicit':1278 'factual':775 'fail':296,316,385,424,740,1170,1236 'failur':1173,1354 'fallback':525,529,532,574 'fals':1039,1185,1522 'fast':74,246,339,407,1516 'fast-path':73,245,338,406,1515 'featur':33 'file':146,280,310,624,687,699 'final':237,1135,1379,1398,1438 'find':181,1087,1117,1141,1181,1207,1367,1429 'finish':714 'fire':206,218 'fix':147,175,1114,1120,1210,1430 'flag':159,169,198,214,1454,1569 'flow':392 'focus':18,134 'follow':1005,1029 'follow-up':1004,1028 'form':123 'forward':968,1288 'fresh':1264 'fresh-context':1263 'full':672 'function':293 'fuzzi':83 'gap':1045,1061,1191 'gate':166,197,208,217,403,488,586,739,817,908,930,1084,1165,1474 'gh':540 'git':536,542 'github':538 'go':505 'goal':399 'green':1063 'guarante':1349 'halt':704,717 'hand':463 'handl':1355 'handoff':165,226,474,476,487,490,644,651,788,807,816,907,1316,1473 'happen':901 'hard':192,230,842 'harden':850,870,876,994,1025,1052,1193 'high':1091 'histori':543 'hit':737,1248 'honour':1293,1539 'immedi':923 'implement':20,29,60,135,433,1501 'in-scop':839 'initi':1116 'input':97 'inputs/outputs':271 'insid':1307,1338,1356 'invent':1490 'invoc':1461 'invok':925,986,1008,1071,1094,1147,1254,1303 'isol':1348 'issu':132 'keep':1217,1476 'kernel':1547 'know':1468,1577 'later':872 'lead':821,1554 'leav':868 'level':1042,1188 'like':28,400 'line':771 'link':548 'lint':1167 'lint/type/build':602 'liter':1542 'live':112,693,1548 'load':1564 'local':541 'loss':578 'made':321 'make':40,284,434,618 'manual':552 'markdown':701 'may':893 'md':106,115,655,1298 'mean':1013 'medium':178,1075,1080,1089 'medium-or-abov':177 'meet':70 'mention':576 'merg':549 'mergiraf':551 'metacognit':196 'minimum':649 'minimum-shap':648 'miss':728,1192 'mode':162,190,939,943,946,976,1145,1160,1361,1424,1450 'mold':791 'name':148,292,1563 'need':530 'never':610,909,1146 'new':885,1140 'newlin':283,352 'next':482,638,705,743,833,1291,1324,1440 'no-writ':86 'non':398,916 'non-goal':397 'non-stop':915 'none':867 'obvious':314 'ok':703,711 'one':99,307,358,380,419,1060 'one-sent':357 'open':1149 'opt':754 'option':158,823,849 'orchestr':662,1313 'orient':770 'out-of-scop':521 'output':329,622 'outsid':741 'overrid':1295,1328 'own':1270,1377 'packag':468,560,674,690,724,763,800,983,1557 'package-readi':467,673,689,799,982,1556 'package-report':723,762 'pass':187,212,239,323,438,621,863,995,1110,1112,1118,1128,1203,1221,1406,1426,1462 'past':14,56,129 'path':75,103,119,247,340,408,1224,1394,1437,1517 'pattern':1487 'per':721,1346,1366 'per-find':1365 'per-phas':1345 'phase':658,1260,1282,1292,1325,1347 'phrase':27 'pipelin':789,952,1337 'plain':535 'plan':84 'plus':601 'pr':1153 'pre':874 'pre-select':873 'precis':59,580 'prefer':526,531,567,1483 'premis':1040,1186,1523,1528 'prepend':680 'present':266 'press':706,745,757,793,862,896 'print':804,1387 'proceed':365,933 'produc':465 'product':442 'project':589 'prompt':480,1277 'propag':167,193,843,1453 'provid':547 'qualiti':402,585,738,1164 're':669,1124 're-ag':1123 're-read':668 'reach':1244,1409 'read':501,670,1314 'readabl':451 'readi':469,675,691,801,984,998,1000,1448,1558 'recommend':854,1007 'references/package-report.md':471 'references/tdd-loop.md':431,461 'regardless':1137 'region':305 'reject':1493 'relev':595 'remain':632,1142 'remov':611 'repo':1553 'report':470,676,692,725,764,787,802,985,1069,1233,1380,1436,1559 'repositori':606 'request':21,61,136,259,363,416,1518,1541 'requir':15,57 'residu':1570 'resolut':554 'resolv':117 'rest':1519 'restat':360,417 'resum':664 'return':275,1183 'reveal':1502 'revert':1180,1215 'revert-or-keep':1214 'revert/defer':1368 'review':93,225,853,856,879,1033,1442 'review-on':92 'review-saf':1032 'risk':584,633,1571 'round':373,457 'round-trip':372 'rout':375 'rule':519,1475 'run':249,592,631,919,967,992,1334 'runnabl':326 'safe':1034 'say':1279 'schema':700 'scope':152,288,401,453,524,742,841,1096,1478 'script':561 'seam':890 'search':500 'second':698 'see':188,240,430,489,513,941,1358 'select':518,875,912,918,921,1083,1209 'sentenc':359,420,776 'separ':1457 'shape':650 'share':223,486,815,1545 'share-for-review':222 'ship':796 'signal':960 'silent':386,1251,1352 'sin':391 'singl':145,295,774,1179 'single-fil':144 'site':301 'skill':3,48,509,515,639,835,1237,1382,1417,1458 'skill-cook' 'skills/age/references/voice.md':1550 'skills/cure/skill.md':1359 'skills/hard-cheese/references/composition.md':243 'skills/hard-cheese/skill.md':241 'skip':163,612,635,756,860,928,1470 'slug':109,344,475,477,645,652,678,808,1317 'small':304 'smallest':441 'sound':1018 'source-paulnsorensen' 'spawn':1258,1276,1322 'spec':13,39,55,102,111,130,157,371,449,729,1496,1507,1513 'specif':299 'specul':1574 'spin':1055,1196 'stabl':1051 'stake':1074,1079,1092 'standalon':72,244,405 'standard':748 'state':334,1012 'status':702,710,716,765 'stay':1154 'step':483,904,973,1441,1467 'stop':720,726,865,917,1037,1132,1161,1229,1300,1413,1497,1524 'straight':934 'sub':1267,1310,1330 'sub-ag':1266,1309,1329 'success':1223,1393 'suggest':637 'summar':623 'summari':784,1136,1389,1425 'surfac':1126,1231,1419,1526 'switch':953 'tail':274,285,350 'tail-trailing-newlin':349 'task':68,143,254,347,409,557 'tast':446,734 'taste-test':445,733 'tell':1239 'test':297,317,425,437,447,556,596,616,628,732,735,851,877,1026,1053,1166,1194,1212 'three':264,383,1057,1199 'tool':517,527,568 'top':683 'topic-agent-skills' 'topic-ai-coding' 'topic-claude-code' 'topic-code-review' 'topic-developer-tools' 'total':1111 'touch':599,888 'trail':351 'treat':257,353 'trigger':1157 'trip':374 'trivial':268 'tweak':153 'two':185,309,456,1108,1219,1404 'two-cure-pass':1403 'two-round':455 'type':1168 'unambigu':19,67,142,256,261 'unavail':570 'unfix':1041,1187 'unrel':615 'untest':889 'up':1030 'updat':1151 'use':6,46,80,125,587,954 'user':9,51,414,546,753,829,892,958,1156,1241 'user-provid':545 'user-trigg':1155 'usual':104,640 'verb':826 'verif':312,1099 'via':484,813,902 'voic':1546 'want':23,830,962 'way':335 'weaken':614 'well':151 'well-scop':150 'wheel':1056,1197 'whether':1139,1320 'whole':964 'whose':110,328 'without':155,250,282,369,667,969,1062,1326 'work':42,95,1534 'would':1333,1350 'write':34,88,423,472,646,1067,1296,1530 'written':26 'wrong':276,1536","prices":[{"id":"b2d0a740-3d7e-4483-8802-c641614c4135","listingId":"795b7c34-9a46-45ad-b0c2-88ebc6234bd6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"paulnsorensen","category":"easy-cheese","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:08.585Z"}],"sources":[{"listingId":"795b7c34-9a46-45ad-b0c2-88ebc6234bd6","source":"github","sourceId":"paulnsorensen/easy-cheese/cook","sourceUrl":"https://github.com/paulnsorensen/easy-cheese/tree/main/skills/cook","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:08.585Z","lastSeenAt":"2026-05-18T19:13:40.813Z"}],"details":{"listingId":"795b7c34-9a46-45ad-b0c2-88ebc6234bd6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"paulnsorensen","slug":"cook","github":{"repo":"paulnsorensen/easy-cheese","stars":7,"topics":["agent-skills","ai-coding","claude-code","code-review","developer-tools"],"license":"mit","html_url":"https://github.com/paulnsorensen/easy-cheese","pushed_at":"2026-05-18T06:33:38Z","description":"Cheese your code 🧀 — high-quality results as easy as cheese. A portable, harness-agnostic Agent Skills toolkit.","skill_md_sha":"e283b94e54875c3a0690e39c67196c015f6743a8","skill_md_path":"skills/cook/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/paulnsorensen/easy-cheese/tree/main/skills/cook"},"layout":"multi","source":"github","category":"easy-cheese","frontmatter":{"name":"cook","license":"MIT","description":"This skill should be used when the user has an approved spec, pasted requirements, or a focused unambiguous implementation request and wants the code written — phrases like \"implement this\", \"build this feature\", \"write the code\", \"cook this spec\", \"make it work\", \"/cook .cheese/specs/<slug>.md\", \"fix this bug\" (when the bug has a clear fix). Runs a TDD-disciplined contract → cut → implement → taste-test → handoff loop with scoped edits via cheez-write. Supports `--auto` for the autonomous chain through `/press → /age → /cure` (see `## Auto mode`). Use even when the user just says \"go\" or \"ship it\" if a spec or clear acceptance criteria is in scope. `/cook` runs standalone when the task is unambiguous (clear inputs, expected outputs, verifiable result) — a spec is helpful but not required. If the request is genuinely fuzzy, route to `/mold` first; if it needs no writes, route to `/culture`. After `/mold` (optional); before `/press` → `/age` → `/cure`."},"skills_sh_url":"https://skills.sh/paulnsorensen/easy-cheese/cook"},"updatedAt":"2026-05-18T19:13:40.813Z"}}