sync-templatelisted
Install: claude install-skill RemiMyrset/roots
# Sync from the template
`pnpm sync:template` stages the template's version of the synced paths, records
the sync point in `.template-sync.json`, and prints the follow-ups a file copy
cannot carry: the template commits since the last sync (breaking ones marked
`!`) and the `package.json` scripts that differ. The synced paths, the recipe,
and the contract are in `docs/template/sync-template.md`.
1. Bootstrap if needed. If `scripts/sync-template.mts` is missing, or there is
no `.template-sync.json` yet (an older copy of the script that never recorded
a sync point), fetch a fresh copy with plain git and continue with step 2.
Overwrite it; behavior 7 says why. The `sync:template` script shows up as a
missing follow-up on a first run:
`mkdir -p scripts && git fetch --no-tags https://github.com/RemiMyrset/roots.git main && git show FETCH_HEAD:scripts/sync-template.mts > scripts/sync-template.mts`
2. Start clean. The script refuses uncommitted changes under the synced paths;
commit or stash them first, never discard them.
3. Run `pnpm sync:template` (add the fork URL if this repo tracks a fork, or
`--ref <branch|tag>` to pin a template branch or tag; both are remembered).
Read the output top to bottom. On a first sync, the `Baseline:` line says how
the starting point was found: `root time` is approximate, `none` means no
commit list this run.
4. Breaking commits first. Every `!` line and its `BREAKING CHANGE` paragraph is
an instruction for a hand-