releaselisted
Install: claude install-skill simantaturja/cccost-dashboard
# Cutting a release
Two artifacts ship from this repo and their versions move in lockstep:
| Artifact | Version file | How it publishes |
|---|---|---|
| `cccost-dashboard` (npm) | `package.json` | **Automatic** — `.github/workflows/publish.yml` fires on any push to `master` that touches `package.json`, runs `npm test`, and publishes if the version differs from the registry |
| `turja.cccost-dashboard-vscode` (VS Code Marketplace) | `extension/package.json` + `extension/package-lock.json` | **Manual** — `vsce publish` from `extension/` |
Because npm publishes itself on push, **the push is the point of no return.** Everything below the push line is recoverable; the push is not. Get the version, CHANGELOG, and both `package.json` files right before pushing.
## Checklist
Create a todo per item. Do not skip items — v2.2.0 shipped with no git tag and no GitHub release because these steps were done ad hoc.
### 1. Preflight
```bash
git status --short # must be clean
git rev-parse --abbrev-ref HEAD # must be master
git pull --ff-only
npm --prefix web ci && npm run verify
```
Working tree dirty or tests red → stop and report. Never release over uncommitted changes.
### 2. Pick the version
```bash
git log $(git describe --tags --abbrev=0)..HEAD --oneline
```
SemVer against that log: breaking change to CLI/config/data shape → major; new user-visible capability → minor; fix/security/perf only → patch. State the version and the one-line reason before bumping;