synclisted
Install: claude install-skill thettwe/nyann
# sync
Wraps `bin/sync.sh`. Rebases (or merges) the current feature branch
onto its base, after a clean-tree + branch-safety check.
## 1. Pre-flight (the script does these; your job is to interpret them)
- **Not a git repo** (exit 2) → tell the user; stop.
- **Detached HEAD / main / master / develop** (exit 2) → refuse with
a clear message; suggest switching to a feature branch first
(`/nyann:branch` creates one).
- **Dirty working tree** (status=`dirty` in JSON) → stop and tell the
user to commit or stash first. Don't silently stash on their behalf
— `git stash` is a footgun when the rebase also conflicts.
## 2. Choose strategy
Default to `rebase`. Use `merge` when:
- The user explicitly says "merge" (not "rebase").
- The profile's branching strategy is `gitflow` and the target base
is `develop`/`main` (shared long-lived branches — some teams ban
rebase on these).
- The branch has already been pushed to a shared remote and has open
PRs (rebasing rewrites history; merges don't).
If unclear, **you MUST call the `AskUserQuestion` tool** (not plain text):
```json
{
"questions": [
{
"question": "How should upstream changes be integrated?",
"header": "Strategy",
"multiSelect": false,
"options": [
{ "label": "Rebase (Recommended)", "description": "Keeps history linear; replays your commits on top of base" },
{ "label": "Merge", "description": "Preserves original commits; adds a merge commit" }
]
}
]
}
`