gstack/installer/PUBLISHING.md

2.1 KiB

Publishing @garrytan/gstack

This installer is designed to be published to the @garrytan npm scope. That scope is owned by @garrytan, so merging this PR by itself does not put it on npm — Garry (or a maintainer with scope access) needs to run npm publish.

Steps for Garry / scope owner

cd installer
npm install
npm run build
npm publish --access public

Users can then run:

npx @garrytan/gstack

Testing before publish (non-scope-owners)

If you want to verify npx @garrytan/gstack end-to-end without waiting for a publish, you can temporarily publish under your own npm scope:

  1. Change "name" in installer/package.json to your scope — e.g. "@your-handle/gstack".
  2. npm login
  3. npm publish --access public
  4. npx @your-handle/gstack

Revert the name field before merging the PR. Do not commit a scope change — the upstream PR should land with @garrytan/gstack.

Version bumps

The installer has its own version independent of the main gstack VERSION file. Bump installer/package.json when:

  • New command or flag added
  • Existing command behavior changes
  • A bug fix ships

Follow semver: 0.x.y while the API is still settling, 1.0.0 when the command surface is stable.

What the installer does at runtime

The installer is a thin wrapper — it clones https://github.com/garrytan/gstack.git into ~/.claude/skills/gstack and shells out to that repo's ./setup script. So publishing a new installer version does not ship a new gstack — users always get the latest main branch of the main repo at install time.

This means the installer rarely needs to change. The main reasons would be:

  • Host registry expands (new agent supported by gstack)
  • ./setup learns a new flag the installer wants to surface
  • Bug in the installer itself

CI (future)

Not wired yet. A reasonable path:

  • installer/ gets its own workflow at .github/workflows/installer-ci.yml
  • Runs npm install, npm run build, npm pack on PRs
  • On release tag installer-v*, runs npm publish