Cut Release
jfernandez/bpftop
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
Publish a MQTT Viewer release end to end. An agent skill from mqtt-viewer/mqtt-viewer.
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mqtt-viewer/mqtt-viewer release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mqtt-viewer/mqtt-viewer release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mqtt-viewer/mqtt-viewer release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release .cursor/skills/release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mqtt-viewer/mqtt-viewer.git --path .claude/skills/release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mqtt-viewer/mqtt-viewer release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release .gemini/skills/release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mqtt-viewer/mqtt-viewer releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release .github/skills/release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mqtt-viewer/mqtt-viewer --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mqtt-viewer/mqtt-viewer release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mqtt-viewer/mqtt-viewer.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release .opencode/skills/release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/mqtt-viewer/mqtt-viewer/tree/develop/.claude/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
releasePublish a MQTT Viewer release end to end. An agent skill from mqtt-viewer/mqtt-viewer.
Release is an agent skill from mqtt-viewer/mqtt-viewer. Publish a MQTT Viewer release end to end. Use when the user says "release", "cut a release", "publish vX.Y.Z", "ship it", or "do a release". First drafts the changelog for user approval, then promotes it, creates the GitHub release that triggers the mac/windows/linux build+sign+portal workflows, watches them, hands off the final go-live step, and triggers the website rebuild.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Changelog and release notes. It works with Linux and GitHub. The repository describes itself as: The modern and open-source MQTT debugging and visualisation tool for Windows, Mac and Linux. The licence is GPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5a43d7c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
justgitghpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
cloud.mqttviewer.appmqttviewer.appFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release loads about 1.8k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 955 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mqtt-viewer/mqtt-viewer at commit 5a43d7c, republished under its GPL-3.0 licence (© mqtt-viewer). 955 words, ~1,789 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).Drives the runbook in docs/RELEASING.md. One release is one annotated GitHub
release on main; publishing it fires three workflows (mac / windows / linux)
that build, sign, upload assets, and register the version with the portal.
Nothing reaches users until the released toggle is flipped in the portal.
Creating a GitHub release is outward-facing and hard to undo. Confirm the version with the user and get an explicit go-ahead before step 5.
VERSION: the tag, vX.Y.Z (or vX.Y.Z-beta1 for a dry run). If the user
didn't give one, ask. Decide the bump (patch vs minor vs major) now, from what
actually landed since the last release. Do not pre-empt it earlier.PREV: the previous release tag. It is only the compare base for the "Full
changelog" link at the bottom of the notes; the notes themselves come from the
changelog entry. Get it with gh release list --limit 5 or
git tag --sort=-v:refname | head.Before any release mechanics, show the user what the release will say. This is the gate that lets them see, and shape, what's going into the upcoming release.
PREV: git log PREV..origin/develop --oneline
plus the merged PRs (gh pr list --state merged --base develop). Keep only
user-visible changes, per the changelog skill's rules
(.claude/skills/changelog/SKILL.md).frontend/src/changelog.ts if one
exists, folding in anything that landed since it was last updated. If there's
no staging entry, draft one from scratch using the changelog skill.
Follow docs/WRITING_STYLE.md.main, until the draft is approved.frontend/src/changelog.ts (still released: false); step 3 promotes it.git fetch --all --tags.develop is the integration branch and is green (latest CI passing).main can fast-forward from origin/develop
(git merge-base --is-ancestor origin/main origin/develop). If it can't, stop
and tell the user: main has diverged and just release will fail its
--ff-only merge.HEAD on the commit that is about to become main
(just release aborts on either count). gh auth status OK.Two things depend on this entry. The shipped binary carries its own changelog
and matches it to its version at runtime, so it becomes "What's new" after the
update. And just release renders the same entry into the GitHub release body,
which the workflows post to the portal and the update dialog shows under
"What's changed" before the update.
So the entry must be promoted and pushed before step 5. If it isn't,
just release fails at the first command with "No released changelog entry for
X.Y.Z" and nothing is tagged. So:
frontend/src/changelog.ts, take the approved staging entry from step 1
and promote it: set released: true, version to the bare semver
("X.Y.Z", no v, must match VERSION), and date to "Month YYYY".headline if it still has the placeholder.Then validate and land it on develop:
cd frontend && pnpm test:run changelog && pnpm check
git add -A && git commit -m "chore(changelog): notes for VERSION"
git push origin developThe commit must be on develop and pushed before step 5, because just release
fast-forwards main from origin/develop.
Then read back exactly what the release will say:
just release-notes VERSION PREVjust release vX.Y.Z-beta1 PREV --prerelease
just release-status # watch the three workflowsFix any CI issues and use just release-retry (delete + recreate the tag, so
workflows run from the fixed commit) rather than a plain re-run.
A -beta1 tag uses the changelog entry for the version it rehearses, so the dry
run shows the real notes.
just release VERSION PREVThis runs scripts/release.sh, which checks the working tree is clean and that
HEAD is origin/develop (the notes have to render from the tree that becomes
main), renders the notes from the changelog entry, merges develop into
main, pushes, and runs gh release create --notes-file with them. Any of
those steps failing stops the release before the tag exists. PREV is only the
compare base for the "Full changelog" link at the bottom. Then watch:
just release-status
gh run list --limit 6Expected assets (see docs/RELEASING.md for the full list): darwin arm64/amd64
zips, windows arm64/amd64 zips + installer.exe, linux zip/AppImage/deb/rpm,
each with a .sha256.
The workflows POST each artifact to the portal, creating one release_v3 record
with released=false. It reaches users only when someone flips released=true.
release_v3 record, confirm all platform artifacts merged into
it, and flip released when happy. The in-app updater
(POST /api/cv1/updates/v3/check) only serves released=true.The download pages on mqttviewer.app read the latest complete GitHub release at
build time, but the site only rebuilds on a push. Once the user has flipped
released, fire the site's rebuild workflow so the new version shows up:
gh api repos/mqtt-viewer/mqttviewer.app/dispatches \
-f event_type=app-release -f "client_payload[version]=VERSION"It commits a marker file to the site's main, which Cloudflare builds and
deploys. Check https://mqttviewer.app/download shows VERSION a few minutes
later. Run it after step 6, not before: the site would otherwise advertise
a version the in-app updater does not serve yet.
docs/RELEASING.md for where each breaks.© mqtt-viewer, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/release of mqtt-viewer/mqtt-viewer.
Open the folder on GitHubat commit 5a43d7c
Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release this skillmqtt-viewer/mqtt-viewer | 133 | — | ~1.8k | Automated safety check: Pass | GPL-3.0 | |
| Cut Releasejfernandez/bpftop | 2.7k | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Prepare Releaseneetly/figma-agent-linux | 395 | — | ~833 | Automated safety check: Pass | MIT | |
| Release NotesMikalaiBarysevich/CleverSwitch | 116 | — | ~975 | Automated safety check: Pass | GPL-3.0 | |
| Kernel Watch Triageantoinecellerier/speaker-tuning-to-easyeffects | 142 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Releasing MarchatCod-e-Codes/marchat | 137 | — | ~801 | Automated safety check: Pass | MIT |
jfernandez/bpftop
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
neetly/figma-agent-linux
Prepare a new figma-agent-linux release by updating the package version, changelog, and release links, then validating the changes.
MikalaiBarysevich/CleverSwitch
Generate GitHub release notes for unreleased CleverSwitch tags in the established repo format.
antoinecellerier/speaker-tuning-to-easyeffects
Guides triaging a kernel-sound-watch hit comment on the "Kernel sound-tree watch" issue (40) — the weekly workflow's per-tag report of .github/kernel-watchlist.txt grep hits against a new…
Cod-e-Codes/marchat
Prepares marchat releases: version bumps, CHANGELOG, packaging checksums, GitHub Actions release workflow, and Docker tags.
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
mqtt-viewer/mqtt-viewer
Add or update the in-app "What's new" changelog for MQTT Viewer.
mqtt-viewer/mqtt-viewer
Diff the Figma component library against the MQTT Viewer frontend and produce a handover doc listing exactly what code needs to change.
mqtt-viewer/mqtt-viewer
Verify MQTT Viewer stays smooth under heavy broker load using the local flood harness.
mqtt-viewer/mqtt-viewer
Add a new component to the design-system library, or formalize an existing one — scaffold its colocated .spec.json, classify its tier, author a Storybook story, and link it to Figma.
mqtt-viewer/mqtt-viewer
Implement a Figma→code handover doc — apply the listed changes to Svelte components, update their colocated .spec.json and stories, and get pnpm ds:validate green.
Categories
Publish a MQTT Viewer release end to end. An agent skill from mqtt-viewer/mqtt-viewer. Release is an agent skill from mqtt-viewer/mqtt-viewer. Publish a MQTT Viewer release end to end.
Release fits situations like: the user says release; the mac/windows/linux build+sign+portal workflows; hands off the final go-live step; triggers the website rebuild.
Run `npx skills add mqtt-viewer/mqtt-viewer --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in mqtt-viewer/mqtt-viewer) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mqtt-viewer/mqtt-viewer --skill release -a codex`. Or copy the skill folder (.claude/skills/release in mqtt-viewer/mqtt-viewer) into .agents/skills/release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mqtt-viewer/mqtt-viewer --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (just, git, gh and pnpm).
SKILL.md names 2 domains. As links in the text: cloud.mqttviewer.app and mqttviewer.app. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Release is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release: Cut Release (jfernandez/bpftop, 2.7k stars), Prepare Release (neetly/figma-agent-linux, 395 stars), Release Notes (MikalaiBarysevich/CleverSwitch, 116 stars) and Kernel Watch Triage (antoinecellerier/speaker-tuning-to-easyeffects, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mqtt-viewer (a GitHub organization) maintains it in mqtt-viewer/mqtt-viewer, which has 133 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.
Source: mqtt-viewer/mqtt-viewer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.