mcpField
G
gsd-reapply-patches

gsd-reapply-patches

github.com/shoootyouエージェントワークフロー22109 回インストール32 週間前に更新
リポジトリ

gsd-reapply-patches について

GSD の更新後に、バックアップしたローカル変更を新しいファイルへ反映するスキルです。旧版と更新版を比較して変更を統合し、上流の変更と競合する場合はユーザーに選択を求めます。

主な機能

  1. 01バックアップ済みローカルパッチの検出
  2. 02旧版と更新版のファイル比較
  3. 03競合しない変更の統合
  4. 04競合解決の確認
  5. 05パッチ状態の報告

活用シーン

  1. 01GSD 更新後のワークフロー編集の復元
  2. 02上流ファイルの変更時にカスタム編集を維持

インストール

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

$npx skills add https://github.com/shoootyou/get-shit-done-multi --skill gsd-reapply-patches

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

詳細

GSD の更新によってファイルが消去され、再インストールされた後、このコマンドはユーザーが以前に保存したローカル変更を新しいバージョンにマージします。上流のファイルも変更されている場合に対応できるよう、インテリジェントな比較を使用します。

ステップ 1:バックアップされたパッチを検出する

ローカルのパッチディレクトリを確認します。

# Global install (path templated at install time)
PATCHES_DIR={{PLATFORM_ROOT}}/gsd-local-patches
# Local install fallback
if [ ! -d "$PATCHES_DIR" ]; then
  PATCHES_DIR={{PLATFORM_ROOT}}/gsd-local-patches
fi

パッチディレクトリから backup-meta.json を読み込みます。

パッチが見つからない場合:

No local patches found. Nothing to reapply.

Local patches are automatically saved when you run {{COMMAND_PREFIX}}update
after modifying any GSD workflow, command, or agent files.

終了します。

ステップ 2:パッチの概要を表示する

## Local Patches to Reapply

**Backed up from:** v{from_version}
**Current version:** {read VERSION file}
**Files modified:** {count}

| # | File | Status |
|---|------|--------|
| 1 | {file_path} | Pending |
| 2 | {file_path} | Pending |

ステップ 3:各ファイルをマージする

backup-meta.json に記載された各ファイルについて:

  1. バックアップされたバージョンを読み込む(gsd-local-patches/ にあるユーザーが変更したコピー)

  2. 新しくインストールされたバージョンを読み込む(更新後の現在のファイル)

  3. 比較してマージする:

    • 新しいファイルがバックアップされたファイルと同一の場合:スキップします(変更が上流に取り込まれています)
    • 新しいファイルが異なる場合:ユーザーの変更を特定し、新しいバージョンに適用します

    マージ戦略:

    • 両方のバージョンをすべて読み込みます
    • ユーザーが追加または変更したセクションを特定します(パスの置換による差分だけでなく、追加内容を確認します)
    • ユーザーによる追加・変更を新しいバージョンに適用します
    • ユーザーが変更したセクションも上流で変更されている場合は、競合としてフラグを立て、両方のバージョンを表示して、どちらを残すかユーザーに確認します
  4. マージした結果をインストール先に書き込みます

  5. ステータスを報告します:

    • Merged — ユーザーの変更が問題なく適用されました
    • Skipped — 変更はすでに上流に取り込まれています
    • Conflict — ユーザーが解決方法を選択しました

ステップ 4:マニフェストを更新する

再適用後、今後の更新でこれらをユーザーによる変更として正しく検出できるよう、ファイルマニフェストを再生成します。

# The manifest will be regenerated on next {{COMMAND_PREFIX}}update
# For now, just note which files were modified

ステップ 5:クリーンアップの選択肢

ユーザーに確認します:

  • 「パッチのバックアップを参照用に残しますか?」→ gsd-local-patches/ を保持します
  • 「パッチのバックアップをクリーンアップしますか?」→ gsd-local-patches/ ディレクトリを削除します

ステップ 6:報告する

## Patches Reapplied

| # | File | Status |
|---|------|--------|
| 1 | {file_path} | ✓ Merged |
| 2 | {file_path} | ○ Skipped (already upstream) |
| 3 | {file_path} | ⚠ Conflict resolved |

{count} file(s) updated. Your local modifications are active again.

<success_criteria>

  • バックアップされたすべてのパッチが処理されている
  • ユーザーの変更が新しいバージョンにマージされている
  • 競合がユーザーの入力によって解決されている
  • 各ファイルのステータスが報告されている </success_criteria>

コメント