release-mashay
Release mashay
This pipeline's irreversible boundary is a single step: git push --follow-tags. It publishes the release commit and tag to the shared origin remote and triggers .github/workflows/publish.yml, which publishes @draekien/mashay to the public npm registry (via OIDC trusted publishing) and cuts a GitHub release. A pushed tag is shared history and a published version can't be silently replaced, so treat the push as needing explicit confirmation, even if the version-bump and changelog step ran without asking. Publishing is CI-owned — never run pnpm publish or npm publish locally, that double-publishes.
If the user invoked this skill asking only for a --dry-run preview, run just the dry-run in step 1, show the output, and stop — do not proceed to steps 2–4.
Preflight
Before bumping anything, confirm the release will be built from what's actually intended. If any check fails, stop and report it to the user rather than trying to fix it as part of the release:
git status— the working tree must be clean.commit-and-tag-versioncommits the version bump and changelog itself; uncommitted changes lying around get swept into that commit or block it outright. If it isn't clean, stop and ask whether to commit, stash, or abort.- Confirm the current branch is
main, thengit fetch origin && git log origin/main..HEAD --oneline— a release should ship only reviewed, already-merged work, so this should be empty. If it isn't, confirm with the user that those commits are intended before continuing. pnpm lint && pnpm test— both must pass. If either fails, stop and report the failure — a release built on red is worse than not releasing, and fixing lint/test issues is a separate task from cutting a release.git log <last-tag>..HEAD --oneline— read the commits since the last tag. If this is empty, tell the user there's nothing new to release and stop. Otherwise,commit-and-tag-versioninfers the version bump (major/minor/patch) purely from conventional-commit types in these messages, so this is the only way to catch a bump about to be wrong — afeat:that should have beenfix:, or a breaking change without aBREAKING CHANGE:footer. If the intended bump looks ambiguous or wrong, say so before continuing rather than letting the tool decide silently.
Pipeline
Run in order — this sequence is fragile and each step assumes the last one succeeded: