{"id":"47243cc8-1b92-4c48-a71e-6400f49a6b0d","shortId":"NbRL3F","kind":"skill","title":"mold","tagline":"This skill should be used when the user has a fuzzy idea, half-formed feature, or design direction and wants to converge on a spec — phrases like \"let's design X\", \"I'm thinking about Y\", \"what should the API for Z look like\", \"shape this into a spec\", \"I want to add a feature th","description":"# /mold\n\nUse this skill when the user has a fuzzy feature idea, bug symptom, or design direction and wants a coherent spec or issue set before implementation.\n\nDo not use it for free-form discussion with no artifact intent (`/culture`), direct implementation (`/cook`), or research-only questions (`/briesearch`).\n\n## Flow\n\n1. **Route** — pick a starting mode from the input shape (see `references/modes.md`) and announce it in one line. If the user's framing rests on a false premise or a loaded assumption, name it before routing.\n2. **Dialogue** — build shared understanding through the smallest useful question to the user, but contribute at maximum useful depth between questions (full options, named edge cases, concrete evidence — not gestural sketches). Ground every critical claim with `cheez-search`, `cheez-read`, or a Validate Cycle (`references/validate-cycle.md`). Track contradictions across turns; if turn N contradicts an earlier conclusion, flag and resolve it before continuing.\n3. **Sketch** — for any feature touching >1 module or a new public interface, run the shape check (`references/shape-check.md`) on the touched symbols, then lock seams in pseudocode signatures before talking spec content. Default to full signatures, not hand-waving.\n4. **Two-key handshake** — both the user (explicit verb) and the agent (coherence self-check) must agree before extraction. See `references/handshake.md`.\n5. **Curdle** — write the approved spec to `.cheese/specs/<slug>.md` (and optional `.cheese/issues/<slug>-NNN.md`). Format and slug rules in `references/curdle.md`.\n6. **Hand off** — once the spec is on disk, prompt the next step via the shared handoff gate in [`../../shared/handoff-gate.md`](../../shared/handoff-gate.md). Never dispatch before the user selects; after a non-stop selection, run the selected downstream skill immediately.\n\n## Modes\n\n| Mode | Use when | Goal |\n| --- | --- | --- |\n| Explore | The idea is vague | Identify the real problem and pain point |\n| Ground | A file, bug, or existing doc is named | Verify facts against evidence |\n| Shape | The goal is known but approach is open | Compare viable options (Do Nothing always included) |\n| Sketch | Interfaces or module boundaries matter | Lock responsibilities and seams |\n| Grill | A favoured approach needs stress-testing | Steelman the rejected option, find weak assumptions and edge cases |\n| Diagnose | A symptom, failure, or trace is supplied | Build a Loop → reproduce → hypothesize → confirm root cause |\n\nFull mode definitions, exit criteria, and user knobs in `references/modes.md`.\n\n## Preferred tools and fallbacks\n\nCode search, reading, and editing (including spec writing) all go through the cheez-* skills (`/cheez-search`, `/cheez-read`, `/cheez-write`) — see those skills for tool selection rules. Shape checks specifically use `cheez-search` callers (`kind: \"callers\"`) plus `tilth_deps`; the procedure lives in `references/shape-check.md`.\n\nBeyond cheez-* there are mold-specific tools:\n\n| Need | Prefer | Fallback |\n| --- | --- | --- |\n| External validation | `/briesearch` with Context7/Tavily | user-provided docs, repo docs, or note as unverified |\n\nOptional tools accelerate the work; missing tools do not block the dialogue. When evidence is unavailable, mark the affected claim `[?]` until settled.\n\n## Sub-agent context gate\n\n`/mold` keeps the dialogue, contradictions, approval state, and the two-key handshake in the parent context — those never delegate. Spawn a read-only grounding sub-agent only when validation would flood the conversation with raw evidence or graph output:\n\n- External validation needs deep `/briesearch` evidence, three or more doc fetches, or two or more independent search angles.\n- Shape check touches more than 5 symbols, fans out across many modules, or requires large caller/dependency traversals.\n- Diagnose mode needs bulky logs, traces, or search output before a concise root-cause hypothesis can be formed.\n\nThe sub-agent returns a digest: a claim table, shape-check summary, or root-cause evidence summary with citations and confidence. The parent reads that digest, asks the user the smallest useful next question, and still owns the handshake. Do not spawn sub-agents for normal dialogue, the approval gate, or curdle/spec writing.\n\nDigest size, parent-vs-sub-agent split, and harness-agnostic sub-agent selection live in the shared kernel at `skills/age/references/sub-agent-gate.md`.\n\n## Approval gate\n\nCurdle requires the **two-key handshake**: an explicit user verb (e.g. `curdle`, `ship it`) and the agent's coherence self-check. The full checklist, mandatory gates, and override semantics live in `references/handshake.md` — do not duplicate them here.\n\nBefore the handshake fires, also run the **agent-introduced-scope** check (`references/handshake.md` § Agent-introduced scope): list every distinguishing noun in Approach / Decisions / Interface sketches, grep the prior user turns for each, and flag any unmatched noun as `[AGENT-INTRODUCED]`. The user must explicitly approve each flagged item before extraction — silent inclusion of an agent-introduced feature is the cardinal sin. Curdle is the single chokepoint for this check; downstream skills (`/cook`, etc.) trust the spec frontmatter and do not re-block, so the gate must fully resolve here.\n\nIf any gate is unmet, propose the smallest next question or evidence check. Write artifacts only after both keys pass.\n\n## Output paths\n\nDefault to project-local cheese artifacts when the user wants files:\n\n- Spec: `.cheese/specs/<slug>.md`\n- Issues: `.cheese/issues/<slug>-001.md`, `.cheese/issues/<slug>-002.md`, ...\n\n## --hard\n\n`/mold --hard` propagates `--hard` through to `/cook` at handoff (any of the cook-flavoured options below carries the flag forward). Mold itself runs no gate — the metacognitive vibecheck fires later, at `/cure`'s share-for-review boundary. See `skills/hard-cheese/SKILL.md` and `skills/hard-cheese/references/composition.md`.\n\n## Handoff\n\n**Pipeline:** culture → **[mold]** → cook → press → age → cure → ship\n\nAfter the spec is written, ask the user 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 the spec path and any in-scope `--hard` propagation) is the backing detail. Default options vary with the shape-check verdict:\n\n**Low- and medium-blast-radius specs (verdict `low` or `medium`):**\n\n- **Implement the spec** *(recommended)* — `/cook .cheese/specs/<slug>.md`.\n- **Implement and auto-review** — `/cook --auto .cheese/specs/<slug>.md`, chains straight through `/press → /age → /cure` autonomously, fixing every medium-or-above finding across up to two cure passes. Stops at the final cure pass; opening or updating the PR stays a manual step. Offer when acceptance criteria are explicit *and* the user has signalled they want the pipeline to run forward without per-step approval. Never pre-select; auto mode is opt-in.\n- **Research more first** — `/briesearch`, gather more external evidence before implementing.\n- **Stop** — dispatch none; leave the spec for later.\n\n**High-blast-radius specs (verdict `high` only):**\n\nThe spec is large enough that per-phase context contamination becomes a real concern: review reasoning softens when the same window contains the cook reasoning, and the parent context bloats across phases. Offer the fresh-context orchestrator and the manual compaction path:\n\n- **Run the full pipeline in fresh-context isolation** *(recommended)* — `/ultracook .cheese/specs/<slug>.md`, autonomous chain (`cook → press → age → cure → age → cure → age`, all `--auto`) with each phase running inside its own sub-agent, blind to prior phases.\n- **Implement manually, one phase at a time** — `/cook .cheese/specs/<slug>.md`.\n- **Compact and resume by hand** — dispatch none; clear context, then dispatch `/cook .cheese/specs/<slug>.md` or `/ultracook .cheese/specs/<slug>.md` directly. (`/cheese --continue` scans phase handoff slugs only — fresh specs don't surface there until cook lands a slug — so dispatching the explicit command is the resumption path here.)\n- **Stop** — dispatch none; leave the spec for later.\n\n`/cook --auto` is omitted from the high-blast-radius offer set: with a large footprint, the fresh-context property of `/ultracook` is the actual motivation for going autonomous, and the in-session chain it offers is the wrong transport for that need. Never pre-select an autonomous option; the user must opt in. `medium` blast radius keeps the standard handoff because the in-session `/cook --auto` chain is still the right tool for that footprint — the fresh-context premium is only worth paying when the spec actually crosses module boundaries broadly enough to flip the verdict to `high`.\n\n## Rules\n\n- Dialogue first; artifacts are the by-product.\n- Do not implement code.\n- Do not write production files before the approval gate.\n- Do not silently settle uncertain claims.\n- Apply the shared voice kernel (lives at `skills/age/references/voice.md` in this repo): correct false premises, flag confidence as `certain | speculating | don't know` on each critical claim, steelman before dismissing, ask the smallest useful question while contributing at maximum useful depth.","tags":["mold","easy","cheese","paulnsorensen","agent-skills","ai-coding","claude-code","code-review","developer-tools"],"capabilities":["skill","source-paulnsorensen","skill-mold","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/mold","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,312 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:41.269Z","embedding":null,"createdAt":"2026-05-18T13:21:09.230Z","updatedAt":"2026-05-18T19:13:41.269Z","lastSeenAt":"2026-05-18T19:13:41.269Z","tsv":"'-001':879 '-002':882 '/../shared/handoff-gate.md':311,312,951,952 '/age':1024 '/briesearch':108,490,576,1091 '/cheese':1225 '/cheez-read':450 '/cheez-search':449 '/cheez-write':451 '/cook':102,821,891,1008,1016,1203,1217,1261,1330 '/culture':99 '/cure':917,1025 '/mold':59,530,885 '/press':1023 '/ultracook':1168,1221,1283 '1':110,216 '2':146 '3':210 '4':250 '5':273,595 '6':292 'acceler':505 'accept':1057 'across':195,599,1034,1145 'actual':1286,1353 'add':55 'affect':521 'age':934,1175,1177,1179 'agent':262,527,558,629,673,689,697,725,755,761,787,804,1191 'agent-introduc':760,786,803 'agent-introduced-scop':754 'agnost':694 'agre':268 'also':751 'alway':375 'angl':589 'announc':123 'api':42 'appli':1393 'approach':367,390,769 'approv':277,535,678,706,793,1077,1385 'artifact':97,854,868,1368 'ask':655,942,1422 'assumpt':141,401 'auto':1014,1017,1082,1181,1262,1331 'auto-review':1013 'autonom':1026,1171,1290,1311 'back':982 'becom':1125 'beyond':477 'blast':997,1108,1269,1319 'blind':1192 'bloat':1144 'block':512,832 'boundari':381,923,1356 'broad':1357 'bug':71,351 'build':148,413 'bulki':610 'by-product':1371 'caller':466,468 'caller/dependency':605 'cardin':809 'carri':902 'case':171,404 'caus':420,621,643 'certain':1410 'chain':1020,1172,1296,1332 'check':226,266,460,591,638,730,758,818,852,991 'checklist':733 'chees':867 'cheese/issues':284,878,881 'cheese/specs':280,875,1009,1018,1169,1204,1218,1222 'cheez':183,186,447,464,478 'cheez-read':185 'cheez-search':182,463 'chokepoint':815 'citat':647 'claim':180,522,634,1392,1418 'clear':1213 'code':435,1377 'coher':79,263,727 'command':968,1247 'compact':1156,1206 'compar':370 'concern':1128 'concis':618 'conclus':203 'concret':172 'confid':649,1408 'confirm':418 'contain':1136 'contamin':1124 'content':241 'context':528,546,1123,1143,1151,1165,1214,1280,1344 'context7/tavily':492 'continu':209,1226 'contradict':194,200,534 'contribut':160,1428 'converg':24 'convers':565 'cook':898,932,1138,1173,1239 'cook-flavour':897 'correct':1404 'criteria':425,1058 'critic':179,1417 'cross':1354 'cultur':930 'curdl':274,708,720,811 'curdle/spec':681 'cure':935,1038,1044,1176,1178 'cycl':191 'decis':770 'deep':575 'default':242,862,984 'definit':423 'deleg':549 'dep':471 'depth':164,1432 'design':19,32,74 'detail':983 'diagnos':405,607 'dialogu':147,514,533,676,1366 'digest':632,654,683 'direct':20,75,100,1224 'discuss':94 'disk':300 'dismiss':1421 'dispatch':314,1099,1211,1216,1244,1254 'distinguish':766 'doc':354,496,498,581 'downstream':328,819 'duplic':744 'e.g':719 'earlier':202 'edg':170,403 'edit':439 'enough':1118,1358 'etc':822 'everi':178,765,1028 'evid':173,360,516,568,577,644,851,1095 'exist':353 'exit':424 'explicit':258,716,792,1060,1246 'explor':336 'extern':488,572,1094 'extract':270,798 'fact':358 'failur':408 'fallback':434,487 'fals':136,1405 'fan':597 'favour':389 'featur':17,57,69,214,806 'fetch':582 'file':350,873,1382 'final':1043 'find':399,1033 'fire':750,914 'first':1090,1367 'fix':1027 'flag':204,781,795,904,1407 'flavour':899 'flip':1360 'flood':563 'flow':109 'footprint':1276,1340 'form':16,93,625 'format':286 'forward':905,1072 'frame':132 'free':92 'free-form':91 'fresh':1150,1164,1232,1279,1343 'fresh-context':1149,1163,1278,1342 'frontmatt':826 'full':167,244,421,732,1160 'fulli':837 'fuzzi':12,68 'gate':309,529,679,707,735,835,842,910,949,1386 'gather':1092 'gestur':175 'go':444,1289 'goal':335,363 'graph':570 'grep':773 'grill':387 'ground':177,348,555 'half':15 'half-form':14 'hand':248,293,1210 'hand-wav':247 'handoff':308,893,928,948,1229,1324 'handshak':254,542,667,714,749 'har':693 'hard':884,886,888,978 'harness-agnost':692 'high':1107,1112,1268,1364 'high-blast-radius':1106,1267 'hypothes':417 'hypothesi':622 'idea':13,70,338 'identifi':341 'immedi':330 'implement':85,101,1004,1011,1097,1196,1376 'in-scop':975 'in-sess':1293,1327 'includ':376,440 'inclus':800 'independ':587 'input':118 'insid':1186 'intent':98 'interfac':222,378,771 'introduc':756,762,788,805 'isol':1166 'issu':82,877 'item':796 'keep':531,1321 'kernel':703,1397 'key':253,541,713,858 'kind':467 'knob':428 'know':1414 'known':365 'land':1240 'larg':604,1117,1275 'later':915,1105,1260 'lead':953 'leav':1101,1256 'let':30 'like':29,46 'line':127 'list':764 'live':474,699,739,1398 'load':140 'local':866 'lock':233,383 'log':611 'look':45 'loop':415 'low':993,1001 'm':35 'mandatori':734 'mani':600 'manual':1053,1155,1197 'mark':519 'matter':382 'maximum':162,1430 'md':281,876,880,883,1010,1019,1170,1205,1219,1223 'medium':996,1003,1030,1318 'medium-blast-radius':995 'medium-or-abov':1029 'metacognit':912 'miss':508 'mode':115,331,332,422,608,1083 'modul':217,380,601,1355 'mold':1,482,906,931 'mold-specif':481 'motiv':1287 'must':267,791,836,1315 'n':199 'name':142,169,356 'need':391,485,574,609,1305 'never':313,548,1078,1306 'new':220 'next':303,661,848,965 'nnn.md':285 'non':322 'non-stop':321 'none':1100,1212,1255 'normal':675 'note':500 'noth':374 'noun':767,784 'offer':1055,1147,1271,1298 'omit':1264 'one':126,1198 'open':369,1046 'opt':1086,1316 'opt-in':1085 'option':168,283,372,398,503,900,955,985,1312 'orchestr':1152 'output':571,615,860 'overrid':737 'own':665 'pain':346 'parent':545,651,686,1142 'parent-vs-sub-ag':685 'pass':859,1039,1045 'path':861,972,1157,1251 'pay':1349 'per':1075,1121 'per-phas':1120 'per-step':1074 'phase':1122,1146,1184,1195,1199,1228 'phrase':28 'pick':112 'pipelin':929,1069,1161 'plus':469 'point':347 'pr':1050 'pre':1080,1308 'pre-select':1079,1307 'prefer':431,486 'premis':137,1406 'premium':1345 'press':933,1174 'prior':775,1194 'problem':344 'procedur':473 'product':1373,1381 'project':865 'project-loc':864 'prompt':301 'propag':887,979 'properti':1281 'propos':845 'provid':495 'pseudocod':236 'public':221 'question':107,155,166,662,849,1426 'radius':998,1109,1270,1320 'raw':567 're':831 're-block':830 'read':187,437,553,652 'read-on':552 'real':343,1127 'reason':1130,1139 'recommend':1007,1167 'references/curdle.md':291 'references/handshake.md':272,741,759 'references/modes.md':121,430 'references/shape-check.md':227,476 'references/validate-cycle.md':192 'reject':397 'repo':497,1403 'reproduc':416 'requir':603,709 'research':105,1088 'research-on':104 'resolv':206,838 'respons':384 'rest':133 'resum':1208 'resumpt':1250 'return':630 'review':922,1015,1129 'right':1336 'root':419,620,642 'root-caus':619,641 'rout':111,145 'rule':289,458,1365 'run':223,325,752,908,1071,1158,1185 'scan':1227 'scope':757,763,977 'seam':234,386 'search':184,436,465,588,614 'see':120,271,452,924 'select':318,324,327,457,698,1081,1309 'self':265,729 'self-check':264,728 'semant':738 'session':1295,1329 'set':83,1272 'settl':524,1390 'shape':47,119,225,361,459,590,637,990 'shape-check':636,989 'share':149,307,702,920,947,1395 'share-for-review':919 'ship':721,936 'signal':1065 'signatur':237,245 'silent':799,1389 'sin':810 'singl':814 'size':684 'sketch':176,211,377,772 'skill':3,62,329,448,454,820,967 'skill-mold' 'skills/age/references/sub-agent-gate.md':705 'skills/age/references/voice.md':1400 'skills/hard-cheese/references/composition.md':927 'skills/hard-cheese/skill.md':925 'slug':288,1230,1242 'smallest':153,659,847,1424 'soften':1131 'source-paulnsorensen' 'spawn':550,670 'spec':27,51,80,240,278,297,441,825,874,939,971,999,1006,1103,1110,1115,1233,1258,1352 'specif':461,483 'specul':1411 'split':690 'standard':1323 'start':114 'state':536 'stay':1051 'steelman':395,1419 'step':304,1054,1076 'still':664,1334 'stop':323,1040,1098,1253 'straight':1021 'stress':393 'stress-test':392 'sub':526,557,628,672,688,696,1190 'sub-ag':525,556,627,671,695,1189 'summari':639,645 'suppli':412 'surfac':1236 'symbol':231,596 'symptom':72,407 'tabl':635 'talk':239 'test':394 'th':58 'think':36 'three':578 'tilth':470 'time':1202 'tool':432,456,484,504,509,1337 'topic-agent-skills' 'topic-ai-coding' 'topic-claude-code' 'topic-code-review' 'topic-developer-tools' 'touch':215,230,592 'trace':410,612 'track':193 'transport':1302 'travers':606 'trust':823 'turn':196,198,777 'two':252,540,584,712,1037 'two-key':251,539,711 'unavail':518 'uncertain':1391 'understand':150 'unmatch':783 'unmet':844 'unverifi':502 'updat':1048 'use':6,60,88,154,163,333,462,660,1425,1431 'user':9,65,130,158,257,317,427,494,657,717,776,790,871,944,961,1063,1314 'user-provid':493 'vagu':340 'valid':190,489,561,573 'vari':986 'verb':259,718,958 'verdict':992,1000,1111,1362 'verifi':357 'via':305,945 'viabl':371 'vibecheck':913 'voic':1396 'vs':687 'want':22,53,77,872,962,1067 'wave':249 'weak':400 'window':1135 'without':1073 'work':507 'worth':1348 'would':562 'write':275,442,682,853,1380 'written':941 'wrong':1301 'x':33 'y':38 'z':44","prices":[{"id":"3ae24d65-d009-4ad9-8f52-159151701bb8","listingId":"47243cc8-1b92-4c48-a71e-6400f49a6b0d","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:09.230Z"}],"sources":[{"listingId":"47243cc8-1b92-4c48-a71e-6400f49a6b0d","source":"github","sourceId":"paulnsorensen/easy-cheese/mold","sourceUrl":"https://github.com/paulnsorensen/easy-cheese/tree/main/skills/mold","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:09.230Z","lastSeenAt":"2026-05-18T19:13:41.269Z"}],"details":{"listingId":"47243cc8-1b92-4c48-a71e-6400f49a6b0d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"paulnsorensen","slug":"mold","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":"e384f97722aac8e9dcefe9a6d61d538e5eda970d","skill_md_path":"skills/mold/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/paulnsorensen/easy-cheese/tree/main/skills/mold"},"layout":"multi","source":"github","category":"easy-cheese","frontmatter":{"name":"mold","license":"MIT","description":"This skill should be used when the user has a fuzzy idea, half-formed feature, or design direction and wants to converge on a spec — phrases like \"let's design X\", \"I'm thinking about Y\", \"what should the API for Z look like\", \"shape this into a spec\", \"I want to add a feature that…\", \"/mold\". Runs an iterative dialogue (Explore / Ground / Shape / Sketch / Grill / Diagnose), grounds every critical claim with cheez-search or briesearch, locks public seams in pseudocode, and only writes a spec to `.cheese/specs/<slug>.md` after an explicit approval gate. Use even when the user is \"just thinking out loud\" if they want the dialogue to leave behind a written artifact — for pure no-write thinking, route to `/culture` instead. After `/culture` (optional); before `/cook`."},"skills_sh_url":"https://skills.sh/paulnsorensen/easy-cheese/mold"},"updatedAt":"2026-05-18T19:13:41.269Z"}}