SKILL.md
DO NOT auto-invoke this skill. This destructively overwrites a remote branch. Always ask for user confirmation before proceeding.
sync-force-to
Overwrite a remote target branch with the current branch by deleting the remote target and re-pushing. Avoids git push --force by using delete + push instead.
Before overwriting, the script automatically:
- Pushes the old target state as a
backup/YYYYMMDDHHMM-<target> branch
- Creates a PR for the backup branch against the default branch
- Closes the PR and deletes the backup branch
- The closed PR retains GitHub's "Restore branch" button for recovery
If the target branch doesn't exist yet (first-time push), backup steps are skipped.
Usage
Normal mode
Run the bundled script:
bash $HOME/.claude/skills/sync-force-to/scripts/sync-force-to.sh $ARGUMENTS
Report the script output to the user verbatim. Do not add extra commentary unless there was an error.
Setup mode (--setup)
When $ARGUMENTS is --setup, do NOT run the script. Instead, configure the current project's GitHub Actions workflows to skip CI on backup/* branches:
- Find all workflow files:
.github/workflows/.yml and .github/workflows/.yaml
- For each workflow file, check
on: triggers (push, pull_request, etc.)
- For each trigger that could run on
backup/** branches:
- If the trigger has a
branches: filter that already excludes backup/**, skip it
- If the trigger has a
branches: filter, add '!backup/**' to the list to exclude it
- If the trigger has NO branch filter (runs on all branches), add
branches-ignore: ['backup/**']
- If the trigger already has
branches-ignore:, add 'backup/**' to the existing list
- Report what files were changed
Important notes for setup:
- Do not modify triggers for
workflow_dispatch, schedule, or other non-branch triggers
- Only modify
push and pullrequest / pullrequest_target triggers
- Preserve existing YAML formatting and comments as much as possible
- Show the user the diff of changes before committing