Guides npm publishing for Fusion Framework packages through trusted publishing (OIDC) from release.yml. USE FOR: adding a new public package, preparing a first release, reserving a package name on npm, snapshot or pre-release publishing, diagnosing failed or partial npm releases (ENEEDAUTH, 401, 404, provenance), npm trust audit/bootstrap/verify, changing the release workflow. DO NOT USE FOR: writing changesets, Dependabot PRs, VS Code Marketplace publishing, rebasing Version Packages PRs, or application code changes.
76
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Every public package publishes to npm only from .github/workflows/release.yml, in the GitHub
environment npm, through npm trusted publishing (OIDC). No npm token exists in CI. The full
runbook is contributing/npm-publishing.md; the decision record is
docs/adr/0002-npm-trusted-publishing.md. Read the runbook section that matches the request
instead of restating it.
packages/*. Cookbooks are private and
never publish to npm.release.yml, renaming the npm environment, adding a publish
step to another workflow, or reintroducing an npm token..github/instructions/changesets.instructions.md.fusion-dependency-review / custom-dependency-pr-solver.custom-rebase.@equinor npm maintainer who can complete 2FA (needed for trust
changes and placeholder publishes)."private": true. It needs:
"publishConfig": { "access": "public" };"repository": { "type": "git", "url": "git+https://github.com/equinor/fusion-framework.git", "directory": "<path>" }.
Provenance is rejected without a matching repository..github/instructions/monorepo-structure.instructions.md
and a changeset.pnpm npm-trust preflight. Before the package is reserved, it fails with
not on npm yet; that is expected for a new package.pnpm npm-trust add <name> before the first
release PR that contains the package is merged. Otherwise the release job stops in
preflight and blocks every other package. The command publishes the placeholder
0.0.0-trusted-publishing.0 and trusts release.yml. The first real publish must happen
within 2 days, or the trust configuration expires.pnpm npm-trust verify --package <name>. The expected status is
verified.Example:
User: I added packages/modules/foo as @equinor/fusion-framework-module-foo. Anything else for npm?
Agent: Check `repository` and `publishConfig`, add a changeset, and run `pnpm npm-trust preflight`.
Before the release PR merges, a maintainer runs `pnpm npm-trust add @equinor/fusion-framework-module-foo`,
and the release must publish within 2 days.gh workflow run release.yml --ref main -f tag=<tag>. The tag must match
^[a-z][a-z0-9-]*$ and must not be latest or next.npm environment only deploys from main and next. Snapshots from feature branches are
rejected by design; do not suggest a workaround.next while .changeset/pre.json exists.gh run view <run-id> --log-failed).
Publishing is sequential, so the packages after it were skipped, not broken.error sending request, ECONNRESET): re-run the failed job.
pnpm publish -r skips versions already on npm.ENEEDAUTH, 401, or 404 on publish: trust is missing or expired. Use the runbook's
troubleshooting table and pnpm npm-trust audit (needs npm login).preflight errors: fix repository or reserve the package as described above.422 mentioning provenance: repository does not match equinor/fusion-framework.verify before
concluding that something is missing.Trust is bound to the file name release.yml and the environment npm. Renaming either, or
publishing from another workflow (including a workflow_call caller), breaks publishing for every
package until trust is rebuilt and validated within 2 days. Flag such a change as high-risk
and point to the ADR before making it.
preflight result, and an explicit
maintainer action (pnpm npm-trust add <name>) with its timing.Never:
_authToken, or NODE_AUTH_TOKEN to workflows, actions, or .npmrc;pnpm npm-trust add, bootstrap, npm publish, npm trust revoke, or dispatch a
snapshot without explicit user confirmation. These change the public registry and cannot be
undone;release.yml as an incidental refactor.Always:
pnpm npm-trust preflight and verify (no login needed) before claiming a package is
ready or published;equinor/fusion-framework
ed87615
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.