ci(smcp): add tag-driven npm release pipeline#22
Merged
Conversation
Replace the ad-hoc cli-publish.yml with a tag-driven release workflow
that runs lint/build/test, verifies the tag matches
packages/smcp/package.json version, verifies tarball contents
(required + forbidden file checks), derives the npm dist-tag from
version (alpha/beta/rc/next/latest), publishes with --access public
--provenance, and creates a GitHub release.
Adds a CI workflow (Node 18.17/20/22 matrix + pack-check job), a
tsup build that bundles bin/smcp.js to dist/{smcp.cjs,smcp.mjs}
with the shebang preserved, tsc --noEmit lint, packages/smcp
CHANGELOG and LICENSE, dependabot for npm and github-actions, and
PR/issue templates.
For end users of @datacline/smcp, the runtime bin location moves
from bin/smcp.js to dist/smcp.cjs. The smcp source stays plain JS,
so no .d.ts is emitted.
4f632f4 to
c2566e0
Compare
timasin
approved these changes
May 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a tag-driven npm release pipeline for
@datacline/smcpwith provenance and automatic GitHub release creation, plus a CI workflow, build/lint scaffolding, and supporting repo governance files.Changes
.github/workflows/release.yml— fires onv*tag pushes. Runslint/build/test, verifies the tag matchespackages/smcp/package.jsonversion, verifies tarball contents (required + forbidden file checks), derives the npm dist-tag from the version (alpha/beta/rc/next/latest), publishes with--access public --provenance, and creates a GitHub release with generated notes..github/workflows/ci.yml— runs onpush:mainandpull_request.testjob uses a Node 18.17/20/22 matrix (lint+build+test);pack-checkjob verifies tarball contents on Node 20..github/workflows/cli-publish.yml— removed (superseded byrelease.yml).packages/smcp/:tsup.config.ts— bundlesbin/smcp.js→dist/smcp.{cjs,mjs}for Node 18+; shebang preserved from source.tsconfig.json—allowJs,noEmit, used bytsc --noEmitlint.CHANGELOG.md,LICENSE— included in the published tarball.package.json—bin/main/modulenow point atdist/; addsbuild(tsup) andlint(tsc --noEmit) scripts; devDepstsup,typescript,@types/node;files: [dist, README.md, CHANGELOG.md, LICENSE]..github/dependabot.yml— weekly updates fornpm(grouped dev deps) andgithub-actions..github/PULL_REQUEST_TEMPLATE.md— PR template..github/ISSUE_TEMPLATE/{bug_report,feature_request}.md— issue templates for the CLI.package-lock.json— committed so CInpm ciworks deterministically.Test plan
npm run lint --workspace @datacline/smcpclean (tsc --noEmit)npm run build --workspace @datacline/smcpclean (ESM + CJS indist/, both with#!/usr/bin/env nodepreserved)npm test --workspace @datacline/smcppassesnode packages/smcp/dist/smcp.cjs --helpandnode packages/smcp/dist/smcp.mjs --helpboth succeednpm pack --dry-run --workspace @datacline/smcpships exactly:CHANGELOG.md,LICENSE,README.md,dist/smcp.{cjs,mjs}{,.map},package.json. Nobin/,src/,test/,tsconfig.json, ortsup.config.tsleak into the tarball.0.1.0→latest,*-alpha.*→alpha,*-beta.*→beta,*-rc.*→rc,*-next.*→next)npm access list packages @dataclineconfirms publish rights on the scopeBreaking changes?
For end users of
@datacline/smcp: the runtimebinlocation moves frombin/smcp.jstodist/smcp.cjs. Anyone invokingsmcp ...afternpm i -g @datacline/smcpis unaffected (npm resolves via thebinfield). No public API surface to break.Gateway / policy-engine changes?
None.
After merge
NPM_TOKENis set on this repo (Settings → Secrets and variables → Actions → New repository secret).git tag v0.1.0 && git push origin v0.1.0to publish the first version.