melt — скилл для Claude Code: разрешает конфликты Git
Скилл для разрешения конфликтов при merge, rebase, cherry-pick и pull. Ведёт по шагам и не трогает опубликованные ветки.
npx skills add paulnsorensen/easy-cheese --skill melt -a claude-codeЧто делает melt
Melt запускается, когда Git оставил после себя CONFLICT, unmerged paths или диагностику «needs merge». Дальше он идёт по безопасной лестнице: починка squash-остатков, сводка конфликтов, mergiraf, rerere, ручное разрешение, продолжение операции. Ветка-источник остаётся на месте для отката.
Первый шаг — команда python3 skills/melt/scripts/melt.pyz detect-squash-residue --apply, она чинит следы squash до разбора файлов. Без --apply команда только показывает, что собирается сделать. Если состояние confirmation-required, скилл один раз спросит, сбрасывать ли уже подготовленное разрешение, и без явного подтверждения продолжит текущую операцию.
Дальше conflict-summary и operation дают список неслитых путей и файлов с маркерами. Структурные конфликты сначала прогоняются через batch-resolve в режиме предпросмотра, и только после проверки результата применяются. Бинарники текстовые инструменты не берут: для обычного бинарного файла выбирается одна сторона, а сгенерированный архив собирается заново из исходников. Melt не коммитит и не пушит — публикация остаётся за /plate.
Какие задачи решает
- разобрать конфликт после rebase, не потеряв чужие правки
- починить остатки squash-мержа до ручного разбора файлов
- понять, какие пути остались неслитыми после прерванной операции
- разрешить конфликт в lockfile через пересборку из манифеста
- продолжить merge или cherry-pick без интерактивного редактора
Примеры запросов агенту
- разреши конфликт после rebase в текущей ветке
- у меня CONFLICT при cherry-pick, разберись по шагам
- проверь, что осталось неслитым, и продолжи операцию
Как установить melt
1Через Skills CLI (Vercel)
npx skills add paulnsorensen/easy-cheese --skill melt -a claude-code2Вручную: положить файлы
~/.claude/skills/melt/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/melt/
1Через Skills CLI (Vercel)
npx skills add paulnsorensen/easy-cheese --skill melt -a codex2Вручную: положить файлы
.agents/skills/melt/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add paulnsorensen/easy-cheese --skill melt -a cursor2Вручную: положить файлы
.cursor/skills/melt/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install paulnsorensen/easy-cheese melt2Вручную: положить файлы
.github/skills/melt/SKILL.md1Через Skills CLI (Vercel)
npx skills add paulnsorensen/easy-cheese --skill melt -a gemini-cli2Командой платформы
gemini skills install https://github.com/paulnsorensen/easy-cheese --path skills/meltВручную: положить файлы
.devin/skills/melt/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add paulnsorensen/easy-cheese --skill melt -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о melt
Как установить melt в Claude?
Выполните npx skills add paulnsorensen/easy-cheese --skill melt -a claude-code. Скилл встанет в ~/.claude/skills/melt/SKILL.md.
Что делает melt?
Разрешает конфликты содержимого при merge, rebase, cherry-pick, pull и слиянии веток. Идёт по каскаду от починки squash-остатков до ручного разрешения и продолжения операции.
Melt коммитит или пушит изменения?
Нет. Скилл не коммитит и не пушит, а ветку-источник оставляет для отката. Публикацию выполняет /plate.
Исходный текст
SKILL.md · MIT
---
name: melt
description: >-
Resolve content conflicts during Git merge, rebase, cherry-pick, pull, or branch integration.
Use for CONFLICT, unmerged paths, or Git's "needs merge" diagnostic for an unmerged path.
Trigger on fix merge conflicts, resolve rebase conflicts, cherry-pick conflict, and similar requests.
Do not use for clean Git operations or review-only questions.
license: MIT
---
# /melt
Resolve the current conflict without rewriting a published branch.
Use the safe cascade: squash repair → summary → mergiraf → rerere → manual resolution → continuation.
Keep the original branch for recovery. Never push, reset, or force-push here.
Use the selected source-code backend for searches, bounded reads, and manual edits.
Follow [code-intelligence routing](../cheese/references/code-intelligence-routing.md): search, fresh read, stale-safe write.
## 1. Repair squash residue
Run this before resolving file conflicts:
```bash
python3 skills/melt/scripts/melt.pyz detect-squash-residue --apply
```
Use `--base <ref>` when the base is not `origin/main`.
Use `--branch <name>` when Git cannot identify the original branch.
The command previews by default without `--apply`.
It creates `<original-branch>-clean` and replays verified commits in order when safe.
Otherwise it merges the base into the original branch.
It preflights branch collisions before aborting an interrupted operation.
It never pushes or rewrites either branch.
If `application.state` is `confirmation-required`, keep the active operation intact.
Ask once whether to discard its staged resolution and abort it.
After explicit confirmation, rerun with `--apply --abort-operation`.
If confirmation is refused, continue the existing operation instead.
If `application.state` is `failed`, report `failed_step`, `error`, and `recovery_branch`; stop.
If it is `needs-resolution`, continue the cascade.
If it is `applied` without conflicts, check the operation state and proceed to handoff.
If it is `not-applied`, continue the existing conflict.
## 2. Diagnose and inspect
```bash
python3 skills/melt/scripts/melt.pyz conflict-summary
python3 skills/melt/scripts/melt.pyz operation
```
Read each summary hunk and the operation's `unmerged_paths` and `conflict_marker_files`.
Use `git log --merge --oneline` only when commit intent is unclear.
Do not accept a structural merge only because it has no markers.
## 3. Resolve structures
Preview mergiraf, then inspect its semantic result before applying it:
```bash
python3 skills/melt/scripts/melt.pyz batch-resolve
python3 skills/melt/scripts/melt.pyz batch-resolve --debug <path>
```
The debug command gives the merged output path, log path, and marker count.
Read that output with the selected backend. Confirm that both sides' intended edits remain.
Then apply clean resolutions and stage them:
```bash
python3 skills/melt/scripts/melt.pyz batch-resolve --apply
```
Melt text tools refuse binary files. Select a side for ordinary binaries and stage it.
For generated archives, resolve source files and rebuild the archive instead.
## 4. Resolve what remains
Run `operation` again. Its `rerere_enabled`, `configured_merge_tool`, and
`selected_manual_tool` fields define the available fallback.
When rerere is enabled, inspect `git rerere status` and `git rerere diff`.
If it is disabled, report the setting and skip that stage.
Do not change global Git configuration during this invocation.
For unresolved text, use the selected manual tool or edit after semantic inspection.
Prefer `git mergetool --tool=kdiff3 <path>` when `selected_manual_tool` is `kdiff3`.
Otherwise use the configured tool and report the substitution.
Stage each resolved path. Resolve lockfiles from their manifests, not their conflict text.
Read [conditional cascade stages](references/cascade-stages.md) only when selecting sides,
regenerating lockfiles, debugging mergiraf, or maintaining rerere data.
Its side-selection and lockfile commands require a judgment about intended content.
## 5. Continue once
```bash
python3 skills/melt/scripts/melt.pyz operation
python3 skills/melt/scripts/melt.pyz operation --continue
```
Run `--continue` only when status is `ready`.
It refuses unmerged paths and conflict markers, then continues without an interactive editor.
If it returns `blocked`, resolve the next conflict and repeat steps 2–5.
If it returns `failure`, report `failed_step` and stop.
Handoff only when status is `complete`.
Do not run a separate raw Git continuation command.
## Handoff
After completion, use the [shared handoff gate](../cheese/references/handoff-gate.md).
Fill the placeholders from the upstream invocation and propagated flags.
```yaml
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
```
Omit `rerun-upstream` and recommend `stop` when its invocation is unknown.
Wait for the user's selection. Run a selected non-stop action immediately.
Melt never commits or pushes. `/plate` owns publication.
See the [generated command inventory](references/commands.md) for all Melt commands.
© paulnsorensen · MIT · paulnsorensen/easy-cheese