关于 cure
cure 是用于处理 Age 审查、CI 报告或限定修复请求中所选问题的开发技能。它会验证改动、记录已处理与暂缓的问题,并将通过检查的修复交回审查或发布流程。
主要功能
- 01选择要处理的审查问题
- 02逐组修复逻辑相关问题
- 03运行针对性测试与项目门禁
- 04对行为修复进行品评测试
- 05记录已处理与暂缓问题
- 06交接至复审与发布
适用场景
- 01修复 Age 报告中的问题
- 02处理选定的 CI 故障
- 03应用限定范围的修正并交回复审
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill cure安装后在 Claude Code 中输入/cure确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
wedge.tomlreferences/auto-mode.mdcommands.mdcure-discipline.mddomain-model-correction.mdpost-pr-writeback.mdselection.md详细介绍
/cure
在 /age 之后、验证失败后,或收到修复所选审查发现项的请求后,使用此技能。
阶段入口
运行 python3 skills/cure/scripts/cure.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>(§ 基准修订)。
输入
接受 /age slug、粘贴的发现项列表、CI 失败摘要或范围明确的修复指令。
阶段入口之后,/cure <slug> 会读取 .cheese/age/<slug>.md。
采用来自 /age 或 /affinage 的锁定选择。
规范格式见 references/selection.md#handoff-from-age。
否则,应用 references/selection.md 中推荐的组合。
该文件还定义了选择门槛条件。
对于缺少发现项字段的旧报告,请阅读 references/selection.md § 旧报告格式。
可选标志:
--safe— 恢复选择门槛和最终发布门槛。--open-pr— 当不存在 PR 时,允许/plate发布。--auto— 使用/cook --auto的自动模式。 跳过用户选择。 要求提供--stake <floor>。--stake <floor>— 为--auto设置严重性下限。 接受blocker、high、medium+或all。 不带--auto时忽略此标志。--hard— 将元认知门槛标志传递给/plate。
阅读 references/selection.md 了解选择规则。
阅读 harness-portability.md 了解可移植性规则。
斜杠命令是宿主环境中的呈现形式,不是控制模型。
流程
-
加载。 如果交接信息提供了
handoff_context.source_report,请先读取。 确认该文件存在且属于指定的source_skill。 如果此检查失败,则以status: halt: unreadable source report停止。 如果交接信息只提供了 slug,则读取.cheese/age/<slug>.md。 只有在交接信息同时提供了CurdPlan时,才采用类型化路径。 对该计划调用validate_curd_plan。 如果计划或其摘要无效,则在分派前停止。 不要根据旧版清单重建计划。 其他所有情况均采用报告路径。 -
选择。 采用来自
/age或/affinage的锁定选择。 否则,应用推荐的组合方案。 阅读references/selection.md,了解动词和门控条件。 使用以下命令展开用户动词:python3 skills/cure/scripts/cure.pyz findings parse-selection --report <path> --selection "<verb>"按照
references/selection.md§ Coder brief 呈现编码者简报。 -
应用。 每次修复一个逻辑组。 将每个
recommendation:作为锁定决策实施;仅在### Deferred下进行反驳。 通过新的、有界读取来确认每个锚点。 报告路径在此处停止,并继续执行第 4 步。 类型化路径还会调用easy_cheese.shared.workflow.cure,并传入已验证的计划。 为每个选定的 curd 添加一个CureDiagnosisBinding。 使用bind_diagnosis(plan, curd, diagnosis_result)创建每个绑定。 只能使用已确认的DiagnosisResult。 将绑定指向确切的计划摘要和 curd 摘要。 设置DiagnosisDisposition.CONFIRMED。 合理但无关的诊断不能解锁 Cure。cure使用resolve_artifact解析每个ArtifactRef。 它只接受仅用于观察的CurdResultWriterView输出。 它使用normalize_agent_output为每个选定的 curd 完成一个CurdResult。 它也会完成执行器失败的处理。 -
验证。 运行能够证明每项修复的最小范围测试。 然后运行相关的项目门控检查。 这些检查包括 lint、类型检查和构建。 如果交接信息包含
baseline:块,请使用quality-gates.md。 相同的基线失败不会阻止干净的 cure,也不会触发停止。 只修复新增或已更改的失败。 -
对行为修复进行试尝。 在写入交接 slug 前,先运行新上下文试尝测试。 通过
agent-resolution.md解析只读的reviewer (taste-test)阶段 Agent。 请求最低default功率和medium努力度。 使用 Cook 审查视角检查 cure 差异。 将第 2 步呈现的简报原样用作试尝测试的锁定决策块。 如果无法隔离新上下文,则停止。 仅当满足tdd-loop.md中的小差异成本门控条件时,才使用内联自检。 格式、注释、导入和不涉及逻辑的重命名可跳过此步骤。 收到revise判定时,进行一轮有界修正。 锁定决策为halt时,交由人工处理。 嵌套编码者将权威审查交由协调器进行。 -
更正领域模型。 仅更正 Cook 差异涉及的术语。 首先阅读
references/domain-model-correction.md。 不要推翻 Mold 锁定的规范术语。 -
移交审查。 建议运行
/age <slug> --scope <touched-path>。 每个涉及的路径都重复一次--scope。 每次 Age 分派都附上当前 slug。 如果本次运行带有--hard标志,则传递该标志。 不要在 Cure 中重复 Age 审查。 新的 Age 报告可以启动新的/cure运行。 -
撰写报告。 记录更改、检查、暂缓事项和剩余风险。 将交接 slug 放在
.cheese/cure/<slug>.md的顶部。 -
写回持久事实。 发布前运行 § Post-PR write-back。 将每个写入的路径交给
/plate,用于其工件清单。 -
移交发布。 干净的 cure 完成后,分派
/plate。 遵循## Handoff。
首选工具和回退方案
通过 code-intelligence-routing.md 路由源代码工作。
首选工具不可用时,使用其中的回退方案。
只有回退方案无法支持安全修复时,才停止。
报告精度损失。
验证
记录无法运行某个不可用关卡的原因。 选定的问题仍未解决时,不得宣布已就绪。
只有在证明修复有效的测试通过后,才能将问题移至 Applied。
阅读 references/cure-discipline.md,了解铁律。
干净修复至少包含一项已应用的修复,且所有关卡均通过。
也不能因前提不成立而停止。
相同的 baseline: 失败不影响绿色状态。
阅读 quality-gates.md。
Agent 判断关卡值。 CLI 会将这些值映射为就绪判定:
python3 skills/cure/scripts/cure.pyz gates classify \
--press-status <label> \
[--hard-floor-met] [--has-open-level-1-or-2] [--has-open-level-3] [--has-open-level-4-or-5] [--any-spinning]
交接 slug
将报告写入 .cheese/cure/<slug>.md。
在顶部填写以下最低限度的交接 slug:
status: <canonical status field>
next: age | done
artifact: <path of the report that this run consumed>
baseline: none | <recorded baseline block copied from the upstream handoff — see ../cook/references/quality-gates.md>
<one-line orientation: what cure applied or deferred>
交接约定定义了 status: 的语法。
只有 next: 和额外的键值行是本阶段特有的。
artifact: 用于指定本次运行所读取的源报告。
该值使用 handoff_context.source_report,或已解析的 .cheese/age/<slug>.md 路径。
将报告正文写入单独的文件。
然后让规范写入器创建一次 .cheese/cure/<slug>.md。
传入本次运行包含的所有可选字段。
python3 skills/cure/scripts/cure.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase cure --next age [--base <base>] \
--artifact <consumed-report-path> --orientation "<one-line orientation>" \
--baseline "<copied baseline block>" --durable-flags "<one line per flag>" \
--grounded <path[#start-end]> \
--body-file <body-path> \
--payload-schema https://schemas.easy-cheese.dev/curd-result
使用第二条命令设置最终状态。
省略 --payload-schema,因为终止转换不接受负载架构。
python3 skills/cure/scripts/cure.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase cure --next done [--base <base>] \
--artifact <consumed-report-path> --orientation "<one-line orientation>" \
--baseline "<copied baseline block>" --grounded <path[#start-end]> \
--body-file <body-path>
本次运行没有 --baseline 和 --durable-flags 的值时,省略这些参数。
phase=cure 控制存储路由。
next 声明后续阶段,写入器会验证该转换。
至少有一个问题得到干净修复时,使用 status: ok。
没有问题达到 --auto 严重性下限时,也使用此状态。
所有选定修复均未通过评估时,使用 status: halt: <reason>。
项目关卡无法通过时,也使用此状态。
后续进行审查时,使用 next: age。
这是自动运行和交互式运行的默认值。
只有在不带 --auto 的交互式运行中,才使用 next: done。
用户还必须明确拒绝审查。
Cure 不会跟踪当前轮次。
/age --auto 会在第三次调用时强制执行两轮 cure 的上限。
输出
使用 formatting.md。
在 slug 下方,添加标题 ### Applied、### Deferred、### Checks 和 ### Re-review,标题必须完全一致。
将 <slug> 绑定到已读取源报告的文件名主体。
当 source_skill 为 /affinage 时,在每条结果行末尾添加 [from-comment:<id>]。
包括问题 ID、证据、残余风险和下一条命令。
该命令使用 /age <slug> --scope <touched-path> 或 /plate。
移交
流程: culture → mold → cook (⇄ press) → age → [cure] → plate
报告生成后,决定是调度 /plate 还是询问用户。
默认情况下,干净的 cure 会更新打开的 PR,无需经过额外关卡。
--safe 会恢复移交关卡。
如果本次运行由 /affinage 启动,绝不要从 Cure 调度 /plate。
此状态使用 handoff_context.source_skill: /affinage。
应用修复,并在需要时运行自动 Age 循环。
然后将控制权交还给 /affinage。
它会先发布 GitHub 回复,再调度 /plate。
未使用 --safe 时的默认行为:
- 如果有打开的 PR,调度
/plate [--hard]。 它会执行最终写入关卡、提交、拓扑更新和发布。 - 如果没有打开的 PR,使用
--open-pr调度/plate [--hard]。/plate会自行确定拓扑,无需询问用户。参见topology.md。 - 如果没有
--open-pr,则保持远程状态不变。 报告没有打开的 PR — 请传入 --open-pr 或运行 /plate。 - 每次调度
/plate前,都运行 § PR 后回写。 - 如果 cure 不干净,则跳过
/plate。 报告阻碍并停止。
使用 --safe 时,请使用共享的移交关卡。
提供以下选项:
- 审查已触及的代码。 运行
/age <slug> --scope <touched-path>。 如果修复范围超出问题所在代码块,建议选择此项。 - 发布。 运行
/plate [--hard]以提交并发布。 - 创建检查点并停止。 运行
/wheypoint。 - 停止。 不调度任何命令。
只有在所有已选修复和关卡都通过时,才预先选择发布。 立即运行所选命令。
PR 后回写
任何路径要向 PR 发布内容前,都要先阅读 references/post-pr-writeback.md。
这包括默认路径、--open-pr、--safe 和自动发布路径。
该文件定义了候选项、写入者、回退行为、所有权以及空内容的处理方式。
--hard 模式
/cure --hard 会向 /plate 传递 --hard。
/plate 会完成并验证每项持久化写入。
然后将最终产物清单交给 /hard-cheese。
如果关卡结果为 FAILED,则停止发布。
如果非 TTY 环境阻止关卡运行,则停止发布。
如果结果为 ERROR,则按 hard-cheese 的故障开放策略处理,并继续发布。
审查、创建检查点和停止选项会跳过此关卡。
阅读 skills/hard-cheese/SKILL.md 和 ../hard-cheese/references/composition.md。
自动模式
使用自动模式前,先阅读 references/auto-mode.md。
该文件定义了选择、验证、回退、Age 限制、标记传递、发布以及 Cook worker 的例外情况。
还定义了 --auto --hard 的穿刺条款。
规则
- 默认使用推荐的组合项或锁定的选择。
--safe会恢复关卡。 如果问题基于错误前提、范围过大、涉及结构性问题或彼此冲突,请暂停。 - 修复范围不得超出已选问题。 不要修复与基线完全相同的失败。
- 报告失败和跳过的检查。
将已回退的自动修复问题放在
### Deferred下。 - 每次决定是否发布,都遵循
## 移交。 绝不发布未通过 cure 的内容。 - 如果某个问题基于错误前提,在应用该问题前停止。 说明 Age 的判断为何错误或已过时。
- 遵循
../age/references/voice.md中的共享语气规则。 先说明已应用的更改。 将残余风险标记为certain | speculating | don't know。 如果 diff 正确,不要凭空编造后续工作。 - 声称
status: ok前,先明确关卡命令。 在同一轮中再次运行该命令。 阅读其完整输出。 然后再作出判断。 在完成声明中不要使用should、probably或I think。 明确说明关卡输出显示了什么。
规范
应用任何修复前,先阅读 references/cure-discipline.md。
该文件定义了铁律、危险信号和合理化对照表。
Agent 解析
通过 agent-resolution.md 解决修复工作。
| 工作 | 首选类型 | 权限/隔离 | 最低能力 | 工作量 | 回退方案 |
|---|---|---|---|---|---|
| 应用已选发现项 | coder | 写入、隔离的工作树 | 默认 | 高 | 兼容的 coder,然后是通用类型 |
规范的 Cure 交接包含共享的 agent_resolution 区块。
请参阅生成的命令清单 references/commands.md。