sync-template
Bring a project generated from Llamitai/wise up to a published SaaS Bootstrap template release. Use when asked to sync, update, or incorporate changes from the base template into an existing generated
Files1
View on GitHubSKILL.md.claude/skills/sync-template/SKILL.md
GitHubSync Template
Update one derived project from a published Llamitai/saas-bootstrap-template
release while preserving its product changes. The canonical Llamitai/wise repo
builds that mirror; its unreleased working tree is not an update source.
Identify the target and base
- Work from the target project's Git root. Read its
AGENTS.mdand any area instructions for files that may change. If invoked in the canonical repo, locate the derived project requested by the user first; do not run Copier against the canonical repo. - Check
git status --porcelain=v1 --untracked-files=all. Require a clean tree before applying an update. Preserve local work; do not stash, reset, clean, force overwrite, or make a preparatory commit on the user's behalf. - If
.copier-answers.ymlexists, inspect_src_pathand_commit. Continue with Copier only when they identify the publishedLlamitai/saas-bootstrap-templatemirror and a recorded release. Never edit this file by hand or replace it with metadata from a new copy. Stop if the source is unknown or the recorded release cannot be resolved. - Without valid Copier metadata, use the manual route below. Do not run
copier recopyor pretend that a GitHub-template copy supports 3-way updates.
Copier route
Select the latest published stable tag unless the user specified a release. Do not use
HEAD, an unreleased canonical commit, or a prerelease by default. Confirm that the target is newer than the recorded_commit; report "already current" if it is the same. Review release notes or the mirror diff to identify affected contracts and migrations. Inspect the destination release'scopier.ymltasks and migrations before trusting it.Run from the derived project's root:
uvx --from 'copier>=9.6,<10' copier update --defaults --trust --vcs-ref "$template_tag"Set
template_tagto the verified published tag. The checked_src_pathdetermines what--trustexecutes. The template's current copy-only tasks leavebackend/.envalone on update, and_skip_if_existsprotectsbackend/uv.lock; verify both after the run. If the update command fails, inspect its partial changes and resolve them in place; never discard them automatically.Review
git status,git diff, andgit diff --check. Search changed files for<<<<<<<,=======,>>>>>>>and*.rej; resolve every Copier conflict using the old project behavior, new template behavior, and product-specific requirements. Check that.copier-answers.ymlnow records the target tag. A successful Copier exit alone does not prove that every intended change survived the merge.Regenerate
backend/uv.lockwithuv lock --directory backendwhen backend dependencies or package metadata changed. Regenerate other affected locks with their package managers. Review new migrations, environment examples, HTTP contracts, auth/tenancy boundaries, and deployment changes before treating the update as complete. Never overwrite real.envfiles or apply migrations to production as part of this skill.
GitHub-template or clone route
Establish the exact canonical revision or release used to create the project
from its history or other reliable provenance. Compare that base with the
desired published release, then port the relevant changes file by file,
adapting neutral branding and preserving product-specific code. Treat the
result as an ordinary code change: review migrations and contracts, regenerate
affected locks, and check for conflicts and leftover neutral branding. If the
base cannot be established, ask for it before applying a guessed diff. This
route does not create or edit .copier-answers.yml.
Verify and report
Run the target project's checks selected by its AGENTS.md and the actual
diff, including migration/API/browser checks when those contracts changed.
Inspect the final diff and working-tree status. Report the source and target
releases, changed files or capabilities, conflicts resolved, commands and
results, and any remaining manual work. Do not commit, push, open a PR,
release, or deploy unless the user requested that separately.