← ClaudeAtlas

private-forklisted

Stand up and operate a private fork (private mirror) of an upstream open-source repo — creating the mirror and remotes, choosing the branch model and governance tier, deciding delete-vs-disable for unwanted upstream content, recording divergences in a ledger or registry, and running the recurring upstream review/merge cycle. Use when the user wants to "set up a private fork", "mirror an upstream repo", "sync/merge upstream", "run an upstream review", "strip out upstream cruft", asks about delete-vs-disable or merge tax, or is working in a repo with an `upstream` remote and a FORK_CHANGES.md / fork-customizations.md file. Not for ordinary contribute-back GitHub forks where changes are destined for upstream PRs.
hsb3/dotfiles-agents · ★ 0 · Code & Development · score 70
Install: claude install-skill hsb3/dotfiles-agents
# Private Fork — setup and operation Doctrine for maintaining a **private, deliberately-divergent fork** of an actively developed upstream OSS project: keep the ability to pull upstream forever, keep your divergence small and fully recorded, and keep every merge routine. The enemy is **merge tax** — every divergence makes every future upstream merge more expensive. Almost every rule below exists to minimize it or to make paying it deliberate. ## Reference files | File | Read when | |---|---| | `references/setup.md` | Creating a new private fork, or retrofitting governance onto an existing one | | `references/divergence-rubric.md` | Deciding what to delete/disable/hide, making any deliberate change to upstream code, neutralizing telemetry/phone-home | | `references/upstream-sync.md` | Reviewing upstream changes, merging upstream in, resolving conflicts, the post-merge checklist | Templates to copy into the fork are in `assets/templates/` (divergence ledger, full-tier registry, review log, digest script, CI reminder workflow). Fill placeholders marked `{{LIKE_THIS}}`. ## Invariants (every fork, every tier) 1. **Private mirror, not a GitHub fork.** GitHub forks of public repos can't be private. Create an empty private repo, push the full upstream history to it as `origin`, keep `upstream` as a fetch-only remote. 2. **Block accidental upstream pushes, day one:** `git remote set-url --push upstream DISABLED`. 3. **Merge upstream in; never rebase the published trunk