Agent skill

Release

by rvdbreemen in rvdbreemen/OTGW-firmware

Prepare and execute a full OTGW-firmware release following the documented release process

GPL-3.0Auto-check passedDevelopment

Install Release

skills CLI
$ npx skills add rvdbreemen/OTGW-firmware --skill release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rvdbreemen/OTGW-firmware release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rvdbreemen/OTGW-firmware.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && rm -rf skills-src

Use ~/.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/

Facts

Skill name
release
GitHub stars
207
Token cost
~2.5k tokens
SKILL.md length
1,288 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
GPL-3.0

At a glance

Prepare and execute a full OTGW-firmware release following the documented release process

  • Works in 7 steps: Prepare - clean state & detect previous… → ADR validation → Stabilize dev branch → …
  • Tasks that involve Deployment
  • SKILL.md covers Usage, Writing style rules, Process and Phase 7: Post-publication…, plus 1 more section
  • Calls git, gh and python

What it does

Release is an agent skill from rvdbreemen/OTGW-firmware. Prepare and execute a full OTGW-firmware release following the documented release process

Its SKILL.md is about 2.5k 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 Deployment. It works with Home Assistant, Git and GitHub. The repository describes itself as: A ESP8266 devkit firmware for the Nodoshop version of the Opentherm Gateway (OTGW). The licence is GPL-3.0.

When your agent uses it

  • Tasks that involve Deployment

Example prompts

  • “/release”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Prepare - clean state & detect previous release
  2. ADR validation
  3. Stabilize dev branch
  4. Merge dev to main
  5. Gather changes, contributors & generate documentation
  6. Release execution
  7. Post-release, Discord announcement & sync dev

What it can do on your machine

Read from SKILL.md and the folder at commit 5e66c3b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Release loads about 2.5k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 1,288 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~24
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from rvdbreemen/OTGW-firmware at commit 5e66c3b, republished under its GPL-3.0 licence (© rvdbreemen). 1,288 words, ~2,494 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
Prepare and execute a full OTGW-firmware release following the documented release process
disable-model-invocation
true

/release - OTGW-firmware Release Skill

Prepare and execute a complete release of the OTGW-firmware project.

Usage

/release <version>

Example: /release 1.3.2

The version argument is the target release version (without v prefix). The previous version is auto-detected from the latest git tag.

Writing style rules

  • Never use em dashes in any output: not in release notes, GitHub release body, Discord messages, commit messages, README updates, or conversation text. Use colons, periods, commas, or parentheses instead.
  • All release notes and GitHub release messages MUST be in English (international audience).
  • No emojis in release notes unless the existing format uses them (README uses them in headings).

Process

Follow these phases in order. There are only 2 mandatory checkpoints (marked with CHECKPOINT). All other phases proceed automatically unless something unexpected happens.

Phase 0: Prepare - clean state & detect previous release

Start every release by ensuring a clean working state and detecting the baseline.

  1. Ensure you are on dev: git checkout dev
  2. Commit and push any uncommitted changes:
    • git status - if there are modified or untracked files, stage, commit, and push them
    • git pull - incorporate any remote changes
    • git push origin dev - ensure local and remote are in sync
    • Verify: git status must show nothing to commit, working tree clean
  3. Detect the latest GitHub release (this is the authoritative previous release, not a local git tag):
    bash
    gh release view --json tagName,name,publishedAt --jq '{tag: .tagName, title: .name, date: .publishedAt}'
    Store the tag name (e.g., v1.3.2) and published date for use in later phases.
  4. Verify the release tag exists locally: git fetch --tags && git log <prev-tag> --oneline -1
  5. List code changes since that release: git log <prev-tag>..HEAD --oneline -- src/ | grep -v "CI: update version.h"
    • If there are no code changes, warn the user and ask whether to proceed. (Conditional stop.)
Phase 1: ADR validation

Check whether any architectural changes since the previous release require new or updated ADRs.

  1. Review the code commits from Phase 0 step 5
  2. For each significant change: does it affect architecture, NFRs, API contracts, new/replaced dependencies, or build/CI tooling?
  3. Check docs/adr/ for existing ADRs that may need their Related section updated
  4. If new ADRs are needed, create them now on dev before proceeding

Conditional stop: Only pause for user input if ADRs are actually needed. If no ADRs are required, report that and proceed automatically.

Phase 2: Stabilize dev branch
  1. Commit all open/uncommitted changes on dev and push to remote
  2. Run the build and filter output:
    bash
    mkdir -p .tmp
    python build.py 2>&1 | tee .tmp/build_release.log | tail -10
    echo "Exit: $?"
    If exit code != 0: read .tmp/build_release.log for diagnosis, fix, retry. If exit code == 0: proceed — do NOT read the full log.
  3. Commit version.h changes from build.py and push to remote.

No checkpoint. If the build succeeds, proceed automatically to Phase 3.

Phase 3: Merge dev to main
  1. git checkout main && git pull origin main
  2. git merge dev
  3. Verify merge succeeded without conflicts

Conditional stop: Only pause if there are merge conflicts. Otherwise proceed.

Phase 4: Gather changes, contributors & generate documentation

On main, run the /update-docs workflow in release mode. This handles all documentation in a single efficient parallel pass — do not duplicate work here.

Invoke update-docs:

/update-docs --release <version>

The update-docs workflow (/.claude/skills/update-docs/SKILL.md) will:

  1. Detect all source changes since the previous release tag
  2. Update affected manual chapters (EN + NL) in parallel
  3. Update API docs (openapi.yaml, MQTT.md, REST README) if API changed
  4. Update C4 architecture docs if structural changes occurred
  5. Gather contributors from GitHub PRs, Discord #beta-testing, and #devs-esp-firmware
  6. Generate RELEASE_NOTES_<version>.md, RELEASE_GITHUB_<version>.md, docs/BREAKING_CHANGES.md, and README What's New
  7. Clean up docs folder: archive old release notes, move misplaced files, organize reviews

Discord context for contributor gathering:

  • Guild ID: 812969634638725140
  • #beta-testing: channel ID 914498730001072149
  • #devs-esp-firmware: channel ID 924989767966425158
  • Maintainer to exclude: 384411356616720384 (number3nl)
  • Username formatting: strip trailing 4-digit suffixes (e.g., fuzzyduck3793 → fuzzyduck), except where removal makes the name ambiguous

The update-docs workflow returns without committing (release mode). All generated files are staged for the CHECKPOINT review.

CHECKPOINT 1: Present the categorized changes, contributor list, AND all generated documentation content to the user for review. Wait for approval before proceeding.

Phase 5: Release execution

Proceed directly after Phase 4 approval. No additional confirmation needed.

  1. Commit all outstanding changes on main and push to remote
  2. Remove pre-release from version.h: Comment out _VERSION_PRERELEASE so the build produces a clean v<version> without -beta. Verify: grep -n "PRERELEASE" src/OTGW-firmware/version.h
  3. Run the release build:
    bash
    python build.py 2>&1 | tee .tmp/build_release_final.log | tail -10
    echo "Exit: $?"
    Fix any issues. Read .tmp/build_release_final.log only on failure.
  4. Commit the release build and push main to remote
  5. Create draft GitHub release with tag: Derive a short title (3-6 words) summarizing the release theme. Use format v<version> - <Short Title>. Examples: v1.3.2 - File Explorer Reliability Fix, v1.4.0 - REST API v3 & Prometheus. Command: gh release create v<version> --target main --title "v<version> - <Short Title>" --notes-file RELEASE_GITHUB_<version>.md --draft
  6. Upload build artifacts to the draft release: gh release upload v<version> build/*.ino.bin build/*.littlefs.bin --clobber
  7. Verify artifacts are attached: gh release view v<version> --json assets --jq '.assets[].name'
  8. Publish the release: gh release edit v<version> --draft=false --latest
Show full SKILL.md (470 more words)Show less
Phase 6: Post-release, Discord announcement & sync dev
  1. Verify release artifacts are attached to the GitHub release
  2. Remind user to flash a device and check GET /api/v2/device/info
  3. Prepare Discord announcements for both community channels:
    • Dutch in #nederlandse-ondersteuning (channel ID: 815561033036333076)
    • English in #english-support (channel ID: 931267109726593116)
    • Both messages include: version, summary, contributor shoutout, download link

CHECKPOINT 2: Show both Discord messages to the user before sending.

  1. Send Discord messages after approval
  2. Sync dev branch:
    • git checkout dev && git merge main
    • Bump version.h: increment patch version, uncomment _VERSION_PRERELEASE and set to beta
    • Run autoinc-semver.py to update derived strings
    • Commit: feat: Bump version to v<next>-beta for development
    • Push dev

Phase 7: Post-publication corrections (when release notes need updating after publish)

Sometimes a user asks to correct text in an already-published release. Editing RELEASE_GITHUB_<version>.md in the repo does not update the GitHub release page automatically: the release body is a copy taken at gh release create time and lives on GitHub, not in the repo.

Whenever you update release notes, README, or the GitHub release body after publication, do all three in the same round:

  1. Edit the files in the repo (RELEASE_NOTES_<version>.md, README.md, RELEASE_GITHUB_<version>.md) on main.
  2. Commit and push to main.
  3. Update the live GitHub release body with: gh release edit v<version> --notes-file RELEASE_GITHUB_<version>.md
  4. Merge main back into dev so both branches reflect the correction: git checkout dev && git merge main && git push origin dev

Skipping step 3 leaves the repo and the GitHub release page out of sync. Skipping step 4 means the next beta cycle starts from stale release docs.

Important rules

  • Never use em dashes in any generated text (release notes, Discord messages, commit messages, README, conversation). Use colons, periods, commas, or parentheses.
  • Always push to remote after every commit: keep local and remote in sync throughout the release
  • Always create releases as draft first: upload artifacts, verify, then publish. Once published, releases are immutable.
  • No CI workflows for releases: builds are done locally via python build.py, artifacts uploaded via gh release upload
  • Only 2 mandatory checkpoints: Phase 4 (content review) and Phase 6 (Discord messages). Do not add unnecessary confirmation prompts.
  • Conditional stops: only pause for merge conflicts, missing ADRs, build failures, or zero code changes.
  • Never force-push: all pushes are normal pushes
  • Read docs/process/RELEASE_PROCESS.md at the start of every release for the latest process updates
  • All release notes and GitHub release messages MUST be in English: international audience
  • No emojis in release notes unless the existing format uses them (README uses them in headings)
  • GitHub release body is decoupled from the repo file: editing RELEASE_GITHUB_<version>.md does NOT update the published release page. After any edit, run gh release edit v<version> --notes-file RELEASE_GITHUB_<version>.md to push the change to GitHub, then merge main back into dev so both branches carry the correction.

© 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

Files

Just SKILL.md in .claude/skills/release of rvdbreemen/OTGW-firmware.

Open the folder on GitHubat commit 5e66c3b

Compare with similar skills

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.

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillrvdbreemen/OTGW-firmware207—~2.5kAutomated safety check: PassGPL-3.0
ClawRouter Release ChecklistBlockRunAI/ClawRouter6.6k—~1.4kAutomated safety check: PassMIT
AnyDrag Release RoutineXueshiQiao/AnyDrag226—~2.6kAutomated safety check: PassGPL-3.0
Releasebibendi/schked138—~670Automated safety check: NotesMIT
Releasedcb/homeassistant-claude-kit123—~3.1kAutomated safety check: PassMIT
ReleaseEmertonData/glide119—~2kAutomated safety check: PassCustom licence

Similar skills

  • ClawRouter Release Checklist

    BlockRunAI/ClawRouter

    Walks the agent through every ClawRouter release step in order, from the version bump and changelog entry to build, tests, npm publish, git tag and GitHub release.

    6.6k GitHub stars~1.4k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • AnyDrag Release Routine

    XueshiQiao/AnyDrag

    Runs the full AnyDrag release process end to end, from cumulative bilingual release notes through version bumping to watching CI and the Homebrew cask update.

    226 GitHub stars~2.6k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Release

    bibendi/schked

    Guides through the full gem release process — bump version, update CHANGELOG, tag, push to RubyGems, and create GitHub Release.

    138 GitHub stars~670 tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes
  • Release

    dcb/homeassistant-claude-kit

    Cut a new homeassistant-claude-kit version. An agent skill from dcb/homeassistant-claude-kit.

    123 GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    EmertonData/glide

    Automates the GLIDE release process end-to-end: bumps the version, edits CHANGELOG, opens a release PR, triggers TestPyPI, creates the git tag, and creates the GitHub release.

    119 GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Vercel Deploy Preview

    jeremylongshore/tons-of-skills-marketplace

    Create and manage Vercel preview deployments for branches and pull requests.

    2.8k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed

More from rvdbreemen/OTGW-firmware

All 13 skills in this repo
  • DOCX

    rvdbreemen/OTGW-firmware

    A skill your agent uses whenever the user wants to create, read, edit, or manipulate Word documents (.docx files).

    207 GitHub starsUsed in 33 repos~4.3k tokens
    Auto-check passed
  • PPTX

    rvdbreemen/OTGW-firmware

    Use this skill any time a .pptx file is involved in any way — as input, output, or both.

    207 GitHub starsUsed in 34 repos~2.3k tokens
    Auto-check passed
  • XLSX

    rvdbreemen/OTGW-firmware

    Use this skill any time a spreadsheet file is the primary input or output.

    207 GitHub starsUsed in 35 repos~2.9k tokens
    Auto-check passed
  • Implement Next Task

    rvdbreemen/OTGW-firmware

    Drive the autonomous 2.0.0 ESP32-S3-only async + FreeRTOS migration (epic TASK-865).

    207 GitHub stars~2.1k tokensUpdated 3 days ago
    Auto-check passed
  • Beta Prerelease

    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

    207 GitHub stars~2.7k tokensUpdated 3 days ago
    Auto-check passed
  • Lint

    rvdbreemen/OTGW-firmware

    Lints existing Architecture Decision Records against the four verification gates (Completeness, Evidence, Clarity, Consistency).

    207 GitHub stars~4.3k tokensUpdated 3 days ago
    Auto-check passed

Categories

Questions about Release

What does Release do?

Prepare and execute a full OTGW-firmware release following the documented release process. Release is an agent skill from rvdbreemen/OTGW-firmware.

When should I use Release?

Release fits situations like: tasks that involve Deployment.

How do I install Release in Claude Code?

Run `npx skills add rvdbreemen/OTGW-firmware --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in rvdbreemen/OTGW-firmware) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.

How do I install Release in Codex?

Run `npx skills add rvdbreemen/OTGW-firmware --skill release -a codex`. Or copy the skill folder (.claude/skills/release in rvdbreemen/OTGW-firmware) into .agents/skills/release in your project. Codex loads it when a task matches its description.

Can I use Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rvdbreemen/OTGW-firmware --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.

What does Release need to run?

Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, gh and python). Our summary lists: Python 3.

Does Release access the network?

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.

Is Release safe to install?

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.

What licence does Release use?

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.

How many tokens does Release use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Release?

Skills that share tags, products or a category with Release: ClawRouter Release Checklist (BlockRunAI/ClawRouter, 6.6k stars), AnyDrag Release Routine (XueshiQiao/AnyDrag, 226 stars), Release (bibendi/schked, 138 stars) and Release (dcb/homeassistant-claude-kit, 123 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

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.