agentsclimarketplace

Rebased

Skill dupe-com/skills/skills/rebased

Rebase the current branch onto origin/main and intelligently resolve any conflicts that arise. Use when the user invokes /rebased or asks to rebase the current branch on main and resolve conflicts.From its SKILL.md

Install
npx -y skills add dupe-com/skills --skill rebased

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

  • 0 stars0 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.

SKILL.md

5.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Rebased

Rebases the current branch onto origin/main and resolves conflicts as they appear, one rebase step at a time.

When to use

The user typed /rebased, or asked something like "rebase me on main", "rebase and fix conflicts", "get this branch up to date with main".

Pre-flight checks (run in parallel)

Before touching anything, gather state:

git status --porcelain=v1 -b
git rev-parse --abbrev-ref HEAD
git rev-parse --git-dir   # to detect in-progress rebase via $GIT_DIR/rebase-merge or rebase-apply

Decision matrix:

  • Working tree dirty → stop and ask the user whether to stash, commit, or abort. Do not silently git stash — that hides their work.
  • Already on main/master → stop and ask. Rebasing main onto itself is almost never what they want.
  • Rebase already in progress (.git/rebase-merge or .git/rebase-apply exists) → skip the fetch/rebase-start step and jump straight to the conflict-resolution loop.
  • Detached HEAD → stop and ask.

Execution

1. Fetch and start the rebase

git fetch origin main
git rebase origin/main

If it returns clean ("Successfully rebased"), report that and stop.

If it stops with conflicts, proceed to the loop.

2. Conflict-resolution loop

Repeat until rebase is complete or the user tells you to stop.

a. Identify what's conflicted:

git status --porcelain=v1
git diff --name-only --diff-filter=U

b. Understand the current rebase step. This is critical — the conflict is between their commit (the one being replayed, marked <<<<<<< HEAD in working-tree convention during rebase is actually the upstream / main side; >>>>>>> commit-sha is the branch side being replayed). Get context:

git log --oneline -1 REBASE_HEAD       # the commit being applied
git show --stat REBASE_HEAD             # what it tried to change
git log --oneline origin/main -5        # recent main commits for context

c. For each conflicted file:

  1. Read the file to see the conflict markers.
  2. Decide the right resolution by understanding both intents:
    • What was main trying to do? (git log -1 -p origin/main -- <file> for the most recent main change to this file)
    • What was the branch commit trying to do? (git show REBASE_HEAD -- <file>)
  3. Edit the file to merge both intents — do not blindly pick one side. Common patterns:
    • Both sides added imports → keep both, deduped, in sorted order
    • Both sides edited the same function differently → combine the changes if they're orthogonal; ask if they conflict semantically
    • One side renamed/moved code the other side edited → apply the edit at the new location
    • Lock files (bun.lockb, package-lock.json, yarn.lock) → regenerate (bun install / npm install / yarn) rather than hand-merge
    • Generated files (migrations, snapshots) → regenerate from source
  4. Remove all <<<<<<<, =======, >>>>>>> markers.
  5. git add <file>.

d. Sanity-check the resolution before continuing:

  • For TypeScript/JS, run the project's type checker on affected files if the change touches types or imports.
  • For tests, don't run the full suite — too slow per step. Save that for after the rebase completes.

e. Continue the rebase:

git -c core.editor=true rebase --continue

The -c core.editor=true skips the commit-message editor. If a commit becomes empty (all its changes are now upstream), use git rebase --skip instead.

f. If --continue produces another conflict, loop back to step (a). Each rebase step is one commit being replayed, so you may go through this several times.

3. Post-rebase

When rebase finishes:

git status
git log --oneline origin/main..HEAD     # show what was replayed

Report back: how many commits replayed, how many files had conflicts, anything you regenerated (lock files, migrations).

Do not push. Pushing a rebased branch requires a force-push, which is destructive — confirm with the user first, and use --force-with-lease not --force.

Hard rules

  • Never use git rebase --skip or --abort without asking — these throw away work.
  • Never use git checkout --theirs/--ours blindly — these discard one side wholesale and almost always lose intent.
  • Never resolve a conflict by deleting the file unless you have positive evidence the file was deleted on purpose on one side (check git log --diff-filter=D).
  • Never bypass hooks with --no-verify. If a pre-commit hook blocks --continue, fix the underlying issue.
  • Never force-push automatically. Always confirm.
  • If the conflict resolution is non-obvious (e.g. both sides rewrote the same function with different intent), stop and ask the user rather than guessing.

Error recovery

  • "could not apply ..." with no obvious conflict → check for renames; git status will show "both modified" vs "added by us/them". For a rename conflict, find the new path with git log --follow --name-status and apply the change there.
  • Lock-file conflict that won't resolve cleanlygit checkout --theirs <lockfile> && <install-command> && git add <lockfile> (using "theirs" = the branch being replayed onto, i.e. main's lockfile as the base).
  • Stuck and want to bail out → tell the user the state, then ask before running git rebase --abort. Their working tree will return to pre-rebase state.

Reporting

End with a one-line summary: Rebased <branch> onto origin/main: N commits replayed, M files had conflicts (resolved). Run tests before pushing.

What ships with it: 2 files

2.7 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. 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.