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…
Cut a new release: group Conventional Commits since the last tag, append a CHANGELOG section, create a release commit, and add an annotated git tag. TRIGGER when the user says "cut a release", "tag a release", "release v1.2.0", "ship version 1.2.0", "create a release for 1.2.0",
$ npx -y skills add thettwe/nyann --skill release --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/releaseContext preview
The summary Claude sees to decide when to auto-load this skill.
Cut a new release: group Conventional Commits since the last tag, append a CHANGELOG section, create a release commit, and add an annotated git tag. TRIGGER when the user says "cut a release", "tag a release", "release v1.2.0", "ship version 1.2.0", "create a release for 1.2.0",
name: release description: > Cut a new release: group Conventional Commits since the last tag, append a CHANGELOG section, create a release commit, and add an annotated git tag. TRIGGER when the user says "cut a release", "tag a release", "release v1.2.0", "ship version 1.2.0", "create a release for 1.2.0", "bump the version to 1.2.0", "make a release", "generate a changelog and tag", "what version should I release", "what's the next version", "bump minor", "bump major", "bump patch", "suggest a version", "/nyann:release". Do NOT trigger on "release branch" / "cut a release branch" — that is the `new-branch` skill with `--purpose release`. Do NOT trigger on "publish to npm" / "push to pypi" — those are package-manager operations outside nyann's wedge.
Wraps `bin/release.sh`. Default strategy is `conventional-changelog`: walk the commit range since the last matching tag, group commits by Conventional Commits type, prepend a CHANGELOG block, commit the changelog, then annotated-tag `v<version>`.
Run `bash bin/session-check.sh --flow=release`. If it produces output, surface the line to the user verbatim. Do not block the flow.
When the user does **not** supply an explicit `--version`, run `bin/recommend-version.sh` to suggest one:
bin/recommend-version.sh --target <cwd> [--tag-prefix <p>]
Show the recommendation to the user:
> Based on commits since `<current>`, I'd suggest **`<recommended>`** > (`<bump>` bump — `<reason>`). Shall I proceed with `<recommended>`, > or would you prefer a different version?
Wait for confirmation before proceeding. The user can accept, override with a different version, or abort.
When the user **does** supply an explicit version (e.g. "release v2.0.0"), skip this step entirely — don't second-guess them.
When the user says "bump minor" / "bump major" / "bump patch", run `recommend-version.sh` to get the current version, then apply the requested bump type (ignore the script's own recommendation). Confirm the computed version with the user before proceeding.
(or `x.y.z-prerelease`). Populated from step 1 when the user accepted the suggestion, or from their explicit input.
`manual` when the user says "just tag it, skip the changelog". `changesets` / `release-please` are soft-skip values: the script emits a skip record pointing the user at those tools directly.
the repo uses a different file.
that namespace tags (`api-v1.2.0`).
`tag_prefix`. Override when the user says "include everything since commit X".
When the repo's active profile has a `release` block, prefer its values over the defaults. Ask before overriding what the profile declares.
`release.sh` dies with a clear message; relay it.
to commit or stash first. (Exception: `--dry-run` skips this gate so the user can preview.)
the common case, but patch releases from `release/*` or `hotfix/*` are legitimate).
bash bin/pre-action-guard.sh --flow release --target <cwd> [--profile <resolved-profile.json>]
The built-in `clean-tree` guard catches a dirty working tree before `release.sh` would (with a more actionable message). Profiles may add flow-specific guards via `guards.release` — surface those too.
| Exit | Meaning | Action | |---|---|---| | 0 | Pass | Continue | | 3 | Critical guard failed | Refuse to release. Relay the guard's `message` verbatim — the user fixes the underlying issue. `--skip-guards` is available but should be rare for a release. | | 4 | Confirm-severity guard failed | AskUserQuestion: "Proceed with the release?" — explicit confirm. |
Skip this step entirely on `--dry-run` (the user is previewing, not mutating).
When the user says "what would a release look like" or the commit range is large (>20 commits), run `--dry-run` first and show the rendered changelog block back to them. Ask for confirmation before the real run.
bin/release.sh --target <cwd> --version <x.y.z> \ [--strategy conventional-changelog|manual] \ [--changelog <path>] [--tag-prefix <p>] \ [--from <ref>] [--push] [--dry-run] [--yes] \ [--wait-for-checks] [--no-wait-for-checks] [--allow-no-pr] \ [--wait-for-checks-timeout <sec>] \ [--wait-for-checks-interval <sec>] \ [--bump-manifests] [--gh-release] [--profile <path>]
**Preview-before-mutate:** when `--strategy conventional-changelog` and the run is NOT `--dry-run`, `release.sh` requires `--yes`. Without it, the script prints the rendered CHANGELOG block to stderr and exits 2 so the caller is forced to confirm before the mutation. The intended flow is:
1. Run once with `--dry-run` → show the rendered `changelog` block back to the user and ask if it looks right. 2. If yes, re-run with `--yes` (same args) → actual write + commit.
Skip `--yes` handling for `--strategy manual` (no CHANGELOG write).
`--push` pushes the tag (and the release commit for `conventional-changelog`) to `origin`. Use when the user explicitly says "push the tag" or "publish the release". For quieter flows, skip `--push` and let the user run `git push --follow-tags` themselves.
**CI gate by default:** because a pushed tag is consumed by the marketplace, `--push` enables the CI gate automatically when the origin is a GitHub remote and `gh` i
ငြမ်း 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…