Release
kellerza/sunsynk
Bump sunsynk version (major/minor/bugfix), rewrite the Unreleased changelog heading, commit, push to main, and open a draft GitHub release with a v-prefixed tag.
Publish an OTGW-firmware beta prerelease — bump VERSIONPRERELEASE, push to otgw-1.x.x, tag, and let CI build + publish the GitHub prerelease
$ npx skills add rvdbreemen/OTGW-firmware --skill beta-prerelease -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rvdbreemen/OTGW-firmware beta-prerelease --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/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/beta-prerelease .claude/skills/beta-prerelease && 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 "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .claude/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prereleaseType 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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rvdbreemen/OTGW-firmware beta-prerelease --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/beta-prerelease .agents/skills/beta-prerelease && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .agents/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rvdbreemen/OTGW-firmware beta-prerelease --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/beta-prerelease .cursor/skills/beta-prerelease && 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 "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .cursor/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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/rvdbreemen/OTGW-firmware.git --path .claude/skills/beta-prerelease--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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rvdbreemen/OTGW-firmware beta-prerelease --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/beta-prerelease .gemini/skills/beta-prerelease && 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 "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .gemini/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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 rvdbreemen/OTGW-firmware beta-prereleaseInstalls 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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/beta-prerelease .github/skills/beta-prerelease && 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 "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .github/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rvdbreemen/OTGW-firmware beta-prerelease --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/beta-prerelease .opencode/skills/beta-prerelease && 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 "beta-prerelease" agent skill from https://github.com/rvdbreemen/OTGW-firmware/tree/dev/.claude/skills/beta-prerelease into .opencode/skills/beta-prerelease/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beta-prerelease", 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.
beta-prereleasePublish an OTGW-firmware beta prerelease — bump VERSIONPRERELEASE, push to otgw-1.x.x, tag, and let CI build + publish the GitHub prerelease
Beta Prerelease is an agent skill from rvdbreemen/OTGW-firmware. Publish an OTGW-firmware beta prerelease — bump VERSIONPRERELEASE, push to otgw-1.x.x, tag, and let CI build + publish the GitHub prerelease
Its SKILL.md is about 2.7k 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 GitHub, Discord and Home Assistant. The repository describes itself as: A ESP8266 devkit firmware for the Nodoshop version of the Opentherm Gateway (OTGW). The licence is GPL-3.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5e66c3b. 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:
gitghpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GITHUB_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Beta Prerelease loads about 2.7k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 1,077 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 rvdbreemen/OTGW-firmware at commit 5e66c3b, republished under its GPL-3.0 licence (© rvdbreemen). 1,077 words, ~2,704 tokens.
.claude/skills/beta-prerelease/SKILL.md (or your agent's skills folder).Publish a single beta build to field testers in Discord #beta-testing. Lightweight, repeatable many times within one minor cycle. Does NOT merge to main, does NOT touch the stable _SEMVER_CORE.
/beta-prereleaseNo arguments. Auto-detects the current _VERSION_PRERELEASE and increments it via bin/bump-prerelease.sh.
tee .tmp/build_beta.log | tail -5. Only read .tmp/build_beta.log if exit code != 0.grep/sed to extract only the relevant section from each file. Never read README, CHANGELOG, or RELEASE_NOTES in full..github/workflows/beta-prerelease.yml only if a trap is actually hit.gh run watch instead of opening a browser.Run when a firmware change under src/OTGW-firmware/** or src/libraries/** is committed and ready for field testing. Do NOT use for docs-only commits or full releases to main (use /release <version> for those).
| Aspect | /release | /beta-prerelease |
|---|---|---|
| Target branch | dev then merge to main | otgw-1.x.x only |
Bumps _SEMVER_CORE | yes | no |
| GitHub release | stable, not prerelease | prerelease: true |
| Discord channels | #nederlandse-ondersteuning, #english-support | #beta-testing |
| Mandatory checkpoints | 2 | 1 (Discord announcement) |
The 1.x maintenance/LTS line lives in its own worktree. Run this skill FROM the
wt-otgw-1.x.x worktree. Do NOT git checkout otgw-1.x.x inside the dev tree:
the branch is already checked out in the worktree and the checkout will fail.
git rev-parse --abbrev-ref HEAD must print otgw-1.x.x.git status must be clean (or only the firmware change about to be bumped). Then git pull origin otgw-1.x.x.git fetch --tags
PREV_TAG=$(git tag --list 'v*-*.*' --sort=-v:refname | head -1)LATEST_PUBLIC):LATEST_PUBLIC=$(gh release view --json tagName --jq '.tagName' 2>/dev/null \
|| git tag --list 'v[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | grep -v -- '-' | head -1)grep _VERSION_PRERELEASE src/OTGW-firmware/version.hSkip by default. Only pause if the staged firmware change introduces a new architectural pattern, dependency, or NFR shift. Most beta cycles do not need this gate.
bin/bump-prerelease.shPrints the transition (e.g. beta.3 -> beta.4). Store the new value as NEW_PRERELEASE. The helper does NOT git-add — you stage in Phase 6.
Assemble the tag: TAG="v${SEMVER_CORE}-${NEW_PRERELEASE}"
The GitHub Action reads these files at the tagged commit. Stale narrative at the tag = stale release page (Trap 1). Refresh immediately after the bump so NEW_PRERELEASE is known.
Staleness check (P2 — targeted extractions, not full reads):
# 1. Commits since last public release (the change set to account for)
git log --pretty=format:'%h %s' "${LATEST_PUBLIC}..HEAD" -- src/OTGW-firmware/ src/libraries/ docs/
# 2. Existing narrative — CHANGELOG [Unreleased] is the rolling beta log on the
# 1.x line. (The README "What's New in v<stable>" sections are refreshed at
# STABLE release, not per beta, and there is no RELEASE_NOTES_*-beta file.)
grep -A 35 "## \[Unreleased\]" CHANGELOG.md | head -40Decision:
LATEST_PUBLIC appears under CHANGELOG ## [Unreleased] → pass silently, continue to Phase 4.Authoring rules (P3 — write immediately, keep only filename in context):
CHANGELOG.md — append under ## [Unreleased] using Keep-a-Changelog headings (### Added/Changed/Fixed/Removed/Documentation). One bullet per change, with ADR/TASK/PR/GH-issue reference. → note "Updated." This is the only mandatory narrative for a 1.x beta.README.md — leave untouched. The 1.x README's "What's New in v<stable>" sections are refreshed at STABLE release (via /release), not per beta.RELEASE_NOTES_<next-stable>.md (e.g. RELEASE_NOTES_1.7.1.md) — optional during a beta cycle (authored in full at stable release). Update it now only if you keep a running draft. → note "Updated."Skip the CHANGELOG edit only when this is a re-cut at the same change surface (previous tag hit Trap 2). Note the reason in the commit message.
mkdir -p .tmp
python build.py --firmware 2>&1 | tee .tmp/build_beta.log | tail -5
echo "Exit: $?"Must exit 0. On failure: read .tmp/build_beta.log for diagnosis, fix, retry. Do NOT push a tag on a broken build.
python evaluate.py --quickMust show no new failures. Pre-existing baseline failures unrelated to this change: document in the commit message.
# The 1.x bin/bump-prerelease.sh updates version banners across ~24 files and
# does NOT auto-stage. Stage the real change set (on Windows, --ignore-cr-at-eol
# filters out EOL-only churn). On a clean Phase-0 tree this is exactly the bump
# banners + version.h + data/version.hash + your firmware change + CHANGELOG.md:
git add $(git diff --ignore-cr-at-eol --name-only)
git commit -m "chore(release): ${NEW_PRERELEASE}
<one-line summary of what is in this beta>"
git push origin otgw-1.x.xIf the pre-commit hook blocks: re-stage version.h + data/version.hash and retry. Do NOT bypass with OTGW_BUMP_HOOK_DISABLE=1.
Note: the .githooks/commit-msg task-hook requires a TASK-NNN whose backlog/tasks/task-NNN-*.md is tracked in THIS worktree. The backlog lives in the dev tree, so a 1.x firmware commit usually cannot satisfy it. Use a chore(release): ... subject (exempt from the task-hook) for the bump commit, or OTGW_TASK_HOOK_DISABLE=1 if you reference a cross-tree TASK-NNN.
SEMVER_CORE=$(grep '_SEMVER_CORE ' src/OTGW-firmware/version.h | awk -F'"' '{print $2}')
TAG="v${SEMVER_CORE}-${NEW_PRERELEASE}"
git tag -a "${TAG}" -m "Beta prerelease ${NEW_PRERELEASE}"
git push origin "${TAG}"The push fires .github/workflows/beta-prerelease.yml. CI builds firmware + filesystem, creates a GitHub prerelease, uploads .ino.bin, .littlefs.bin, SHA256SUMS, flash scripts, and the flash-bundle zip.
gh run watch --exit-statusWhen it exits 0, verify the release:
gh release view "${TAG}" --json tagName,isPrerelease,assets \
--jq '{tag: .tagName, prerelease: .isPrerelease, assets: [.assets[].name]}'Expected assets: *.ino.bin, *.littlefs.bin, SHA256SUMS, flash_otgw.sh, flash_otgw.bat, OTGW-firmware-*-flash-bundle.zip.
On failure: inspect logs with gh run view --log-failed, fix the issue, and re-run via workflow_dispatch or push a new tag.
Prepare announcement for #beta-testing (channel ID 914498730001072149). Diff link points at LATEST_PUBLIC (testers want to see what changed since the last stable, not since a previous beta).
Beta ${NEW_PRERELEASE} is up.
Version: ${SEMVER_CORE}-${NEW_PRERELEASE}
What is new: <one or two sentences>
Download: https://github.com/rvdbreemen/OTGW-firmware/releases/tag/${TAG}
Diff vs ${LATEST_PUBLIC}: https://github.com/rvdbreemen/OTGW-firmware/compare/${LATEST_PUBLIC}...${TAG}
Changelog: https://github.com/rvdbreemen/OTGW-firmware/blob/${TAG}/CHANGELOG.md
Please flash and report findings here (good and bad).CHECKPOINT: Show the announcement to the user before sending.
git checkout -b test/beta-prerelease-dryrun
git tag -a v0.0.0-beta.dryrun -m "dryrun" && git push origin v0.0.0-beta.dryrun
# watch the Action, then clean up:
gh release delete v0.0.0-beta.dryrun --yes
git push --delete origin v0.0.0-beta.dryrun && git tag -d v0.0.0-beta.dryrun
git checkout otgw-1.x.x && git branch -d test/beta-prerelease-dryrunbeta-prerelease.yml)gh release create returns HTTP 422. Workaround already in CI: draft-first, attach all assets, then flip --draft=false. If you hit this manually, re-tag under the next beta number.GITHUB_TOKEN events do not chain — release-assets.yml (triggered by release: published) does not fire when the release is created by GITHUB_TOKEN. beta-prerelease.yml is therefore self-contained (generates SHA256SUMS + zip + flash scripts itself).LATEST_PUBLIC (the non-prerelease "Latest" release), not the previous beta tag.OTGW_BUMP_HOOK_DISABLE=1 — if the hook blocks, you forgot to stage version.h / data/version.hash.© rvdbreemen, 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/beta-prerelease of rvdbreemen/OTGW-firmware.
Open the folder on GitHubat commit 5e66c3b
Beta Prerelease 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 |
|---|---|---|---|---|---|---|
| Beta Prerelease this skillrvdbreemen/OTGW-firmware | 207 | — | ~2.7k | Automated safety check: Pass | GPL-3.0 | |
| Releasekellerza/sunsynk | 339 | — | ~920 | Automated safety check: Pass | Apache-2.0 | |
| Releasepwrdrvr/openclaw-codex-app-server | 265 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Writing Release NotesGoneTone/genshin-impact-wish-gacha-analyzer | 152 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Releasecdpuk/ha-bestway | 135 | — | ~998 | Automated safety check: Pass | MIT | |
| GitHub Issue Solverhomeassistant-extras/device-card | 131 | — | ~3.4k | Automated safety check: Pass | MIT |
kellerza/sunsynk
Bump sunsynk version (major/minor/bugfix), rewrite the Unreleased changelog heading, commit, push to main, and open a draft GitHub release with a v-prefixed tag.
pwrdrvr/openclaw-codex-app-server
Plan and publish a GitHub Release in a tag-driven repository.
GoneTone/genshin-impact-wish-gacha-analyzer
A skill your agent uses when drafting GitHub release notes or changelog content for this project (Genshin Impact Wish Gacha Analyzer).
cdpuk/ha-bestway
Cut a release of this integration - bump the version in manifest.json, run the validation gates, commit, tag the merged commit, and draft categorised release notes for the GitHub release form.
homeassistant-extras/device-card
Accept a GitHub issue URL or issue details, create a comprehensive plan (in plan mode - shows plan first), then implement the solution including tests and documentation, create/update release notes…
nevalang/neva
Create a Discord-ready Neva release announcement from a GitHub release payload.
rvdbreemen/OTGW-firmware
A skill your agent uses whenever the user wants to create, read, edit, or manipulate Word documents (.docx files).
rvdbreemen/OTGW-firmware
Use this skill any time a .pptx file is involved in any way — as input, output, or both.
rvdbreemen/OTGW-firmware
Use this skill any time a spreadsheet file is the primary input or output.
rvdbreemen/OTGW-firmware
Drive the autonomous 2.0.0 ESP32-S3-only async + FreeRTOS migration (epic TASK-865).
rvdbreemen/OTGW-firmware
Lints existing Architecture Decision Records against the four verification gates (Completeness, Evidence, Clarity, Consistency).
rvdbreemen/OTGW-firmware
Guided rewrite of legacy-shaped ADRs into the canonical-seven-section template enforced by /adr-kit:lint.
Works with
Categories
Publish an OTGW-firmware beta prerelease — bump VERSIONPRERELEASE, push to otgw-1.x.x, tag, and let CI build + publish the GitHub prerelease. Beta Prerelease is an agent skill from rvdbreemen/OTGW-firmware.
Beta Prerelease fits situations like: tasks that involve Changelog and release notes.
Run `npx skills add rvdbreemen/OTGW-firmware --skill beta-prerelease -a claude-code`. Or copy the skill folder (.claude/skills/beta-prerelease in rvdbreemen/OTGW-firmware) into .claude/skills/beta-prerelease in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rvdbreemen/OTGW-firmware --skill beta-prerelease -a codex`. Or copy the skill folder (.claude/skills/beta-prerelease in rvdbreemen/OTGW-firmware) into .agents/skills/beta-prerelease 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 rvdbreemen/OTGW-firmware --skill beta-prerelease -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beta-prerelease, .gemini/skills/beta-prerelease, .github/skills/beta-prerelease and .opencode/skills/beta-prerelease in your project.
Going by SKILL.md and its folder, Beta Prerelease needs the command-line tools its instructions call (git, gh and python) and credentials named GITHUB_TOKEN. Our summary lists: Python 3; A credential in GITHUB_TOKEN.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. 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.
Beta Prerelease 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 2.7k tokens (SKILL.md is roughly 11k 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 Beta Prerelease: Release (kellerza/sunsynk, 339 stars), Release (pwrdrvr/openclaw-codex-app-server, 265 stars), Writing Release Notes (GoneTone/genshin-impact-wish-gacha-analyzer, 152 stars) and Release (cdpuk/ha-bestway, 135 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rvdbreemen (a GitHub user) maintains it in rvdbreemen/OTGW-firmware, which has 207 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 6, 2026.
Source: rvdbreemen/OTGW-firmware on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.