← ClaudeAtlas

release-notifylisted

Use when cutting a Termpolis release (bumping the version / pushing a vX.Y.Z tag) or when verifying a release's CI. Covers the direct-to-main + tag flow, watching BOTH the Tests and Release pipelines to fully green via `--json conclusion`, shipping a clean patch release when a pipeline fails, and the automated release email to engelhart.david.john@gmail.com.
codedev-david/termpolis · ★ 9 · AI & Automation · score 69
Install: claude install-skill codedev-david/termpolis
# Releasing Termpolis (and getting notified) Termpolis releases go **directly to `main`** (no branches/PRs). A release is: **bump `package.json` version → commit + push `main` → push a `vX.Y.Z` tag** (the tag triggers `.github/workflows/release.yml`). The website repo (`termpolis-web`) auto-deploys on push to its own `main`. An email to **engelhart.david.john@gmail.com** is sent **automatically** by `.github/workflows/notify-release-email.yml` when the Release workflow finishes — ✅ on success (version, asset count, release URL, and both pipelines' conclusions) and ❌ on failure. You do not send this yourself; you verify it fired. ## The rule: every pipeline must be green Two workflows run for a release, and **both must pass**: | Workflow | Trigger | What it gates | |---|---|---| | **Tests** (`test.yml`) | push to `main` | lint (`npm run lint`), typecheck/build, unit + e2e-smoke | | **Release** (`release.yml`) | `vX.Y.Z` tag | unit tests on win+mac, update-metadata validation, build+sign+publish on 3 OSes, homebrew bump | A published release with a red pipeline is **not** an acceptable end state. ## Procedure 1. **Verify locally before tagging** — this is where the last few releases broke: - `npm run lint` — **gate on the full script**, not `npx eslint <file>`. `--report-unused-disable-directives` turns an unused `// eslint-disable*` into a hard **error**, and `no-console` is globally off (`.eslintrc.cjs`), so a stray `eslint-disable-next-line no-console` fails CI ev