agentsclimarketplace

Sync branch

Skill mostafa-drz/claude-skills/code/sync-branch

Collection of Claude Code and Claude Desktop skills for developer workflows, automation, and productivity

Install
npx -y skills add mostafa-drz/claude-skills --skill sync-branch

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Merges one branch into another with conflict handling. Stashes work, updates both branches, merges, resolves conflicts preserving both sides, pushes, and restores state. Use when keeping a long-lived branch in sync with its upstream.

SKILL.md

4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

Sync Branch

Merge one branch into another, handling conflicts and preserving work in progress.

Preferences

Read ~/.claude/skills/sync-branch/preferences.md using the Read tool. If not found, no preferences are set.

Context

On startup, use Bash to detect: current git branch, git status, and remote URL (git remote get-url origin). Skip any that fail.

Command routing

Check $ARGUMENTS:

  • help → display help then stop
  • config → interactive setup then stop
  • reset → delete ~/.claude/skills/sync-branch/preferences.md, confirm, stop
  • anything else → sync branches

Flags

Parse from $ARGUMENTS:

  • --no-push — merge locally, don't push
  • --dry-run — show what would happen without executing
  • Positional args: $0 = source branch, $1 = target branch

Help

Sync Branch — Merge one branch into another

Usage:
  /sync-branch                          Merge default source into current branch
  /sync-branch <source>                 Merge source into current branch
  /sync-branch <source> <target>        Merge source into target
  /sync-branch --no-push <source>       Merge without pushing
  /sync-branch --dry-run <source>       Preview without executing
  /sync-branch config                   Set defaults
  /sync-branch reset                    Clear preferences
  /sync-branch help                     This help

Examples:
  /sync-branch main
  /sync-branch main all-demos
  /sync-branch --dry-run main feature/auth
  /sync-branch --no-push develop

How it works:
  1. Stashes uncommitted work (if any)
  2. Updates source and target branches from remote
  3. Merges source into target
  4. Resolves conflicts (preserving both sides)
  5. Pushes target (unless --no-push)
  6. Restores original branch and stash

Current preferences:
  (shown above under Preferences)

Config

Use AskUserQuestion:

Q1 — "Default source branch?" (main (default), develop, custom) Q2 — "Auto-push after merge?" (Yes (default), No) Q3 — "Conflict resolution style?" (preserve-both (default) — keep changes from both sides, ask-each — show each conflict and ask, prefer-source — favor source branch, prefer-target — favor target branch)

Save to ~/.claude/skills/sync-branch/preferences.md.

First-time detection

If no preferences file exists, show: "First time using /sync-branch? Run /sync-branch config to set defaults, or continue — I'll merge main into your current branch."

Then proceed.

Steps

1. Resolve branches

  • Source: $0 if provided, else saved default, else main
  • Target: $1 if provided, else current branch
  • Direction: Always source → target

If source == target, error and stop.

2. Dry run check

If --dry-run:

git fetch origin
git log {target}..origin/{source} --oneline

Show what commits would be merged, then stop.

3. Stash uncommitted work

If working tree is dirty:

git stash --include-untracked

Record that a stash was created.

Record which branch the user was on originally.

4. Update source

git checkout {source}
git pull origin {source}

If pull fails → restore state, report error, stop.

5. Update and merge into target

git checkout {target}
git pull origin {target}
git merge {source} --no-edit

6. Handle conflicts

If merge reports conflicts:

  1. List conflicts: git diff --name-only --diff-filter=U
  2. Based on conflict resolution preference:
    • preserve-both: Read each file, resolve keeping both sides
    • ask-each: Show conflict to user via AskUserQuestion, let them decide
    • prefer-source/target: Auto-resolve favoring chosen side
  3. git add each resolved file
  4. git commit --no-edit

7. Push

Unless --no-push or preference says no:

git push origin {target}

8. Restore state

  1. Checkout original branch (if different from target)
  2. If stash was created: git stash pop

9. Report

Synced {source} → {target}

  {source}:  {short sha} {subject}
  {target}:  {short sha} {subject}
  Conflicts: {count} ({file list} or "none")
  Pushed:    {yes/no}

10. Learn

If user changes source branch, save preference. If user changes conflict style, save preference.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.