This guide covers how to publish a new Taskplane npm release.
These are related, but not the same operation:
npm publishuploads installable package artifacts to npm (npm install taskplane).- GitHub Release is a repository release record tied to a git tag (
vX.Y.Z) with notes/assets.
Best practice for Taskplane is to keep them aligned:
- one package version in
package.json - one git tag (
vX.Y.Z) - one npm publish (
taskplane@X.Y.Z) - one GitHub Release (
vX.Y.Z)
- npm publish access for
taskplane - clean git working tree
- Node.js 22+
From repo root:
npm pack --dry-runConfirm only intended files ship (per package.json#files).
Optional tarball inspection:
npm pack
tar -tzf taskplane-<version>.tgzcd extensions
npx vitest run
cd ..Optional local smoke:
node bin/taskplane.mjs helpnode bin/taskplane.mjs doctor
Update CHANGELOG.md with release notes.
Use Keep a Changelog style sections:
- Added
- Changed
- Fixed
- Removed
npm version patch # or minor / majorThis updates package.json, creates a git commit, and creates a git tag.
npm publishFor pre-release channel:
npm publish --tag betagit push
git push --tagsAfter tags are pushed, create a GitHub Release for the same tag/version.
Example:
gh release create v<version> \
--title "v<version>" \
--notes-file CHANGELOG.mdOr create it in the GitHub UI and paste release notes from CHANGELOG.md.
Verify published metadata:
npm view taskplane version
npm view taskplane versions --jsonVerify GitHub release/tag:
gh release view v<version>
git tag --list | grep "^v<version>$"Sanity install in scratch project:
pi install -l npm:taskplane
npx taskplane version- Tests pass
- Changelog updated
- Version bumped
-
npm pack --dry-runreviewed - Published successfully
- Tag pushed
- GitHub release created for the same tag/version
- Install smoke test passed
- Taskplane currently ships as a single package.
package.json#filescontrols published file whitelist.- Keep templates generic and public-safe before publishing.