Custom Rebase
When To Use
Use for Fusion Framework branch refreshes where the agent must rebase onto origin/main, resolve common monorepo conflicts, and sanity-check the result before force-pushing.
Trigger phrases:
- "rebase this branch onto main"
- "refresh my branch"
- "fix rebase conflicts"
- "handle pnpm-lock.yaml conflicts"
- "generate a rebase report"
Required Gates
- Confirm the current branch and repository root before starting.
- Stop if the working tree is dirty unless the user explicitly says those changes are expected.
- Use
pnpmonly. - Never run
git reset --hard,git rebase --abort,git rebase --skip, orgit push --force-with-leasewithout making the action and target branch explicit. - Prefer
origin/mainas the rebase target unless the user gives another base.
Workflow
- Prepare:
git status
git branch --show-current
git fetch origin
git fetch origin main:refs/remotes/origin/main
- Rebase:
git rebase origin/main
- Resolve known conflicts:
| Conflict | Action |
|---|---|
pnpm-lock.yaml |
Regenerate with pnpm install, then git add pnpm-lock.yaml |
Version Packages package.json |
Keep main with git checkout --ours "packages/*/package.json", then stage |
Version Packages CHANGELOG.md |
Keep main with git checkout --ours "packages/*/CHANGELOG.md", then stage |
.changeset/pre/*.md (Changesets v3 pre mode) |
Resolve manually like any other changeset content conflict, preserve both sides' entries when in doubt |
| Source files | Resolve manually, preserve user intent, stage resolved files |
Then continue:
git rebase --continue
- If
.changeset/pre.jsonexists, packages bumped onmainsincenextdiverged won't automatically get anext-tagged release. Changesets v3 no longer tracks a baseline inpre.json.initialVersions(removed/unused upstream) — instead, create one consolidated changeset covering every package whose version increased onmainduring the rebase, so they pick up anextpre-release bump:
pnpm changeset status --verbose
Compare against the rebase diff to find packages whose package.json version increased purely from main's own "Version Packages" commits, then add one .changeset/*.md file listing all of them (patch bump, "Internal: rebase next onto main..." message). Do not resurrect the old align-pre-initial-versions.cjs baseline script — it edits a pre.json field Changesets v3 no longer reads.
Running pnpm changeset status (or changeset version) also auto-migrates pre.json to the v3 layout the first time it's called after upgrading past v3: previously-consumed pre-release changesets move from .changeset/*.md into .changeset/pre/*.md. This is expected, documented, one-time behavior — commit it as its own step rather than reverting it.
- Check the local result against the remote branch:
BRANCH=$(git rev-parse --abbrev-ref HEAD)
git fetch origin
git diff --stat origin/$BRANCH...HEAD
git diff --name-only origin/$BRANCH...HEAD | sort
git log --oneline --left-right --cherry --no-merges origin/$BRANCH...HEAD
git push --force-with-lease --dry-run origin $BRANCH
- Generate the raw report when risk or size warrants it:
node .agents/skills/custom-rebase/scripts/generate-rebase-report.cjs --no-fetch
Read the latest .tmp/skills/custom-rebase/*-rebase-report.md and summarize only the decision-relevant parts: largest diffs, dependency changes, package scope, pre.json changes, lockfile churn, validation to run, and push recommendation.
Troubleshooting
| Symptom | Response |
|---|---|
| Rebase is going the wrong way | Stop and verify current branch plus git rebase origin/main direction |
pnpm install fails |
Check repo root, conflicted package.json syntax, and unstaged package manifest changes |
| Local branch diverged unexpectedly | Explain the divergence and ask before any reset |
| Conflict repeats commit after commit | Resolve the recurring pattern once, continue, and re-check after completion |
Expected Output
- Rebased branch or clear blocker
- Conflict decisions made explicit
- Remote comparison before push
- Human-readable risk summary when a report was generated
- Suggested validation commands before the user or agent pushes
Related Skills
fusion-dependency-reviewfor dependency PR analysiscustom-dependency-pr-solverfor Dependabot batch processing