melt について
melt は、復旧用に元のブランチを保持しながら Git の競合を解決するスキルです。squash の残留修復から意味的マージ、手動解決へと順に進み、準備が整った操作を続行します。
主な機能
- 01squash 残留の検出と修復
- 02競合と操作状態の要約
- 03mergiraf による意味的マージのプレビュー
- 04rerere と手動解決へのフォールバック
- 05準備完了した Git 操作の続行
活用シーン
- 01squash マージ後の競合解決
- 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 → 手動解決 → 続行。 復旧用に元のブランチを保持します。ここでは push、reset、force-push を実行しないでください。
検索、範囲を限定した読み取り、手動編集には、選択したソースコードバックエンドを使用してください。 コードインテリジェンスのルーティングに従ってください:検索、新鮮な読み取り、古くならない書き込み。
1. squash の残骸を修復する
ファイルの競合を解決する前に、これを実行してください:
python3 skills/melt/scripts/melt.pyz detect-squash-residue --apply
ベースが origin/main ではない場合は、--base <ref> を使用してください。
Git が元のブランチを特定できない場合は、--branch <name> を使用してください。
--apply を指定しない場合、コマンドはデフォルトでプレビューを実行します。
安全な場合は、<original-branch>-clean を作成し、検証済みのコミットを順に再適用します。
それ以外の場合は、ベースを元のブランチにマージします。
中断された操作を中止する前に、ブランチ名の衝突を事前確認します。
どちらのブランチも push せず、書き換えません。
application.state が confirmation-required の場合は、進行中の操作をそのまま維持してください。
ステージ済みの解決内容を破棄して操作を中止するかどうか、一度だけ確認してください。
明示的な確認を得た後、--apply --abort-operation を付けて再実行してください。
確認が拒否された場合は、既存の操作を続行してください。
application.state が 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を推奨してください。
ユーザーの選択を待ちます。stop以外のアクションが選択された場合は、直ちに実行してください。
Meltはコミットもプッシュもしません。公開は/plateが担当します。
すべてのMeltコマンドについては、生成されたコマンド一覧を参照してください。