npm release readiness
TypeMCP publishes one public npm organization package: @theorvane/type-mcp. Its Fetch-compatible HTTP entry point is the @theorvane/type-mcp/http subpath. Repository visibility and npm package visibility remain separate controls.
Trusted publication from main
-
In npm package settings, configure a Trusted Publisher for package
@theorvane/type-mcpwith GitHub repositoryTheorvane/type-mcp, workflow filename.github/workflows/publish.yml, and environmentnpm. -
Do not create an npm token or repository npm secret. The workflow receives npm identity through GitHub Actions OIDC and publishes with provenance.
-
Make a reviewed version change on
dev; npm versions are immutable and must not already exist in the registry. -
Promote that reviewed
devhead tomainthrough the protected release PR. Thepublish.ymlworkflow verifies the package, publishes once, then creates annotatedv<version>tag and a GitHub Release from the exactmainSHA. -
Run the repository checks and inspect the generated tarball:
npm ci npm run lint npm run typecheck npm test npm run verify:package npm run verify:publish
Safety controls
- Publication runs only on
mainand only after an approved release PR is merged. - The workflow reconciles a prior partial success only when the published npm artifact, annotated tag, and GitHub Release all resolve to the same
mainSHA. It publishes only missing steps; a mismatched artifact is rejected. npm publish --provenance --access publiccompletes before the tag and GitHub Release are created. A failed publish therefore cannot leave a misleading release tag.- The release environment is named
npm; maintainers can add GitHub Environment approvals there without changing the workflow.
Safety controls in this repository
npm run verify:publishbuilds the package and usesnpm pack --dry-run --ignore-scriptsto validate metadata and root/HTTP subpath artifacts.- Root
prepublishOnlyruns the same verification beforenpm publishis allowed to continue. - The package has no local
file:dependencies, so the published tarball is independently installable.