gsd-reapply-patches について
GSD の更新後に、バックアップしたローカル変更を新しいファイルへ反映するスキルです。旧版と更新版を比較して変更を統合し、上流の変更と競合する場合はユーザーに選択を求めます。
主な機能
- 01バックアップ済みローカルパッチの検出
- 02旧版と更新版のファイル比較
- 03競合しない変更の統合
- 04競合解決の確認
- 05パッチ状態の報告
活用シーン
- 01GSD 更新後のワークフロー編集の復元
- 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 に記載された各ファイルについて:
-
バックアップされたバージョンを読み込む(
gsd-local-patches/にあるユーザーが変更したコピー) -
新しくインストールされたバージョンを読み込む(更新後の現在のファイル)
-
比較してマージする:
- 新しいファイルがバックアップされたファイルと同一の場合:スキップします(変更が上流に取り込まれています)
- 新しいファイルが異なる場合:ユーザーの変更を特定し、新しいバージョンに適用します
マージ戦略:
- 両方のバージョンをすべて読み込みます
- ユーザーが追加または変更したセクションを特定します(パスの置換による差分だけでなく、追加内容を確認します)
- ユーザーによる追加・変更を新しいバージョンに適用します
- ユーザーが変更したセクションも上流で変更されている場合は、競合としてフラグを立て、両方のバージョンを表示して、どちらを残すかユーザーに確認します
-
マージした結果をインストール先に書き込みます
-
ステータスを報告します:
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>
コメント
Markdown 対応