Skip to content
Automation
Skill

/update-skills

Check for and apply updates to installed skill branches from upstream.

From plugin
claudeclaw
19427 skills

Claude Code

$ npx -y skills add sbusso/claudeclaw --skill update-skills --agent claude-code

SKILL.md

update-skills.SKILL.md
name: update-skills
description: Check for and apply updates to installed skill branches from upstream.

About

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.

How it works

**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.

---

Goal

Help users update their installed skill branches from upstream without losing local customizations.

Operating principles

  • Never proceed with a dirty working tree.
  • Only offer updates for skills the user has already merged (installed).
  • Use git-native operations. Do not manually rewrite files except conflict markers.
  • Keep token usage low: rely on `git` commands, only open files with actual conflicts.

Step 0: Preflight

Run:

  • `git status --porcelain`

If output is non-empty:

  • Tell the user to commit or stash first, then stop.

Check remotes:

  • `git remote -v`

If `upstream` is missing:

  • Ask the user for the upstream repo URL (default: `https://github.com/sbusso/claudeclaw.git`).
  • `git remote add upstream <url>`

Fetch:

  • `git fetch upstream --prune`

Step 1: Detect installed skills with available updates

List all upstream skill branches:

  • `git branch -r --list 'upstream/skill/*'`

For each `upstream/skill/<name>`: 1. Check if the user has merged this skill branch before:

  • `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.
  • Alternative: `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.
  • Simplest reliable check: compare `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.

2. Check if there are new commits on the skill branch not yet in HEAD:

  • `git log --oneline HEAD..upstream/skill/<name>`
  • If this produces output, there are updates available.

Build three lists:

  • **Updates available**: skills that are merged AND have new commits
  • **Up to date**: skills that are merged and have no new commits
  • **Not installed**: skills that have never been merged

Step 2: Present results

If no skills have updates available:

  • Tell the user all installed skills are up to date. List them.
  • If there are uninstalled skills, mention them briefly (e.g., "3 other skills available in upstream that you haven't installed").
  • Stop here.

If updates are available:

  • Show the list of skills with updates, including the number of new commits for each:
  skill/<name>: 3 new commits
  skill/<other>: 1 new commit
  • Also show skills that are up to date (for context).
  • Use AskUserQuestion with `multiSelect: true` to let the user pick which skills to update.
  • One option per skill with updates, labeled with the skill name and commit count.
  • Add an option: "Skip — don't update any skills now"
  • If user selects Skip, stop here.

Step 3: Apply updates

For each selected skill (process one at a time):

1. Tell the user which skill is being updated. 2. Run: `git merge upstream/skill/<name> --no-edit` 3. If the merge is clean, move to the next skill. 4. If conflicts occur:

  • Run `git status` to identify conflicted files.
  • For each conflicted file:
  • Open the file.
  • Resolve only conflict markers.
  • Preserve intentional local customizations.
  • `git add <file>`
  • Complete the merge: `git commit --no-edit`

If a merge fails badly (e.g., cannot resolve conflicts):

  • `git merge --abort`
  • Tell the user this skill could not be auto-updated and they should resolve it manually.
  • Continue with the remaining skills.

Step 4: Validation

After all selected skills are merged:

  • `npm run build`
  • `npm test` (do not fail the flow if tests are not configured)

If build fails:

  • Show the error.
  • Only fix issues clearly caused by the merge (missing imports, type mismatches).
  • Do not refactor unrelated code.
  • If unclear, ask the user.

Step 5: Summary

Show:

  • Skills updated (list)
  • Skills skipped or failed (if any)
  • New HEAD: `git rev-parse --short HEAD`
  • Any conflicts that were resolved (list files)

If the service is running, remind the user to restart it to pick up changes.

Read more
@sbusso
Ships withclaudeclaw

Use Claude to orchestrate agents like OpenClaw

Stars on GitHub

Momentum

stars in total
194
Star history of sbusso/claudeclaw on GitHub, a chart by star-history.com

Other skills on claudeclaw.

agent-browser

agent-browser

Browse the web for any task — research topics, read articles, interact with web apps, fill forms, take screenshots, extract data,…

@sbusso@sbussoInstall Skill
add-compact

add-compact

Add /compact command for manual context compaction. Solves context rot in long sessions by forwarding the SDK's built-in /compact…

@sbusso@sbussoInstall Skill
add-gmail

add-gmail

Add Gmail integration to ClaudeClaw. Can be configured as a tool (agent reads/sends emails when triggered from WhatsApp) or as a…

@sbusso@sbussoInstall Skill
add-image-vision

add-image-vision

Add image vision to ClaudeClaw agents. Resizes and processes WhatsApp image attachments, then sends them to Claude as multimodal…

@sbusso@sbussoInstall Skill
add-ollama-tool

add-ollama-tool

Add Ollama MCP server so the container agent can call local models for cheaper/faster tasks like summarization, translation, or…

@sbusso@sbussoInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n12d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about update-skills.

Which coding agents can use update-skills?
update-skills installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.