mcpField
C
cure

cure

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

关于 cure

cure 是用于处理 Age 审查、CI 报告或限定修复请求中所选问题的开发技能。它会验证改动、记录已处理与暂缓的问题,并将通过检查的修复交回审查或发布流程。

主要功能

  1. 01选择要处理的审查问题
  2. 02逐组修复逻辑相关问题
  3. 03运行针对性测试与项目门禁
  4. 04对行为修复进行品评测试
  5. 05记录已处理与暂缓问题
  6. 06交接至复审与发布

适用场景

  1. 01修复 Age 报告中的问题
  2. 02处理选定的 CI 故障
  3. 03应用限定范围的修正并交回复审

安装

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

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

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

包含的文件

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

wedge.toml
references/
auto-mode.md
commands.md
cure-discipline.md
domain-model-correction.md
post-pr-writeback.md
selection.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 了解可移植性规则。 斜杠命令是宿主环境中的呈现形式,不是控制模型。

流程

  1. 加载。 如果交接信息提供了 handoff_context.source_report,请先读取。 确认该文件存在且属于指定的 source_skill。 如果此检查失败,则以 status: halt: unreadable source report 停止。 如果交接信息只提供了 slug,则读取 .cheese/age/<slug>.md。 只有在交接信息同时提供了 CurdPlan 时,才采用类型化路径。 对该计划调用 validate_curd_plan。 如果计划或其摘要无效,则在分派前停止。 不要根据旧版清单重建计划。 其他所有情况均采用报告路径。

  2. 选择。 采用来自 /age 或 /affinage 的锁定选择。 否则,应用推荐的组合方案。 阅读 references/selection.md,了解动词和门控条件。 使用以下命令展开用户动词:

    python3 skills/cure/scripts/cure.pyz findings parse-selection --report <path> --selection "<verb>"
    

    按照 references/selection.md § Coder brief 呈现编码者简报。

  3. 应用。 每次修复一个逻辑组。 将每个 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。 它也会完成执行器失败的处理。

  4. 验证。 运行能够证明每项修复的最小范围测试。 然后运行相关的项目门控检查。 这些检查包括 lint、类型检查和构建。 如果交接信息包含 baseline: 块,请使用 quality-gates.md。 相同的基线失败不会阻止干净的 cure,也不会触发停止。 只修复新增或已更改的失败。

  5. 对行为修复进行试尝。 在写入交接 slug 前,先运行新上下文试尝测试。 通过 agent-resolution.md 解析只读的 reviewer (taste-test) 阶段 Agent。 请求最低 default 功率和 medium 努力度。 使用 Cook 审查视角检查 cure 差异。 将第 2 步呈现的简报原样用作试尝测试的锁定决策块。 如果无法隔离新上下文,则停止。 仅当满足 tdd-loop.md 中的小差异成本门控条件时,才使用内联自检。 格式、注释、导入和不涉及逻辑的重命名可跳过此步骤。 收到 revise 判定时,进行一轮有界修正。 锁定决策为 halt 时,交由人工处理。 嵌套编码者将权威审查交由协调器进行。

  6. 更正领域模型。 仅更正 Cook 差异涉及的术语。 首先阅读 references/domain-model-correction.md。 不要推翻 Mold 锁定的规范术语。

  7. 移交审查。 建议运行 /age <slug> --scope <touched-path>。 每个涉及的路径都重复一次 --scope。 每次 Age 分派都附上当前 slug。 如果本次运行带有 --hard 标志,则传递该标志。 不要在 Cure 中重复 Age 审查。 新的 Age 报告可以启动新的 /cure 运行。

  8. 撰写报告。 记录更改、检查、暂缓事项和剩余风险。 将交接 slug 放在 .cheese/cure/<slug>.md 的顶部。

  9. 写回持久事实。 发布前运行 § Post-PR write-back。 将每个写入的路径交给 /plate,用于其工件清单。

  10. 移交发布。 干净的 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。

评论

支持 Markdown