← ClaudeAtlas

unforklisted

Reconcile a long-diverged fork with its upstream. Use when a fork has drifted for months or years and the user wants to catch up to upstream while keeping only the local changes that still matter — rebuilt as a clean, minimal patch set.
tokyubevoxelverse/unfork · ★ 1 · AI & Automation · score 74
Install: claude install-skill tokyubevoxelverse/unfork
# Unfork A long-diverged fork is two codebases wearing one name. The naive `git merge upstream/main` produces a conflict wall and a history nobody can audit. Your job is the opposite: figure out what the fork's divergence *actually consists of*, then rebuild only the still-valuable part on top of current upstream as clean, explainable commits. **Safety first:** all work happens on a new branch. Never force-push, never rewrite the fork's existing branches, never discard the old branch — it remains the archive until the user retires it. ## Phase 1 — Map the divergence - Fetch upstream; find the merge-base; count ahead/behind. - List every fork-side commit since the base. If the fork has merge commits from previous partial syncs, flatten your view to *effective changes* (diff-based, not commit-count-based). - Summarize what upstream did meanwhile at feature level (releases, big refactors, renames) — this is the terrain the surviving patches must land on. ## Phase 2 — Sentence every fork commit Classify each fork-side change: - **`ABSORBED`** — upstream has the identical/equivalent change. Detect with `git cherry` / patch-id first, but that only catches textual equivalence — also check *semantic* absorption: the bug it fixed has an upstream fix in different words. Drop these. - **`SUPERSEDED`** — upstream solved the same problem differently. Drop the fork's version; verify the upstream solution actually covers the fork's use case, and note the gap if it doesn't. - **`ALIVE