Skip to main content

release

Step-by-step release procedure: bump version.py and setup.py, update the CLI version fixture, regenerate example/robot_dashboard.html and example/robot_results.db, write the CHANGELOG entry, and produce Slack release notes. Use when the user says "do the release actions" or asks to prepare/cut a release.

Source facts

Repository
MarketSquare/robotframework-dashboard
Last source activity
October 5, 2026 at 22:03
Detected SKILL.md language
English
Stars
89
Forks
21

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
release
description
Step-by-step release procedure: bump version.py and setup.py, update the CLI version fixture, regenerate example/robot_dashboard.html and example/robot_results.db, write the CHANGELOG entry, and produce Slack release notes. Use when the user says "do the release actions" or asks to prepare/cut a release.
disable-model-invocation
true
# Release Actions Follow these steps in order when doing a release. Ask the user for the **new version number** and **changelog content** (list of PRs/changes from GitHub) before starting if they haven't been provided. --- ## Step 0 — Collect inputs Ask the user (if not already provided): 1. **New version number** (e.g. `2.1.0`) 2. **Previous version number** (e.g. `2.0.0`) — used for the GitHub compare URL 3. **Release date** in `YYYY-MM-DD` format (default: today) 4. **Raw changelog** — the GitHub "What's Changed" PR list for this release --- ## Step 1 — Update version numbers Files to update: | File | What to change | |---|---| | `robotframework_dashboard/version.py` | `__version__ = "Robotdashboard X.Y.Z"` | | `setup.py` | `version="X.Y.Z"` | Both must use the exact same new version number. --- ## Step 2 — Update the CLI test expected output File: `tests/robot/resources/__snapshots__/00_cli/version.txt` The last line of this file is the version string that the robot test compares against the CLI `--version` output (a `SnapshotLibrary` snapshot). Update it to: ``` Robotdashboard X.Y.Z ``` Do not change the ASCII art banner lines above it. --- ## Step 3 — Regenerate the example dashboard and database The example dashboard and database live in `example/robot_dashboard.html` and `example/robot_results.db`. They are what every *released* docs version serves; the `/dev/` docs rebuild the example from `main` on every deploy (`scripts/docs/build-versioned-docs.mjs`), so this step is only about the release itself. Run from anywhere (any OS): ```bash python scripts/example.py # or scripts\example.bat from cmd.exe ``` `scripts/example.py` deletes `robot_results.db` / `robot_dashboard.html` in the repo root, imports the fixtures from `tests/robot/resources/outputs/` with tags, versions, timezones, custom filters and the message config, then copies the results to `example/`. `scripts/example.bat` is a one-line wrapper around it (path-independent, forwards arguments). The fixtures themselves are generated by `tests/robot/resources/generator/generate.py` (see its README); they only need regenerating when the generator changes, not per release. --- ## Step 4 — Update CHANGELOG.md Insert a new section **at the top** of the changelog (after the header block, before the previous latest version). Match the existing style exactly. **Template:** ```markdown ## [X.Y.Z](https://github.com/MarketSquare/robotframework-dashboard/releases/tag/vX.Y.Z) - YYYY-MM-DD ### Added - <feature description> ### Fixed - <fix description> ### Changed - <change description> --- ``` Rules: - Only include `### Added`, `### Fixed`, `### Changed` sections that are non-empty. - Write human-readable bullet points — do not paste the raw PR titles verbatim. Rewrite them as clear, user-facing descriptions. - Omit contributor attribution and PR URLs (those belong on GitHub Releases, not the changelog). - Use backticks for CLI flags, file names, and code references. --- ## Step 5 — Generate Slack release notes Produce a ready-to-paste Slack message. Keep it **short and scannable**: the notes announce the release, the changelog and docs hold the detail. Rules: - **One-line summary** under the title, naming the theme of the release (e.g. "A small performance release: …"). - **Section headers without emoji**: `Added`, `Fixed`, `Changed`, `Resources`, in that order, only the non-empty ones. No `---` separators. - **One bullet per change**: `*<Short name>* — <one or two sentences on what changed and why it matters to the user>`. No code examples, no per-bullet docs links, no PR numbers. - **No timings in the bullets.** When a release is about performance, put the headline gains in the summary line or a single closing bullet as percentages or "N× faster" measured on a large dashboard, and state the dataset size once (e.g. "on a dashboard with 504 runs and 208k test results"). Never list raw millisecond numbers. - **Fixed bullets** are plain sentences describing the user-visible symptom that is gone. - **Thank external contributors inline**: scan the PR authors and co-authors for anyone who is *not* `@timdegroot1996` and end the bullet their work landed in with `Thanks @name for …!` (no emoji). - **Resources** always has the same four lines. Format: ``` :robot: *Robot Framework Dashboard vX.Y.Z is out!* :tada: <one-line summary of the release theme> *Added* • *<Feature name>* — <one or two sentences>. *Changed* • *<Change name>* — <one or two sentences>. Thanks @contributor for <what they did>! *Fixed* • <what the user no longer runs into>. *Resources* Full changelog: https://github.com/MarketSquare/robotframework-dashboard/compare/vPREVIOUS...vX.Y.Z PyPI: https://pypi.org/project/robotframework-dashboard/X.Y.Z/ Docs: https://marketsquare.github.io/robotframework-dashboard/ Example dashboard: https://marketsquare.github.io/robotframework-dashboard/example/robot_dashboard.html ``` --- ## Step 6 — Update CLAUDE.md (optional) If a **new skill** was created under `.claude/skills/` as part of this release, add it to the skills table in `CLAUDE.md`. --- ## Step 7 — After the release PR is merged: tag, GitHub Release, docs The user merges the release PR (squash, `Release X.Y.Z (#PR)`), uploads to PyPI and posts the Slack notes. The rest, in this order: 1. **Tag the merge commit** — never before the merge, or the tag points at a commit that is not on `main`: ```bash git checkout main && git pull git tag vX.Y.Z && git push origin vX.Y.Z ``` 2. **GitHub Release** — same style as the earlier releases (auto-generated "What's Changed"): ```bash gh release create vX.Y.Z --title "Robotdashboard vX.Y.Z" --generate-notes --notes-start-tag vPREVIOUS --latest ``` Check `gh release list` first: every tag should have a release, so create any missing earlier one (oldest first) before this one so `--latest` ends up on the new version. 3. **Re-run the docs deploy.** `.github/workflows/deploy.yml` runs only on pushes to `main` (plus `workflow_dispatch`), **not** on tags; it builds every release tag it finds (`scripts/docs/build-versioned-docs.mjs`). The run started by the merge usually builds before the tag exists, so trigger it again after the tag push: ```bash gh workflow run deploy.yml ``` Once that run is green, check: - `https://marketsquare.github.io/robotframework-dashboard/` shows `vX.Y.Z` in the nav bar (the root is always the latest tag) - `https://marketsquare.github.io/robotframework-dashboard/vX.Y.Z/` exists - `https://marketsquare.github.io/robotframework-dashboard/versions.json` lists the new version with `"latest": true` --- ## Quick checklist - [ ] `robotframework_dashboard/version.py` — version updated - [ ] `setup.py` — version updated - [ ] `tests/robot/resources/__snapshots__/00_cli/version.txt` — version string updated - [ ] `example/robot_dashboard.html` — regenerated - [ ] `example/robot_results.db` — regenerated - [ ] `CHANGELOG.md` — new section added at the top - [ ] Slack release notes produced (short format, no timings, contributors thanked inline) - [ ] After the merge: `vX.Y.Z` tag pushed on the merge commit, GitHub Release created - [ ] `gh workflow run deploy.yml` after the tag push; `/`, `/vX.Y.Z/` and `versions.json` on the docs site show the new version
View on GitHub