# Tty Assert Release

> Prepares an npm release for tty-assert: edits CHANGELOG.md and package.json, verifies lint/test/build, commits, tags vX.Y.Z, and pushes branch plus tag to trigger GitHub Actions Release. Use when the user asks to release, publish to npm, ship a version, cut a tag, or bump the package version for tty-assert.

- Skill: `terryyin/tty-assert-release` (Agent Skill)
- Install (CLI): `npx skillmds@latest add terryyin/tty-assert-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/terryyin/tty-assert-release/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: terryyin (https://skillmd.com/u/terryyin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/terryyin/tty-assert-release

---


# tty-assert: cut an npm release

Human-oriented detail: [docs/release.md](../../../docs/release.md).

## Preconditions

- Default release branch is **`main`** unless the user specifies another branch.
- Working tree should be clean before committing; resolve or stash unrelated changes first.
- If the target version is unclear, **ask** for `X.Y.Z` (semver) before editing files.

## Steps (execute in order)

1. **CHANGELOG** — In `CHANGELOG.md`, insert a new section **immediately after** `# Changelog`:

   ```markdown
   ## [X.Y.Z] - YYYY-MM-DD

   - Concise bullets: what changed for users or integrators.
   ```

   Use **today’s date** in ISO form (`YYYY-MM-DD`). The heading must be exactly `## [X.Y.Z]` (no `v`); this string is what `.github/workflows/release.yml` greps for.

2. **Version** — Set `"version": "X.Y.Z"` in `package.json` to match.

3. **Verify** — From repo root, run (use **`nix develop -c`** before these if the user’s environment requires it):

   ```bash
   pnpm lint && pnpm test && pnpm build
   ```

   Fix any failures before committing.

4. **Commit** — Stage at least `CHANGELOG.md` and `package.json`:

   ```bash
   git add CHANGELOG.md package.json
   git commit -m "chore: release vX.Y.Z"
   ```

5. **Tag** — Create an annotated or lightweight tag **`vX.Y.Z`** on that commit:

   ```bash
   git tag vX.Y.Z
   ```

6. **Push** — Push the **branch** first, then the **tag** (replace `main` if needed):

   ```bash
   git push origin main
   git push origin vX.Y.Z
   ```

7. **Handoff** — Tell the user to watch **GitHub → Actions → Release** for the run triggered by `vX.Y.Z`. Remind them that **Trusted Publishing** must already link this repo to npm (see `docs/release.md`).

## Do not

- Push a tag without the matching `## [X.Y.Z]` block in `CHANGELOG.md` (CI will fail).
- Skip `pnpm lint`, `pnpm test`, or `pnpm build` before the release commit unless the user explicitly accepts that risk.

