.claude/skills/release/SKILL.md
Prepare and execute a full OTGW-firmware release following the documented release process
npx skillsauth add rvdbreemen/otgw-firmware releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Prepare and execute a complete release of the OTGW-firmware project.
/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.
Follow these phases in order. There are only 2 mandatory checkpoints (marked with CHECKPOINT). All other phases proceed automatically unless something unexpected happens.
Start every release by ensuring a clean working state and detecting the baseline.
dev: git checkout devgit status - if there are modified or untracked files, stage, commit, and push themgit pull - incorporate any remote changesgit push origin dev - ensure local and remote are in syncgit status must show nothing to commit, working tree cleangh 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.git fetch --tags && git log <prev-tag> --oneline -1git log <prev-tag>..HEAD --oneline -- src/ | grep -v "CI: update version.h"
Check whether any architectural changes since the previous release require new or updated ADRs.
docs/adr/ for existing ADRs that may need their Related section updateddev before proceedingConditional stop: Only pause for user input if ADRs are actually needed. If no ADRs are required, report that and proceed automatically.
dev and push to remotepython build.py to verify the build worksNo checkpoint. If the build succeeds, proceed automatically to Phase 3.
git checkout main && git pull origin maingit merge devConditional stop: Only pause if there are merge conflicts. Otherwise proceed.
On main, gather all information AND generate all documentation in one pass. Present everything together for a single review.
Changes:
git describe --tags --abbrev=0git log <prev-tag>..HEAD --oneline (exclude "CI: update version.h" commits)docs/adr/ for new or updated ADRs since the previous releaseContributors (automated from 3 sources):
Source 1 - GitHub Issues & PRs:
gh issue list --state closed --search "closed:>YYYY-MM-DD" --json author,title --jq '.[] | "\(.author.login): \(.title)"'gh pr list --state merged --search "merged:>YYYY-MM-DD" --json author,title --jq '.[] | "\(.author.login): \(.title)"'Source 2 - Discord #beta-testing channel:
mcp__discord__discord_login (bot: OTGW bot)#beta-testing (channel ID: 914498730001072149) with limit 100number3nl / user ID 384411356616720384)fuzzyduck3793, simontemplar6623). Strip the trailing digits to get the display name (e.g., fuzzyduck, simontemplar). Exception: if removing digits makes the name ambiguous or clearly wrong, keep the original.Source 3 - Discord #devs-esp-firmware channel:
#devs-esp-firmware (channel ID: 924989767966425158) with limit 100Discord server reference: Guild ID 812969634638725140 (OTGW-firmware community).
Compile the contributor list:
Documentation (generate all files):
RELEASE_NOTES_<version>.md (repository root): Full technical release notes following the template in docs/process/RELEASE_PROCESS.mdRELEASE_GITHUB_<version>.md (repository root): Concise GitHub release body with bug fixes, improvements, upgrade notes, and Thank You section (shoutout + contributor list + Discord invite link)docs/BREAKING_CHANGES.md: Prepend a new version section. Always declare explicitly whether there are breaking changes or not.README.md: Demote current "What's New" to "What was new", add new "What's New in v<version>" section with highlightsCHECKPOINT 1: Present the categorized changes, contributor list, AND all generated documentation content to the user for review. Wait for approval before proceeding.
Proceed directly after Phase 4 approval. No additional confirmation needed.
main and push to remoteversion.h: Comment out _VERSION_PRERELEASE so the build produces a clean v<version> without -beta. Verify: grep -n "PRERELEASE" src/OTGW-firmware/version.hpython build.py to produce the release build. Fix any issues.main to remotev<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 --draftgh release upload v<version> build/*.ino.bin build/*.littlefs.bin --clobbergh release view v<version> --json assets --jq '.assets[].name'gh release edit v<version> --draft=false --latestGET /api/v2/device/info#nederlandse-ondersteuning (channel ID: 815561033036333076)#english-support (channel ID: 931267109726593116)CHECKPOINT 2: Show both Discord messages to the user before sending.
git checkout dev && git merge mainversion.h: increment patch version, uncomment _VERSION_PRERELEASE and set to betaautoinc-semver.py to update derived stringsfeat: Bump version to v<next>-beta for developmentdevpython build.py, artifacts uploaded via gh release uploaddocs/process/RELEASE_PROCESS.md at the start of every release for the latest process updatesdevelopment
Architecture Decision Record (ADR) management skill. Creates, maintains, and enforces architectural decisions. Ensures code changes align with documented decisions. Documents alternatives considered and rejected. Facilitates architectural planning and human decision documentation.
development
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
tools
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.