publish.yml — 5 fails
.github/workflowsname: publish
on: [push]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
- run: npm publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Paste your package.json
and publish.yml — get a 14-row OIDC pass/fail report before you tag v1.0.0.
No signup · Runs in your browser · Free
14 checks
pass/fail per release
0 secrets
stored in your repo
5 min
OIDC tokens live, not years
$0 free
no signup, no login
§ ARTIFACT · preview
The full preflight runs 14 static checks on your package.json and GitHub Actions workflow.
Workflow grants id-token: write
Without this, GitHub never mints an OIDC token and npm silently falls back to NPM_TOKEN.
Workflow uses actions/setup-node@v4
v3 and earlier don’t wire registry-url for OIDC. Required for trusted publishing.
npm publish uses --provenance
Without it, the Sigstore attestation is skipped and the package shows no provenance badge.
Trusted publisher configured on npmjs.com
Package Settings → Trusted Publishers → GitHub Actions, repo + workflow file matched.
package.json#repository.url matches GitHub repo
Trusted publishing rejects the job when the URL points at a fork or stale mirror.
§ 9 MORE CHECKS
Paste your real files, run the full 14-row pass/fail report.
§ PAIN MIRROR
Four failure shapes recur across npm/cli issues and OIDC docs. The preflight looks for each one.
OIDC-401 id-token: write is set, npm still asks for NPM_TOKEN.
Usually actions/setup-node@v3, missing registry-url, or NPM_TOKEN still in env.
PROV-E_NOATTEST npm publish --provenance fails with E_NOATTEST.
Sigstore Fulcio cert rotation or action pinning drift.
REPO-MISMATCH Trusted publisher rejects the job because the repo URL is stale.
package.json#repository.url points at a fork.
PUSH-OOPS A merge to main accidentally publishes v1.0.1.
Trigger is on: push instead of on: release. No undo beyond 72h unpublish.
publish.yml — 5 fails
.github/workflowsname: publish
on: [push]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
- run: npm publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} preflight
acme/super-lib
§ HOW IT WORKS
Static page. Every check is regex or a JSON lookup over text you paste — no server, no telemetry.
PASTE Drop two files.
Your package.json and your publish.yml. Nothing leaves the tab.
CHECK 14 static checks.
JSON parsing and regex over the known failure shapes from npm trusted-publishing docs.
FIX Pass / fail with one-line fixes.
Each fail tells you the exact YAML or JSON change. Click through for the GitHub Issue that taught us the case.
§ BEFORE / AFTER
Same publish.yml, two states. The preflight tells you which one before you tag.
BEFORE — 5 fails
publish.ymlname: publish
on: [push]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
- run: npm publish
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} AFTER — 14 / 14 pass
publish.ymlname: publish
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: "https://registry.npmjs.org"
- run: npm ci
- run: npm publish --provenance § PROOF
Sourced from npm and GitHub OIDC docs, the CLI changelog, and real maintainer bug threads.
npm Docs — Trusted Publishers
The OIDC trusted-publisher feature, supported registries, and the requirement that the workflow repo match the package repository.
VISIT SOURCE →GitHub Docs — OIDC for npm
How id-token: write maps to the npm audience, and the contents: read permission requirement.
VISIT SOURCE →npm CLI changelog (v9.5+)
When --provenance shipped and the OIDC publish path landed; useful for confirming required CLI version.
VISIT SOURCE →Sigstore — Provenance for JavaScript
How npm provenance attestations are signed via Fulcio and recorded in Rekor.
VISIT SOURCE →GitHub Issues — npm/cli
Real failure threads filed by maintainers. Source of the recurring failure shapes the artifact looks for.
VISIT SOURCE →r/javascript — "trusted publishing" search
Maintainer-written postmortems and migration notes that shaped the FAQ.
VISIT SOURCE →The full claim ledger lives in the project repo and is reviewed when the npm CLI or GitHub Actions docs change.
§ FIELD NOTES
§ workflow
Migrating from NPM_TOKEN to Trusted Publishing — the 5-Step Migration in a Weekend
A weekend-sized migration plan from long-lived NPM_TOKEN secrets to OIDC trusted publishing on npm. Five steps, each reversible until the last, with the rollback path if a publish fails.
May 19, 2026
§ checklist
Pre-Publish Checklist for a New npm Package in 2026 (Security, Provenance, README)
A grounded pre-publish checklist for a new npm package in 2026: trusted publishing wired, provenance enabled, scoped access, files allowlist, README and license correct, and the search-and-tags that get you found.
May 18, 2026
§ concept
Provenance Attestation, Sigstore, and SLSA Level 3: What They Mean for Indie Package Authors
What provenance attestation, Sigstore, and SLSA Level 3 actually buy you as a solo or small-team npm package author. Plain-language definitions, the verification chain, and what is still your responsibility.
May 17, 2026
§ comparison
Trusted Publishing on JSR vs npm: a 2026 Comparison for Library Authors
Where JSR and npm trusted publishing agree, where they diverge, and how to publish the same TypeScript library to both with one workflow and two trusted publishers.
May 16, 2026
§ FAQ
Library maintainers and DevOps engineers preparing their first npm publish under OIDC trusted publishing — or migrating from a long-lived NPM_TOKEN in GitHub Actions to OIDC.
Yes. The 14-row check runs entirely in your browser using the JSON parser and regex over what you paste. Nothing leaves the page.
It replaces the ad-hoc "skim three GitHub Issues and hope I caught it" flow before a v1.0.0 release. It does not replace the actual npm trusted-publisher setup, which still requires a manual click on npmjs.com.
The hosted audit (paste a repo URL, get a guided report and a fix PR) is in build. The preflight checklist above is the standalone artifact you can use today.
The checklist on this page is free and stays free. Paid options will be for teams that want a CI-integrated audit and a SLSA-Level-3 evidence ledger.
No. There is no backend on this page. Open DevTools, check the Network tab, paste your files, and run the check — there are no outbound requests for the artifact.
The checklist flags pnpm publish as OK and yarn classic publish as a fail (yarn classic does not speak OIDC). Bun publish landed in mid-2026 and is not yet wired to npm trusted publishing.
Read the blog. Every post links back to the primary docs and the GitHub Issue thread that taught us the failure case.
Fourteen checks, in your browser, free. Read the field notes for the GitHub Issues each one came from.
No signup · Runs locally · Free