Sync local skills repository with upstream changes from obra/superpowers-skills
Pull and merge upstream changes from obra/superpowers-skills into your local skills repository while preserving your personal modifications.
Announce at start: "I'm using the Updating Skills skill to sync with upstream."
Your skills repo must have a tracking branch configured. The plugin sets this up automatically (either as a fork with origin remote, or with an upstream remote).
Run:
cd ~/.config/superpowers/skills
git status
If working directory is dirty: Proceed to Step 2 (stash changes) If clean: Skip to Step 3
Run:
git stash push -m "Temporary stash before upstream update"
Record: Whether changes were stashed (you'll need to unstash later)
First, detect which remote to use:
TRACKING_REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null | cut -d'/' -f1 || echo "")
Then fetch from the appropriate remote:
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
Expected: Fetches latest commits from the tracking remote (or falls back to upstream/origin)
Run:
git log HEAD..@{u} --oneline
Show user: List of new commits being pulled
Note: @{u} refers to the upstream tracking branch for your current branch
First, try a fast-forward merge (cleanest option):
git merge --ff-only @{u}
If fast-forward succeeds: Skip to Step 7 (no conflicts possible with fast-forward) If fast-forward fails: Your branch has diverged. Try regular merge:
git merge @{u}
If merge succeeds cleanly: Proceed to Step 7 If conflicts occur: Proceed to conflict resolution
If conflicts:
git status to see conflicted filesgit add <resolved-file> for eachgit commit to complete mergeIf you stashed changes:
git stash pop
If conflicts with unstashed changes: Help user resolve them
Run:
${SUPERPOWERS_SKILLS_ROOT}/skills/using-skills/find-skills
Expected: Skills list displays correctly
Tell user:
"Already up to date": Your local repo is current, no action needed
"fatal: no upstream configured": Your branch isn't tracking a remote branch. Check git remote -v to see available remotes, then set tracking with git branch --set-upstream-to=<remote>/<branch>
Detached HEAD: You're not on a branch. Ask user if they want to create a branch or check out main.
Fast-forward fails, diverged branches: Your local branch has commits that aren't in the remote. Regular merge will be needed, which may cause conflicts.