Pulling Updates from Skills Repository について
個人の変更を保ちながら、ローカルの skills リポジトリを上流の変更と同期するスキルです。状態確認、取得、マージ、競合解決、検証を案内します。
主な機能
- 01リポジトリの状態確認と変更の退避
- 02追跡リモートの特定と更新の取得
- 03マージ前の追加コミット確認
- 04マージ競合の解決を案内
- 05変更の復元とスキル一覧の検証
活用シーン
- 01上流から skills リポジトリを更新
- 02同期中に未コミットの作業を保持
- 03ローカルと上流の変更が分岐した後の競合解決
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ obra/ superpowers-skills --skill pulling-updates-from-skills-repositoryインストール後、Claude Code で/pulling-updates-from-skills-repositoryを入力して読み込まれたか確認します。
詳細
スキルをアップストリームから更新する
概要
個人的な変更を保持しながら、obra/superpowers-skills からアップストリームの変更を取得し、ローカルのスキルリポジトリにマージします。
開始時に伝える:「スキルをアップストリームと同期するために、Updating Skills スキルを使用します。」
前提条件
スキルリポジトリに追跡ブランチが設定されている必要があります。プラグインが自動的に設定します(origin リモートを持つフォーク、または upstream リモートのいずれかです)。
手順
ステップ 1:現在の状態を確認する
次を実行します:
cd ~/.config/superpowers/skills
git status
作業ディレクトリに変更がある場合: ステップ 2(変更をスタッシュする)に進みます クリーンな場合: ステップ 3 に進みます
ステップ 2:コミットされていない変更をスタッシュする(必要な場合)
次を実行します:
git stash push -m "Temporary stash before upstream update"
記録:変更をスタッシュしたかどうか(後でスタッシュを戻す必要があります)
ステップ 3:追跡リモートを特定して取得する
まず、使用するリモートを検出します:
TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "")
次に、適切なリモートから取得します:
if [ -n "$TRACKING_REMOTE" ]; then
git fetch "$TRACKING_REMOTE" 2>/dev/null || true
else
git fetch upstream 2>/dev/null || git fetch origin 2>/dev/null || true
fi
想定される結果:追跡リモートから最新のコミットを取得します(または upstream/origin にフォールバックします)
ステップ 4:新しい変更を確認する
次を実行します:
git log HEAD..@{u} --oneline
ユーザーに表示する内容:取り込む新しいコミットの一覧
注:@{u} は、現在のブランチのアップストリーム追跡ブランチを指します
ステップ 5:変更をマージする
まず、ファストフォワードマージを試します(最もクリーンな方法です):
git merge --ff-only @{u}
ファストフォワードに成功した場合: ステップ 7 に進みます(ファストフォワードでは競合が発生しません) ファストフォワードに失敗した場合: ブランチが分岐しています。通常のマージを試します:
git merge @{u}
競合なくマージに成功した場合: ステップ 7 に進みます 競合が発生した場合: 競合解決に進みます
ステップ 6:マージ競合に対処する(発生した場合)
競合がある場合:
git statusを実行して、競合しているファイルを確認します- 各競合について、両方のバージョンで何が変更されたかをユーザーに説明します
- どちらのバージョンを残すか、どのようにマージするかをユーザーに尋ねます
- ファイルを編集して競合を解決します
- ファイルごとに
git add <resolved-file>を実行します git commitを実行してマージを完了します
ステップ 7:スタッシュした変更を戻す(ステップ 2 でスタッシュした場合)
変更をスタッシュした場合:
git stash pop
スタッシュを戻した変更と競合した場合: ユーザーの解決を支援します
ステップ 8:すべて正常に動作することを確認する
次を実行します:
${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills
想定される結果:スキルの一覧が正しく表示されます
ステップ 9:完了を伝える
ユーザーに次の内容を伝えます:
- マージした新しいコミットの数
- 競合を解決したかどうか
- スタッシュした変更を復元したかどうか
- スキルが最新の状態になったこと
よくある問題
「Already up to date」:ローカルリポジトリは最新です。対応は不要です
「fatal: no upstream configured」:ブランチにリモート追跡ブランチが設定されていません。git remote -v を実行して利用可能なリモートを確認し、git branch --set-upstream-to=<remote>/<branch> で追跡先を設定します
Detached HEAD:ブランチにいません。ブランチを作成するか、main をチェックアウトするかをユーザーに尋ねます
ファストフォワードに失敗し、ブランチが分岐している:ローカルブランチに、リモートにはないコミットがあります。通常のマージが必要になり、競合が発生する可能性があります
忘れずに
- マージの前に、コミットされていない作業を必ずスタッシュします
- 競合について、ユーザーに明確に説明します
- 更新後にスキルが動作することをテストします
- ユーザーのローカルコミット/ブランチは保持されます