mcpField
M
melt

melt

github.com/paulnsorensen開発19654 回インストール6 日前に更新
リポジトリ

melt について

melt は、復旧用に元のブランチを保持しながら Git の競合を解決するスキルです。squash の残留修復から意味的マージ、手動解決へと順に進み、準備が整った操作を続行します。

主な機能

  1. 01squash 残留の検出と修復
  2. 02競合と操作状態の要約
  3. 03mergiraf による意味的マージのプレビュー
  4. 04rerere と手動解決へのフォールバック
  5. 05準備完了した Git 操作の続行

活用シーン

  1. 01squash マージ後の競合解決
  2. 02残るテキスト競合の確認と解決
  3. 03全パスのステージ後にマージを続行

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/meltを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

wedge.toml
references/
cascade-stages.md
commands.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コマンドについては、生成されたコマンド一覧を参照してください。

コメント