mcpField
C
cook

cook

github.com/paulnsorensen开发19682 次安装6 天前更新
代码仓库

关于 cook

cook 是面向开发工作的技能,可依据规格或任务实现限定范围的改动,并在交接前进行验证和审查。

主要功能

  1. 01依据规格实施改动
  2. 02运行测试与质量门禁
  3. 03行为改动审查循环
  4. 04快速与扇出执行路径
  5. 05结构化交接报告

适用场景

  1. 01实现范围明确的缺陷修复
  2. 02为行为改动编写验收覆盖
  3. 03依据已验证计划处理多部分工作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulnsorensen/easy-cheese --skill cook

安装后在 Claude Code 中输入/cook确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

wedge.toml
references/
auto-mode.md
commands.md
evals.md
fan-pathway.md
package-report.md
press-loop.md
prototype-mode.md
quality-gates.md
tdd-loop.md
writer-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。

流程

  1. 契约 — 确认行为、非目标、范围和门禁。 在契约中打印 ../mold/references/shape-check.md 中的形状检查块,或者根据 shape-check.md § 何时跳过,写入 shape check skipped: single-module change 这一行。没有检查块,就不写代码。 如果 .cheese/glossary/<slug>.md 存在,则使用其中的规范术语。
  2. 实现 — 在适用时先编写测试;没有门禁要求时则不必先写。 对于非行为类工作,只更改适用的部分。
  3. 验证 — 再次运行相关质量门禁。 阅读完整的门禁输出;对于非行为类工作,验证请求的路径。
  4. 试味 — 对涉及多个文件或公共接口的差异,使用新上下文审查。 其他情况使用内联审查,最多两轮。 详情请阅读 references/tdd-loop.md。
  5. 压制循环 — 对于行为类工作,Cook 会派发一个使用新上下文的 Press Agent;不提供选项。 请阅读 references/press-loop.md。 非行为类工作跳过此步骤。
  6. 交接 — 编写包报告和 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 回归场景。

评论

支持 Markdown