This document describes the release workflow for @github-ui/storybook-addon-performance-panel.
Releases are automated through Changesets and GitHub Actions. The end-to-end flow is:
- Contributor opens a PR with a changeset file
- PR is merged to
main - A "Version Packages" PR is automatically created (or updated)
- A maintainer merges the version PR
- The package is published to npm with provenance attestation
Every PR that changes the published package must include a changeset file describing the change and the semver bump it warrants.
From the repo root, run:
npx changesetThe interactive prompt will ask you to:
- Select the package(s) affected (
@github-ui/storybook-addon-performance-panel) - Choose a bump type:
patch— backwards-compatible bug fixesminor— backwards-compatible new featuresmajor— breaking changes
- Write a short summary of the change
This creates a Markdown file in .changeset/ that must be committed and pushed with your PR.
The changeset-check.yml workflow runs on every PR targeting main and fails if no changeset file is present. To bypass the check for PRs that don't affect the published package (e.g., documentation updates, CI changes), apply the skip changeset label to the PR.
The publish workflow uses GitHub Actions OIDC to generate npm provenance attestations — no manually managed npm tokens are required.
Key details:
id-token: writepermission — grants the workflow an OIDC token that npm uses to verify the package was built in this repository.NPM_CONFIG_PROVENANCE: true— instructs npm to cryptographically link the published package to the exact source repository and commit. Consumers can verify the attestation withnpm audit signatures.productionenvironment — the workflow runs in theproductionGitHub environment, which may have environment protection rules (e.g., required reviewers) configured in the repository settings.- No
NPM_TOKENsecret needed — the OIDC token handles authentication automatically when provenance is enabled and the package registry ishttps://registry.npmjs.org/.
The publish.yml workflow triggers on every push to main and runs changesets/action, which does one of two things depending on the state of pending changesets:
If there are pending changesets:
The action opens (or updates) a "Version Packages" PR that:
- Bumps the version in
package.jsonaccording to the accumulated changesets - Updates
CHANGELOG.mdwith entries from each changeset - Deletes the consumed changeset files
The PR is automatically labeled skip changeset and given a synthetic CI success status so it is never blocked by the changeset check or other CI gates.
If no pending changesets remain (i.e., the version PR was just merged):
The action publishes the package to npm using npx changeset publish, with provenance attestation enabled.
- Review the open "Version Packages" PR — confirm the version bump and changelog look correct.
- Merge the PR into
main. - The publish workflow runs automatically and publishes the new version to npm.
Contributor PR (with changeset)
│
▼
Merge to main
│
▼
publish.yml detects pending changesets
│
▼
"Version Packages" PR created/updated
│
▼
Maintainer merges version PR
│
▼
publish.yml detects no pending changesets
│
▼
Package published to npm (with provenance)