From claudeclaw
Detects updates to installed Claude Code skills from upstream git branches, lists available ones, merges selected branches, resolves conflicts, and validates with build/test.
npx claudepluginhub sbusso/claudeclawThis skill uses the workspace's default tool permissions.
Skills are distributed as git branches (`skill/*`). When you install a skill, you merge its branch into your repo. This skill checks upstream for newer commits on those skill branches and helps you update.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
Skills are distributed as git branches (skill/*). When you install a skill, you merge its branch into your repo. This skill checks upstream for newer commits on those skill branches and helps you update.
Run /update-skills in Claude Code.
Preflight: checks for clean working tree and upstream remote.
Detection: fetches upstream, lists all upstream/skill/* branches, determines which ones you've previously merged (via merge-base), and checks if any have new commits.
Selection: presents a list of skills with available updates. You pick which to update.
Update: merges each selected skill branch, resolves conflicts if any, then validates with build + test.
Help users update their installed skill branches from upstream without losing local customizations.
git commands, only open files with actual conflicts.Run:
git status --porcelainIf output is non-empty:
Check remotes:
git remote -vIf upstream is missing:
https://github.com/sbusso/claudeclaw.git).git remote add upstream <url>Fetch:
git fetch upstream --pruneList all upstream skill branches:
git branch -r --list 'upstream/skill/*'For each upstream/skill/<name>:
git merge-base --is-ancestor upstream/skill/<name>~1 HEAD — if this succeeds (exit 0) for any ancestor commit of the skill branch, the user has merged it at some point. A simpler check: git log --oneline --merges --grep="skill/<name>" HEAD to see if there's a merge commit referencing this branch.MERGE_BASE=$(git merge-base HEAD upstream/skill/<name>) — if the merge base is NOT the initial commit and the merge base includes commits unique to the skill branch, it has been merged.git merge-base HEAD upstream/skill/<name> with git merge-base HEAD upstream/main. If the skill merge-base is strictly ahead of (or different from) the main merge-base, the user has merged this skill.git log --oneline HEAD..upstream/skill/<name>Build three lists:
If no skills have updates available:
If updates are available:
skill/<name>: 3 new commits
skill/<other>: 1 new commit
multiSelect: true to let the user pick which skills to update.
For each selected skill (process one at a time):
git merge upstream/skill/<name> --no-editgit status to identify conflicted files.git add <file>git commit --no-editIf a merge fails badly (e.g., cannot resolve conflicts):
git merge --abortAfter all selected skills are merged:
npm run buildnpm test (do not fail the flow if tests are not configured)If build fails:
Show:
git rev-parse --short HEADIf the service is running, remind the user to restart it to pick up changes.