Release Runbook
August 30, 2026 ยท View on GitHub
This repository uses independent Nx Version Plans. A release is derived from
committed .nx/version-plans/*.md files; maintainers do not choose bump types
again in the release workflow.
One-time setup
- Confirm that the
@yadshnpm organization exists and that maintainers have permission to publish every public package in this repository. - Make
mainthe repository default branch and protect it with the CI / Verify affected projects check. - In npm package settings, configure this GitHub repository and
.github/workflows/release.ymlas the Trusted Publisher for every public package. - Ensure GitHub Actions can create releases and push the release commit and
tags. The workflow requests only
contents: writeandid-token: write.
Never add an npm automation token to this workflow. Trusted Publishing uses GitHub OIDC, and npm generates provenance automatically for supported public packages and repositories.
Contributor flow
- Make the package change.
- Run
pnpm release:planand select the affected public packages. - Commit the generated Markdown plan with the implementation.
- Run
pnpm check,pnpm deps:check, andpnpm tarball:verify. - Open a PR. CI checks that touched publishable packages have a plan.
Maintainer flow
- Merge the PR into
main. - Run the Release workflow with
dry_run=true. - Review resolved versions, dependent bumps, and generated changelogs.
- Run the workflow again with
dry_run=false. - For the repository's first release only, also set
first_release=true.
create_github_releases defaults to true. Set it to false for a routine
package update or hotfix that should still receive a release commit, changelog,
tag, workflow artifact, and npm publication, but should not create a
per-package GitHub Release.
The live workflow asks Nx to create the release commit, project changelogs,
and per-package tags without publishing. It then runs all validation and
tarball installation gates, pushes the commit and tags, publishes only the
versioned projects through npm OIDC, and creates one GitHub Release per package
with its .tgz attached.
Failure recovery
- Before the release commit is pushed, rerun the workflow after fixing the failing gate; the runner's local changes disappear automatically.
- If the commit and tags were pushed but npm publication failed, do not create
another Version Plan. Correct the publishing problem, then run the Release
workflow with
publish_only=true. Usedry_run=truefirst to verify the tagged packages and tarballs, then rerun withdry_run=false. Recovery mode skips versioning, publishes only versions with matching package tags, and is safe to rerun after a partial publication. - If only GitHub Release creation failed, use
gh release createfor the existing package tag and attach the corresponding workflow artifact. - To create omitted GitHub Releases later, run the workflow with
publish_only=true,dry_run=false, andcreate_github_releases=true. Already published npm versions are skipped, while missing GitHub Releases are created from their existing tags and freshly verified tarballs.
Publication is not ready until npm Trusted Publishers have been configured
externally for the @yadsh packages.