关于 melt
melt 是用于解决 Git 冲突并保留原分支以便恢复的技能。它按顺序尝试修复 squash 残留、语义合并及手动处理,并在操作就绪后继续执行。
主要功能
- 01检测并修复 squash 残留
- 02汇总冲突及操作状态
- 03预览 mergiraf 语义合并
- 04以 rerere 和手动处理作为后备
- 05继续已就绪的 Git 操作
适用场景
- 01处理 squash 合并后的冲突
- 02检查并解决剩余文本冲突
- 03所有路径暂存后继续合并
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill melt安装后在 Claude Code 中输入/melt确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
wedge.tomlreferences/cascade-stages.mdcommands.md详细介绍
/melt
在不重写已发布分支的前提下解决当前冲突。 使用安全级联:修复 squash 残留 → 摘要 → mergiraf → rerere → 手动解决 → 继续操作。 保留原始分支以便恢复。此处绝不推送、重置或强制推送。
使用选定的源代码后端进行搜索、限定范围的读取和手动编辑。 遵循代码智能路由:搜索、新鲜读取、安全写入。
1. 修复 squash 残留
在解决文件冲突前运行:
python3 skills/melt/scripts/melt.pyz detect-squash-residue --apply
当基准不是 origin/main 时,使用 --base <ref>。
当 Git 无法识别原始分支时,使用 --branch <name>。
默认情况下,该命令会预览,不会使用 --apply。
安全时,它会创建 <original-branch>-clean,并按顺序重放已验证的提交。
否则,它会将基准合并到原始分支。
中止被中断的操作前,它会预先检查分支冲突。
它绝不会推送或重写任一分支。
如果 application.state 为 confirmation-required,请保持当前操作不变。
询问一次是否要丢弃暂存的解决结果并中止该操作。
获得明确确认后,使用 --apply --abort-operation 重新运行。
如果用户拒绝确认,则继续现有操作。
如果它为 failed,报告 failed_step、error 和 recovery_branch;然后停止。
如果它为 needs-resolution,继续级联流程。
如果它为 applied 且没有冲突,检查操作状态并继续交接。
如果它为 not-applied,继续处理现有冲突。
2. 诊断和检查
python3 skills/melt/scripts/melt.pyz conflict-summary
python3 skills/melt/scripts/melt.pyz operation
阅读每个摘要代码块以及操作的 unmerged_paths 和 conflict_marker_files。
仅当提交意图不明确时,才使用 git log --merge --oneline。
不要仅仅因为结构化合并没有标记就接受它。
3. 解决结构冲突
先预览 mergiraf,然后检查其语义结果,再应用:
python3 skills/melt/scripts/melt.pyz batch-resolve
python3 skills/melt/scripts/melt.pyz batch-resolve --debug <path>
调试命令会给出合并后的输出路径、日志路径和标记数量。 使用选定的后端读取该输出。确认双方预期的编辑都保留了下来。 然后应用干净的解决结果并暂存:
python3 skills/melt/scripts/melt.pyz batch-resolve --apply
Melt 文本工具拒绝处理二进制文件。对于普通二进制文件,选择一侧并暂存。 对于生成的归档文件,应解决源文件后重新构建归档。
4. 解决剩余冲突
再次运行 operation。其 rerere_enabled、configured_merge_tool 和
selected_manual_tool 字段定义了可用的后备方式。
启用 rerere 时,检查 git rerere status 和 git rerere diff。
如果已禁用,报告该设置并跳过此阶段。
本次调用期间不要更改 Git 全局配置。
对于未解决的文本冲突,使用选定的手动工具,或在检查语义后进行编辑。
当 selected_manual_tool 为 kdiff3 时,优先使用 git mergetool --tool=kdiff3 <path>。
否则,使用已配置的工具并报告替代情况。
暂存每个已解决的路径。应根据清单解决锁文件,而不是根据其中的冲突文本解决。
仅在选择一侧、重新生成锁文件、调试 mergiraf 或维护 rerere 数据时,才阅读条件级联阶段。 其中的侧边选择和锁文件命令需要判断预期内容。
5. 继续一次
python3 skills/melt/scripts/melt.pyz operation
python3 skills/melt/scripts/melt.pyz operation --continue
只有当状态为 ready 时才运行 --continue。
它会拒绝存在未合并路径或冲突标记的情况,然后继续操作,且不会打开交互式编辑器。
如果它返回 blocked,请解决下一个冲突并重复步骤 2–5。
如果它返回 failure,报告 failed_step 并停止。
只有当状态为 complete 时才进行交接。
不要单独运行原始 Git 继续命令。
交接
完成后,使用共享交接门。 根据上游调用和传递的标志填入占位符。
handoff_gate:
source_skill: /melt
id: post-melt-next-step
prompt: The Git operation is complete. What should happen next?
recommended: rerun-upstream
multi: false
options:
- id: rerun-upstream
label: Re-run the upstream gate
description: Run the invocation that found the conflict.
dispatch: <upstream_invocation>
context:
upstream_invocation: <command>
flags: [<propagated flags>]
- id: plate-it
label: Plate it
description: Publish completed work through /plate.
dispatch: /plate
context:
flags: [<propagated --hard, --open-pr>]
- id: checkpoint-and-stop
label: Checkpoint & stop
description: Write a durable checkpoint, then pause the pipeline.
dispatch: /wheypoint
- id: stop
label: Stop
description: Leave the completed operation for inspection.
dispatch: none
如果不知道其调用方式,请省略 rerun-upstream 并建议选择 stop。
等待用户选择。立即运行用户选定的非停止操作。
Melt 从不提交或推送。发布工作由 /plate 负责。
所有 Melt 命令请参阅生成的命令清单。