add-team-source
Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER when the user says "add a team…
Update the current feature branch with the latest changes from its base branch (rebase by default, merge when asked). TRIGGER when the user says "sync with main", "update my branch", "rebase on main", "catch up with main", "pull in main", "bring this branch up to date", "merge
$ npx -y skills add thettwe/nyann --skill sync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/syncContext preview
The summary Claude sees to decide when to auto-load this skill.
Update the current feature branch with the latest changes from its base branch (rebase by default, merge when asked). TRIGGER when the user says "sync with main", "update my branch", "rebase on main", "catch up with main", "pull in main", "bring this branch up to date", "merge
name: sync description: > Update the current feature branch with the latest changes from its base branch (rebase by default, merge when asked). TRIGGER when the user says "sync with main", "update my branch", "rebase on main", "catch up with main", "pull in main", "bring this branch up to date", "merge main into this branch", "/nyann:sync". Trigger on "resolve conflicts" only when the user specifically ties it to syncing — otherwise that's a manual resolve. Do NOT trigger on "pull" alone (that's a different operation for updating main itself). Do NOT trigger on main/master/develop — those are long-lived branches and sync-skill refuses them. Do NOT trigger on commit / push / PR — those are separate skills.
Wraps `bin/sync.sh`. Rebases (or merges) the current feature branch onto its base, after a clean-tree + branch-safety check.
a clear message; suggest switching to a feature branch first (`/nyann:branch` creates one).
user to commit or stash first. Don't silently stash on their behalf — `git stash` is a footgun when the rebase also conflicts.
Default to `rebase`. Use `merge` when:
is `develop`/`main` (shared long-lived branches — some teams ban rebase on these).
PRs (rebasing rewrites history; merges don't).
If unclear, **you MUST call the `AskUserQuestion` tool** (not plain text):
{
"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" }
]
}
]
}`bin/sync.sh` picks base via: `--base` > `@{upstream}` > `origin/HEAD` > `main`. Override only when the user explicitly names a different target ("sync against develop"). Normally trust the resolution.
bin/sync.sh --target <cwd> [--strategy rebase|merge] [--base <branch>] [--dry-run]
`--dry-run` reports what would happen without mutating. Use it when the user is cautious or you want to show them the ahead/behind count first.
| status | meaning | what to tell the user | |---|---|---| | `up-to-date` | behind == 0 | "Already up to date with `<base>`." No action needed. | | `synced` | operation completed | "Synced via `<strategy>`. Now `<ahead>` ahead, 0 behind." | | `dirty` | working tree had uncommitted changes | "Working tree has uncommitted changes. Commit or stash first." | | `skipped` | base not found locally or on origin | "Couldn't find `<base>` locally or on origin. Check the branch name." | | `conflicts` | rebase/merge halted mid-operation | See §6 — this is the tricky case. |
The script stops and leaves the working tree in a rebase-in-progress or merge-in-progress state. Do NOT call sync again — the script doesn't know how to resume.
Read the `conflicts[]` array from the JSON. For each file, offer to help resolve it (read the file, show conflict markers, ask the user which side to keep). When the user is done:
`git -c user.email=... -c user.name=... commit --no-edit` to finalize.
If the user wants to bail: `git rebase --abort` or `git merge --abort`. Either returns the working tree to its pre-sync state.
/ `git merge --abort` yourself and confirm.
&& git pull` handles that.
ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR
Repo: thettwe/nyann
Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER when the user says "add a team…
Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow", "bootstrap this repo", "scaffold…
Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for nyann", "what do I need to…
Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged branches", "prune local…
Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user says "commit these changes",…
Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines explain-state + doctor + git…