Skip to content

ci: publish on a version tag, with provenance - #1

Merged
catomean merged 1 commit into
mainfrom
ci/publish-workflow
Aug 16, 2026
Merged

ci: publish on a version tag, with provenance#1
catomean merged 1 commit into
mainfrom
ci/publish-workflow

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

threadkit has a CI workflow but no way to ship. The package is publish-ready — name unclaimed on npm, files: ["dist"], README and LICENSE both in the tarball (27 files), builds clean — so the only thing between it and a release was a manual npm publish from someone's laptop.

This is the same workflow ai-forms already carries, so the two libraries release identically instead of each growing its own procedure:

  • triggered by a v* tag, so every published artifact traces to a commit
  • id-token: write for npm provenance — the registry can prove the tarball was built by this workflow from this commit, not uploaded from a laptop
  • runs npm run verify first: never publish something that would not have passed CI
  • refuses to publish when the tag and package.json version disagree, instead of silently shipping the wrong number

Verified locally with the workflow's exact steps — npm ci --ignore-scripts then npm run verify — 31 tests pass.

Needs the NPM_TOKEN repo secret once; after that a release is npm version plus a tag push.

🤖 Generated with Claude Code

threadkit has a CI workflow but no way to ship. The package is publish-ready —
name unclaimed on npm, `files: ["dist"]`, README and LICENSE both in the
tarball, 27 files, builds clean — so the only thing standing between it and a
release was a manual `npm publish` from someone's laptop.

This is the same workflow ai-forms already carries, so the two libraries
release identically rather than each growing its own procedure:

- triggered by a `v*` tag, so every published artifact traces to a commit
- `id-token: write` for npm provenance — the registry can prove the tarball
  was built by this workflow from this commit, not uploaded from a laptop
- runs `npm run verify` first: never publish something that would not pass CI
- refuses to publish when the tag and package.json version disagree, instead
  of silently shipping the wrong number

Verified locally with the workflow's exact steps: `npm ci --ignore-scripts`
then `npm run verify` — 31 tests pass.

Needs the NPM_TOKEN repo secret once; after that a release is `npm version`
plus a tag push.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@catomean
catomean merged commit c62d5bf into main Aug 16, 2026
1 check passed
@catomean
catomean deleted the ci/publish-workflow branch August 16, 2026 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant