gstack/installer/PUBLISHING.md

58 lines
2.1 KiB
Markdown

# Publishing `@garrytan/gstack`
This installer is designed to be published to the `@garrytan` npm scope. That scope is owned by [@garrytan](https://github.com/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
```bash
cd installer
npm install
npm run build
npm publish --access public
```
Users can then run:
```bash
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`