关于 cook
cook 是面向开发工作的技能,可依据规格或任务实现限定范围的改动,并在交接前进行验证和审查。
主要功能
- 01依据规格实施改动
- 02运行测试与质量门禁
- 03行为改动审查循环
- 04快速与扇出执行路径
- 05结构化交接报告
适用场景
- 01实现范围明确的缺陷修复
- 02为行为改动编写验收覆盖
- 03依据已验证计划处理多部分工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill cook安装后在 Claude Code 中输入/cook确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
wedge.tomlreferences/auto-mode.mdcommands.mdevals.mdfan-pathway.mdpackage-report.mdpress-loop.mdprototype-mode.mdquality-gates.mdtdd-loop.mdwriter-views.md详细介绍
/cook
契约
cook(spec_ref, correction = false) -> handoff(next = age | mold | done)。
规范未通过时,Cook 会返回 next: mold。
扇出运行中,如果修复范围停滞、凝块未通过或覆盖不完整,也会返回 next: mold。
Cook 不要求先有失败测试,也不会加载门禁收据。
对于行为类工作,Cook 负责在 Press 之前完成首次验收覆盖;参见 references/tdd-loop.md § 内层 TDD。
这是一项报告义务,不是门禁。
对于文档、重构、测试或外观类工作,应修改相应内容并直接验证。
仅当存在有效的 Press 发现或 coverage_gap 时,才使用 correction = true;参见 references/press-loop.md。
不要削弱现有测试。
阶段入口
运行 python3 skills/cook/scripts/cook.pyz wheypoint-resolve --ref <slug>。
authoritative 使用记录;其 working_context 是批量 tilth_read 中的第一项。
not-found 时从冷启动继续;legacy 会显示其来源和 slug,然后继续。
遇到 gated、ambiguous 和 error 时停止并显示载荷。
显示提示性发现 stale-commit 和 grounded-path-missing。
将其 record.revision_id 保留为 <base>(§ 基础修订版)。
输入
接受粘贴的规范或问题、聚焦的验收标准,或明确无歧义的任务。
按原文读取明确指定的规范路径。
将不带路径的 slug 解析为 python3 skills/cook/scripts/cook.pyz artifact-path specs <slug> 返回的 path。
Mold 规范路径或已定稿的直接输入通过 § Mold 到 Cook 的入口进入。
标志:
--auto在 Cook 内的 Press 循环后串联运行/age → /cure。--prototype运行 plan → spike → check 循环,然后进行稳定化;请阅读references/prototype-mode.md。--hard会传递到/plate。--open-pr允许终端/plate发布。自动模式绝不会添加此标志。--resume <slug>恢复带类型的扇出交接及其引用的构件。--result <path>运行已就绪的 Mold 结果。--spec <spec-path>指定所选 Mold 规范。如果 plan 的dependencies跨越landing.layers,则会在分派编码器之前拒绝执行。
可选上下文载荷:
handoff_context.wiki_hits包含来自仓库 Wiki 语料库的{page, line, why}条目。 此键为可选,默认不存在。 若条目缺少page、line或why,则拒绝该条目。 在 契约 步骤中显示每条已接受的命中记录,以便用户质疑过时的决策;优先采用这些决策,而不是自行编造方案。../cheese/references/handoff-gate.md定义了该载荷。
请阅读 references/auto-mode.md、references/fan-pathway.md 和 ../cheese/references/formatting.md,了解这些策略。
独立快速路径
仅当输入、输出、范围和验证方式都明确时,/cook 才会绕过 /mold。
任务必须在一两个文件中指出一个 bug 或调用点,并且有失败测试或预期输出检查。
不得触发任何杠杆条件;参见 ../cheese/references/routing-policy.md § 杠杆条件。
派生一个 slug,然后重述 契约。
如果歧义检查未通过,则将任务路由到 /mold。
流程
- 契约 — 确认行为、非目标、范围和门禁。
在契约中打印
../mold/references/shape-check.md中的形状检查块,或者根据shape-check.md§ 何时跳过,写入shape check skipped: single-module change这一行。没有检查块,就不写代码。 如果.cheese/glossary/<slug>.md存在,则使用其中的规范术语。 - 实现 — 在适用时先编写测试;没有门禁要求时则不必先写。 对于非行为类工作,只更改适用的部分。
- 验证 — 再次运行相关质量门禁。 阅读完整的门禁输出;对于非行为类工作,验证请求的路径。
- 试味 — 对涉及多个文件或公共接口的差异,使用新上下文审查。
其他情况使用内联审查,最多两轮。
详情请阅读
references/tdd-loop.md。 - 压制循环 — 对于行为类工作,Cook 会派发一个使用新上下文的 Press Agent;不提供选项。
请阅读
references/press-loop.md。 非行为类工作跳过此步骤。 - 交接 — 编写包报告和 slug,然后转至
/age → /cure。
分扇路径
/cook 根据类型化规划器结果选择三种形态之一。
请阅读 references/fan-pathway.md,了解拓扑和生命周期。
快速路径。 对爆炸半径较低或中等的单个凝乳,使用单编码者路径。
分凝乳。 必须提供绑定的 spec_ref、planner_result_ref、plan_ref,以及来自就绪 Mold 定稿的精确 MoldCookCoverage。主机在 execute_bound_plan 派发任何编写者之前会验证这些内容。
通过带进度感知的分扇状态机运行 cook(CurdPlan) → reviewer(age),并提供已确认的诊断和 CureDiagnosisBinding,直至状态干净、停滞或受阻。
每个凝乳的 Cook 循环都会运行自己的 Press 循环。
屏障会在合并后的 tip 上运行 Cook 集成验收检查。
合并后不运行全局 Press。
未完成的分扇工作绝不会生成 next: press;停滞时转至 Mold 补救规划。
未分凝乳。 小型工作使用单编码者路径。
对于大型工作,询问“12 个 AC → 5 个凝乳、2 波、最多派发 25 个 Agent。继续吗?”,除非使用 --auto。
每波最多安排四项。
使用 python3 skills/cook/scripts/cook.pyz worktree teardown 进行清理。
在派发的阶段中传递 --auto。
基线采集
分扇模式会在任何凝乳开始烹制之前记录质量债务对比;裸模式会在变更前的树上记录。
references/quality-gates.md 定义了精确的采集、分类、排除有意 RED 项以及基线制品的规则。
对于源代码变更,请遵循 code-intelligence-routing.md 和 harness-portability.md。
slash commands are host renderings, not the control model;请调用对应的已安装能力。
质量门禁
只运行项目中已有的命令。 运行与变更区域最相关的测试。 如果项目定义了 lint、类型检查和构建命令,也要运行。 不要删除、跳过或弱化无关测试来让变更通过。
使用基线处理门禁失败。
references/quality-gates.md 定义了策略、分类术语和基线制品。
references/writer-views.md 会为编写者视图负载内联生成架构。
在 Agent 编写的 JSON 到达主机拥有的标识符之前,normalize 和 validate CLI 会应用这些架构。
输出
遵循 ../cheese/references/formatting.md 中的项目风格。
使用 references/package-report.md 报告文件、原因、检查、风险和下一项技能。
交接标识
在 .cheese/cook/<slug>.md 顶部写入最精简格式的交接标识。
报告也使用同一文件;不要创建第二个文件。
使用以下架构:
status: <canonical status field>
next: mold | age | done
artifact: <path to the upstream artifact this run consumed, or empty>
taste_test: inline-pass | dispatched-pass | revised | deferred-to-orchestrator
durable_flags: none | <one line per flag: what durable knowledge changed -> target wiki page>
baseline: none | <path to the baseline artifact — shape in references/quality-gates.md § Baseline block shape>
<one-line orientation: what cook changed>
交接契约定义了规范的 status: 语法,包括 ok 和 halt。
只有 next: 和其他附加键值行因阶段而异。
artifact: 用于命名本次运行所使用的上游产物。
对于 Mold 路由,请使用获批的规格路径。
如果本次运行未使用上游产物,请将 artifact: 留空。
不要将 artifact: 指向此 Cook 报告。
为已类型化的扇出结果生成此交接时,请使用规范的边界写入器。 明确写出结果架构:
python3 skills/cook/scripts/cook.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase cook --next age [--base <base>] \
--artifact <artifact-path> --orientation "<one-line orientation>" \
--payload-schema https://schemas.easy-cheese.dev/curd-result \
--grounded <path[#start-end]> \
--body-file <path to the package report body>
写入器会替换目标文件。
传入 --body-file,使软件包报告保留在同一文件中。
如果不传入此标志,写入器只会输出前言并删除报告。
对于重新规划或规格失败,请使用 --next mold 和 https://schemas.easy-cheese.dev/planner-request 负载。
references/fan-pathway.md 定义了每种失败类型对应的请求种类。
这些 phase 和 next 值仅用于路由旧版交接文件。
经过验证的 CurdPlan 和规范化的 CurdResult 仍是当前有效的扇出状态。
在扇出运行中,从磁盘读取每个阶段的交接标识文件。 不要根据标准输出推断交接内容。
将 next: 设为下一个可运行阶段。
Press 循环返回 green 后,以及非行为类工作完成后,使用 age。
绝不将 next: 设为 press 或 cook;needs-context 是由父级负责的同阶段重试。
规格失败后使用 mold。
仅在真正完成时使用 done。
如果不适用其成本门槛,则省略 taste_test:。
默认将 durable_flags: 设为 none。
仅记录对架构、协议、惯例或理由的持久变更。
为每项变更记录目标 Wiki 页面。
将 baseline: 设为 Cook 可选对比产物的路径。
该产物包含与基线相同的债务,以及当前广泛门禁中新增或变更的失败。
使用 references/quality-gates.md 中的格式。
前言为每个键只接受一行实际内容,因此绝不要将映射内联。
交接
管线: culture → mold → cook (⇄ press) → age → cure → plate
写完报告和标识后,使用共享交接门禁。
阅读 ../cheese/references/handoff-gate.md 中的标准前进步骤菜单。
菜单中绝不提供 Press。
行为类工作只有在 Press 循环返回 green 后才能进入该菜单。
每个选项都以动词开头。
行为类和非行为类工作均使用以下选项:
- 审查变更(推荐)—
/age <slug>。 - 发布 —
/age <slug> --auto --open-pr:运行剩余的审查链,然后由/plate解决拓扑并发布。 - 检查点并停止 —
/wheypoint。 - 停止 — 不分派任何命令。
选择之前不要分派命令。
立即运行所选命令。
用户调用 --auto 时,跳过此门禁。
直接转到 /age。
自动模式
使用自动模式前,请阅读 references/auto-mode.md。
该文档定义了验证、阶段链、提前停止、Cure 限制、发布职责、扇出隔离和失败处理。
显示每份停止报告及其原因;绝不降低结果级别。
在线性链中,Cook 不会调用 /plate。
在扇出路径中,Cook 编排器负责自行分派终端 /plate。
每个后续操作由扇出进度状态决定,而非旧版阶段表。
禁止串链指令
被启动的阶段 Agent 不会自行串联后续阶段;链路由编排器控制。
只有 next: done 的终端 Age 才可发布。
next: cure 或缺失 next 都会中止链路。
规则
- 将更改限定在已接受的契约范围内。
- 优先使用现有依赖项和模式。
- 首次提交就让评审者易于审查:
references/tdd-loop.md§ 通过设计确保易于审查。 - 按照
../cheese/references/sliced-bread.md的要求,保持导入方向和 crust 完整性。 - 若需要新增 crust 导出、跨 slice 导入内部内容,或进行规范未明确要求的架构或契约更改,请停下并询问用户。
- 不要引入规范已否决的架构。
- 如果实现过程中发现规范未解答的设计决策,请停下并询问用户。
- 如果规范或快速路径请求基于错误前提,请先停下并指出错误前提,再编写代码。
- 不要为了字面满足请求而采用错误的方法。
- 应用
../age/references/voice.md中的共享语气内核;报告开头先给出答案,并在契约中列出已加载的假设。 - 将残余风险标记为
certain | speculating | don't know。 - 在
status: ok前完成验证: 确定门禁命令,在当前轮次运行,并在作出声明前读完完整输出。 - 不要使用
should、probably或I think。 - 说明门禁输出显示了什么。
Agent 解析
通过 agent-resolution.md 进行解析。
实现由编码者执行。
品鉴测试由评审者执行。
采收和装盘由父级负责。
| 工作 | 首选类型 | 权限/隔离 | 最低能力 | 工作量 | 备用方案 |
|---|---|---|---|---|---|
| 分解规范 | planner、general | 写入(仅清单)、新上下文 | 强 | 高 | 兼容的 planner,然后是 general |
| 按压循环 | coder | 写入(仅测试)、优先使用新上下文 | 默认 | 中 | general,然后在 Cook 会话中内联执行(degraded: true) |
交接内容包含 agent_resolution 块。
只有当终端 Age 包含 next: done 时才发布。
如果包含 next: cure 或不包含 next,则停止。
生成的 bundle 命令清单:references/commands.md。
Mold 到 Cook 的入口
已保存的 Mold 规范不构成执行授权。只有当用户请求选定的范围和路由时,才启动 Cook。
独立任务(包括仅带 --spec 的任务)可以跳过最终定稿。
规范保留拒绝:拒绝 frontmatter 中含有 execution_holds,或 request_directive 为 do-not-implement 或 do-not-proceed 的 --spec 运行。
拒绝非 ready 的 --result 文件;ready 文件须先通过 cook.pyz validate-result,再执行 execute_bound_plan。
遵循 references/fan-pathway.md § Mold 到 Cook 的直接入口。
此边界发生变化时,运行 references/evals.md 中的新鲜 Agent 回归场景。