Agent skill

Release Management

by termide in termide/termide

Prepare and publish a project release with version updates, changelog generation, tagging, and validation

MITAuto-check passedDevelopment

Install Release Management

skills CLI
$ npx skills add termide/termide --skill release-management -a claude-code

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

GitHub CLI
$ gh skill install termide/termide release-management --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/termide/termide.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/release-management .claude/skills/release-management && 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-management
GitHub stars
171
Token cost
~6.8k tokens
SKILL.md length
2,182 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Prepare and publish a project release with version updates, changelog generation, tagging, and validation

  • Works in 12 steps: Pre-Release Code Quality Checks → Analyze Changes for CHANGELOG → Detect Current Version → …
  • Tasks that involve Open source maintenance
  • SKILL.md covers When to Use This Skill, Prerequisites, Workflow Overview and Step-by-Step Implementation, plus 5 more sections
  • Calls git, cargo and gh

What it does

Release Management is an agent skill from termide/termide. Prepare and publish a project release with version updates, changelog generation, tagging, and validation

Its SKILL.md is about 6.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 Open source maintenance and Changelog and release notes. It works with Git, Model Context Protocol, Rust and SQL. The repository describes itself as: All-in-one terminal workspace for desktops and servers: editor with LSP, file manager with SFTP/FTP, terminal, git, database viewer and a coding agent in one zero-config static… The licence is MIT.

When your agent uses it

  • Tasks that involve Open source maintenance
  • Tasks that involve Changelog and release notes

Example prompts

  • “/release-management”

Workflow steps

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

  1. Pre-Release Code Quality Checks
  2. Analyze Changes for CHANGELOG
  3. Detect Current Version
  4. Request New Version
  5. Update Version in All Files
  6. Documentation Actuality Check
  7. Update CHANGELOG.md
  8. Post-Update Quality Checks
  9. Create Release Commit
  10. Create Git Tag
  11. Push and Create Release
  12. Final Report

What it can do on your machine

Read from SKILL.md and the folder at commit 5c550fc. 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
    • cargo
    • gh

    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 Management loads about 6.8k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 2,182 words of instructions outside code blocks.

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

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 termide/termide at commit 5c550fc, republished under its MIT licence (© termide). 2,182 words, ~6,750 tokens.

Download SKILL.mdSave it as .claude/skills/release-management/SKILL.md (or your agent's skills folder).
name
release-management
description
Prepare and publish a project release with version updates, changelog generation, tagging, and validation

Release Management Skill

Comprehensive release management workflow for TermIDE project that ensures code quality, version consistency, and proper changelog documentation before creating releases.

Platform note: agents that support extra frontmatter fields may add their own permission hints around this skill. Agents that do not support them should ignore unsupported fields and follow the workflow below. When interactive prompts or inline editing are unavailable, use the closest equivalent workflow the platform provides.

When to Use This Skill

Invoke this skill when you need to:

  • Create a new release (patch/minor/major version bump)
  • Recreate a failed release tag (after fixing CI/build issues)
  • Update all version references across the project
  • Generate changelog entries from git history and file changes
  • Ensure code quality before tagging

Prerequisites

  • Clean git working directory (or explicitly handle uncommitted changes)
  • All tests passing locally
  • No pending changes that should be in separate commits

Workflow Overview

This skill follows a comprehensive 12-step workflow:

  1. Code Quality Checks - Run formatters, linters, tests, and build
  2. Change Analysis - Analyze uncommitted changes, commits, and file states
  3. Version Detection - Detect current version from multiple sources
  4. Version Selection - Ask user for new version (patch/minor/major/custom/recreate)
  5. File Updates - Update version in 12+ files across the project
  6. Documentation Review - Prompt user to review and update docs if needed
  7. Changelog Generation - Auto-generate CHANGELOG.md section from changes
  8. Re-check Quality - Run quality checks again after file updates
  9. Create Commit - Create conventional commit for release
  10. Create Tag - Create annotated git tag
  11. Push - Ask for confirmation before pushing to remote
  12. Report - Show release URL and CI/CD status link

Step-by-Step Implementation

Step 1: Pre-Release Code Quality Checks

CRITICAL: These checks must pass before proceeding with release

Run these commands in sequence. If ANY fail, stop immediately and report errors:

bash
# 1. Format check
cargo fmt --check

# 2. Clippy strict mode
cargo clippy -- -D warnings

# 3. Run test suite
cargo test

# 4. Release build check
cargo build --release

Error Handling:

  • If cargo fmt --check fails: Show diffs and suggest running cargo fmt
  • If cargo clippy fails: Show warnings/errors, suggest fixing before release
  • If cargo test fails: Show failed tests, abort release
  • If cargo build --release fails: Show build errors, abort release

Output to user:

🔍 Pre-Release Quality Checks
✅ Code formatting (cargo fmt --check)
✅ Linter checks (cargo clippy)
✅ Test suite (49 passed, 4 ignored)
✅ Release build

All quality checks passed! Proceeding with release...
Step 2: Analyze Changes for CHANGELOG

This is editorial work, not mechanical commit-parsing. The goal is a human-readable changelog, so the agent must understand what happened in the release, not just translate git log line-by-line.

Collect raw material from three sources, then synthesize it into themes (see "Synthesis" below before writing anything to CHANGELOG).

Source 1: Uncommitted Changes
bash
git status --porcelain
git diff --stat

Parse output to detect:

  • Modified files (M)
  • Added files (A)
  • Deleted files (D)
  • Renamed files (R)
Source 2: Committed Changes Since Last Tag
bash
# Get last tag
last_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

# Get commits since tag (use full subjects + bodies, not just --oneline)
if [ -n "$last_tag" ]; then
    git log ${last_tag}..HEAD --no-decorate --pretty=fuller
else
    git log --no-decorate --pretty=fuller
fi

Conventional commit type is a hint for categorization, never the final word. Always cross-check with the actual diff before placing the change under Added / Changed / Fixed:

  • feat: → usually Added
  • fix: → usually Fixed
  • docs: → Changed only if user-visible behavior or workflow changed
  • refactor: / perf: → Changed only if user-observable; otherwise drop
  • chore: / style: → almost never in changelog
  • BREAKING CHANGE: (footer) → call out explicitly regardless of type
Source 3: File States at Each Commit

For each commit between tag and HEAD, check what actually changed in files:

bash
# For each commit
git log ${last_tag}..HEAD --format="%H" | while read commit_hash; do
    git show --stat $commit_hash
done

This reveals:

  • Which features were actually added (new files in src/panels/, etc.)
  • Configuration changes (config.rs, constants.rs)
  • Documentation updates (README.md, doc/*)

If a commit message says "feat: add X" but the diff only touches tests or unrelated files, trust the diff, not the message.

Synthesis — turn raw log into a coherent narrative

Git history contains a lot of noise the user will not want to read. Before writing the changelog, collapse the log into themes. A theme is a single user-visible change, possibly spanning many commits.

Drop entirely (do not surface to user as changelog candidates):

  • Pure "WIP" / "checkpoint" / "save" commits with no standalone meaning.
  • Typo fixes, formatting fixes, comment edits with no behavior change.
  • Lint / clippy / fmt-only commits.
  • Commits that were later fully reverted within the same release window.
  • Dependency version bumps that don't change observable behavior (unless the bump is the release's headline).
  • Iterative fixes-on-top-of-a-feature inside the same release — fold them into the feature's entry. The reader cares that "feature X works", not that it took three commits to land.
  • Refactor-then-revert / "broke main, fixed main" pairs.
  • Internal renames, file moves, module reorganizations with no API effect — unless they're a deliberate breaking change.

Collapse together (one changelog line per theme, not per commit):

  • A feature plus its follow-up bugfixes from the same release window.
  • A multi-step refactor that lands across N commits with one outcome.
  • Translation updates for the same change in multiple languages (mention once, list affected locales if useful).

Keep, with rewording:

  • User-visible behavior change → describe the effect on the user, not the implementation. "Migrated to XDG Base Directory Specification" is better than "feat(config): use dirs::config_dir() for state path".
  • Bug fix → describe the bug as the user experienced it, not as the patch line in the diff. "Fixed crash when opening empty files" beats "fix: handle 0-length read in editor::load".
  • Breaking change → say what breaks and what the user should do.

Pull from git show <hash> for context when a commit subject is cryptic but the diff is meaningful — write the changelog from the diff.

Verify the synthesis pass actually happened: if the resulting bullet count is roughly equal to the commit count, you almost certainly did not collapse anything. Re-read the log and merge follow-ups.

Output structure (raw analysis stage, before drafting CHANGELOG):

Changes Analysis:
==================

Uncommitted Changes:
- Modified: src/main.rs, Cargo.toml
- Added: CHANGELOG.md

Commits Since 0.2.0 (raw):
- 6d2e247 refactor: remove FileManager special handling
- 4e7c694 feat: migrate to XDG Base Directory Specification
- 6509fdb feat: implement session autosave
- a1b2c3d fix: typo in autosave
- d4e5f6a fix(autosave): debounce write
- 7890abc chore: clippy

Themes (after synthesis):
- XDG Base Directory Specification support  [4e7c694]
- Automatic session persistence with debounced writes  [6509fdb + d4e5f6a, typo and clippy folded in]
- FileManager is now a regular closable panel — BREAKING  [6d2e247]

Dropped as noise:
- a1b2c3d (typo, folded into autosave entry)
- 7890abc (clippy-only)

These themes, not the raw commit list, are what Step 7 turns into CHANGELOG entries.

Step 3: Detect Current Version

Check version in multiple files and detect inconsistencies:

bash
# Cargo.toml (primary source)
cargo_version=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')

# flake.nix
flake_version=$(grep 'version = ' flake.nix | head -1 | sed 's/.*version = "\(.*\)";/\1/')

# Last git tag
git_version=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")

If versions match: Use that version as current.

If versions differ: Show table and ask user:

⚠️  Version Mismatch Detected:

File                     Version
-------------------------------------
Cargo.toml              0.2.0
flake.nix               0.1.5  ⚠️
Last git tag            0.2.0

Which version is correct as the current version?
1. 0.2.0 (Cargo.toml + git tag)
2. 0.1.5 (flake.nix)
3. Other (specify manually)

Use the platform's interactive prompt mechanism for this decision.

Step 4: Request New Version

Show current version and offer version bump options:

Current version: 0.2.0

Select release type:
1. patch (0.2.0 → 0.2.1) - Bug fixes, minor changes
2. minor (0.2.0 → 0.3.0) - New features, backwards compatible
3. major (0.2.0 → 1.0.0) - Breaking changes
4. custom - Enter specific version (e.g., 0.2.5)
5. recreate 0.2.0 - Recreate existing tag (for failed CI/CD)

Use the platform's interactive prompt mechanism with options:

  • patch
  • minor
  • major
  • custom
  • recreate

For custom: Prompt for version string, validate format (X.Y.Z).

For recreate: Ask confirmation:

⚠️  Are you sure you want to recreate tag 0.2.0?
This will:
- Delete local tag 0.2.0
- Delete remote tag 0.2.0 (if pushed)
- Create new tag 0.2.0 with current HEAD

This is typically done when CI/CD failed and you fixed the issues.

Proceed? [yes/no]
Step 5: Update Version in All Files

Update version NEW_VERSION in these 10 files (plus Cargo.lock). Build the authoritative list first, so a file added since this skill was written is not missed:

bash
git grep -c 'OLD_VERSION_ESCAPED' -- ':!CHANGELOG.md' ':!Cargo.lock'

(OLD_VERSION_ESCAPED is OLD_VERSION with the dots escaped, e.g. 0\.35\.0.) Every hit below is the release version itself, so a literal replace of all occurrences is safe in each file; review the grep output once in case a new file shows up with an unrelated match.

1. Cargo.toml
toml
[workspace.package]
version = "NEW_VERSION"

Line 9 (under [workspace.package], which every crate inherits), exact match: version = "OLD_VERSION"

2. flake.nix (2 occurrences)
nix
version = "NEW_VERSION";

One in packages.default (around line 84) and one in packages.termide-static (around line 117). Both are the exact match version = "OLD_VERSION"; — use replace_all=true.

3. README.md, README.ru.md, README.zh.md (23 occurrences each)

All occurrences are release asset file names in download URLs and commands:

termide-OLD_VERSION-x86_64-unknown-linux-gnu.tar.gz   (also musl, aarch64, apple-darwin)
termide-OLD_VERSION-x86_64-pc-windows-msvc.zip
termide_OLD_VERSION-1_amd64.deb
termide-OLD_VERSION-1.x86_64.rpm

Replace all occurrences of OLD_VERSION (note the .deb uses termide_, so a termide-VERSION- pattern alone would miss it). URLs go through releases/latest/download/, so there is no version in the URL path itself.

4. doc/en/installation.md, doc/ru/installation.md, doc/zh/installation.md (16 occurrences each)

Same asset names as the READMEs; replace all occurrences.

5. packaging/aur/PKGBUILD
bash
pkgver=NEW_VERSION

Line 4, simple replacement. Reset pkgrel=1 if it was bumped.

6. packaging/aur/PKGBUILD-bin
bash
pkgver=NEW_VERSION

Line 4, simple replacement. Reset pkgrel=1 if it was bumped.

7. Cargo.lock

The workspace crates' versions in Cargo.lock follow Cargo.toml, and the AUR build uses cargo fetch --locked, so the lock file must be committed with the new version. Refresh it after editing Cargo.toml:

bash
cargo update --workspace

This touches only the workspace members' entries, not dependency versions.

Not bumped: packaging/crates-io-redirect/ is a standalone tombstone crate for the termide name on crates.io. Its version is unrelated to the release (it must exceed the crates.io maximum and is set only when that crate is republished by hand) — leave it alone. There is no Homebrew formula in the tree.

Batch Update Strategy: All files above can be updated in one pass (the version is not a substring of anything else in them):

bash
git grep -l 'OLD_VERSION_ESCAPED' -- ':!CHANGELOG.md' ':!Cargo.lock' \
  | xargs sed -i '' 's/OLD_VERSION_ESCAPED/NEW_VERSION/g'   # GNU sed: -i without ''
cargo update --workspace

Or use the Edit tool with replace_all=true per file.

Verification: After updates, grep for the old version to ensure all replaced — this must print nothing:

bash
git grep -n 'OLD_VERSION_ESCAPED' -- ':!CHANGELOG.md'

Cargo.lock is included on purpose: a leftover there means the workspace entries were not refreshed (unless a third-party dependency happens to share the old version number — check the name above any hit). Then confirm the new version landed everywhere with the expected counts (Cargo.toml 1, flake.nix 2, each README 23, each installation.md 16, each PKGBUILD 1):

bash
git grep -c 'NEW_VERSION_ESCAPED' -- ':!CHANGELOG.md' ':!Cargo.lock'
Show full SKILL.md (803 more words)Show less
Step 6: Documentation Actuality Check

After version updates, prompt user to review documentation:

📝 Documentation Review

Version numbers have been updated in:
- README.md
- README.ru.md
- README.zh.md
- doc/en/installation.md
- doc/ru/installation.md
- doc/zh/installation.md

Please review these files for content accuracy:

Required reviews (version-critical):
✅ README.md - Download links updated
✅ README.ru.md - Download links updated
✅ README.zh.md - Download links updated
✅ doc/en/installation.md - Installation steps updated
✅ doc/ru/installation.md - Installation steps updated
✅ doc/zh/installation.md - Installation steps updated

Optional reviews (feature changes):
⚠️  README.md - Features list (check if new features added)
⚠️  doc/en/*.md - Feature documentation (check if needs updates)
⚠️  doc/ru/*.md - Russian translations (check if needs updates)
⚠️  doc/zh/*.md - Chinese translations (check if needs updates)

Based on the changes analysis:
- FileManager refactoring: May need architecture.md updates (DONE)
- Session autosave: May need configuration docs update
- XDG migration: May need installation docs update

Do you want to:
1. Proceed with release (docs are current)
2. Pause to update docs manually (I'll wait)
3. Cancel release (need more work)

Use the platform's interactive prompt mechanism.

If user selects "Pause", inform them:

✋ Release paused for documentation updates.

When you're done:
- Commit documentation changes separately, OR
- Leave them uncommitted to include in release commit

Then re-run this skill to continue.
Step 7: Update CHANGELOG.md

The CHANGELOG is written for humans reading release notes, not for agents reading git history. Work from the themes produced by Step 2 synthesis, not from the raw commit log.

Read current CHANGELOG.md to determine insert position (after header, before first ## version).

Generate new section:

markdown
## [NEW_VERSION] - YYYY-MM-DD

### Added
[New user-facing capabilities — one bullet per theme, not per commit]

### Changed
[Modified behavior the user will notice — workflow, defaults, UX, perf]

### Fixed
[Bugs described as the user saw them, not as the diff fixed them]

### Removed
[Features or options no longer available — call out migration if any]

[NEW_VERSION]: https://github.com/termide/termide/releases/tag/NEW_VERSION

Writing rules:

  1. One theme = one bullet. Multiple commits that landed the same feature collapse into a single bullet. Three follow-up bugfixes for the same feature do not deserve three Fixed entries in the same release — fold them into the feature's Added/Changed bullet.

  2. Describe effect, not implementation. The reader does not know the module names. "Faster startup on large projects" beats "lazy-load tree-sitter parsers". "Cancel button now actually cancels the transfer" beats "wire OperationManager::cancel through chunk-as- command actor".

  3. Drop pure noise. Themes the synthesis pass marked as noise/dropped do not appear in the changelog at all. If a fix only matters to maintainers, it is not changelog material.

  4. Be specific where it matters. Vague entries ("various improvements", "bug fixes") are worse than nothing — either name the improvement concretely or drop the bullet. If you can't say what improved, the synthesis pass was incomplete.

  5. Call out breaking changes loudly. Either a dedicated ### Breaking Changes subsection at the top, or a **BREAKING:** prefix on the relevant bullet. Include the migration step or workaround.

  6. Past tense, declarative voice. "Added X.", "Fixed Y.". Not "This release adds X" and not "X has been added".

  7. No commit hashes, no PR numbers in the bullets themselves. Link them at the bottom of the section if useful, but keep the bullets readable for someone scanning the release notes.

Sanity-check the draft against the raw log:

  • For every dropped commit, can you justify the drop? (noise, folded, reverted, no user effect)
  • For every kept commit, is the changelog bullet more useful than the commit subject? If the bullet is just git log --oneline | sed, the synthesis didn't happen — rewrite it.
  • Is the total bullet count noticeably smaller than the commit count? If not, fold more aggressively.

Show draft to user and allow editing:

Generated CHANGELOG entry:

## [0.3.0] - 2025-12-05

### Added
- XDG Base Directory Specification support for config/data/cache
- Automatic session persistence with configurable retention
- CHANGELOG.md with full project history

### Changed
- **BREAKING:** FileManager is now a regular closable panel.
  Existing sessions will load with the default layout (2 FM panels).
- Simplified layout architecture

### Fixed
- Sessions no longer require special FileManager handling and
  serialize cleanly

Do you want to:
1. Use this changelog as-is
2. Edit it manually before proceeding
3. Regenerate with different categorization

Use the platform's interactive prompt mechanism or allow inline editing when supported.

Insert into CHANGELOG.md: Find line after # Changelog header and first blank line, insert new section.

Update version links at bottom: Add new link after existing ones:

markdown
[0.3.0]: https://github.com/termide/termide/releases/tag/0.3.0
Step 8: Post-Update Quality Checks

After all file updates, run quality checks again to ensure changes didn't break anything:

bash
cargo fmt --check
cargo clippy -- -D warnings
cargo test
cargo build --release

If any check fails:

❌ Post-update quality check failed!

The version/changelog updates may have introduced issues:
[show specific error]

This could happen if:
- Version string appears in code (not just metadata)
- CHANGELOG.md has syntax errors
- Documentation updates broke something

Please fix the issues and restart the release process.

Abort if checks fail.

Step 9: Create Release Commit

Check for uncommitted changes:

bash
git status --porcelain

Stage all changes:

bash
git add -A

Generate commit message:

Format: Conventional Commits

chore: release version NEW_VERSION

Major changes:
- [bullet point 1 from changelog Added/Changed sections]
- [bullet point 2]
- [bullet point 3 if significant breaking change]

[Footer: only if BREAKING CHANGE]
BREAKING CHANGE: [description]

Example:

chore: release version 0.3.0

Major changes:
- Add XDG Base Directory Specification support
- FileManager is now a regular panel (not fixed left panel)
- Automatic session persistence with cleanup

BREAKING CHANGE: FileManager is no longer a special fixed panel.
Existing sessions will load with default layout (2 FM panels).

Create commit:

bash
git commit -m "chore: release version NEW_VERSION

[generated body]"

Verify commit:

bash
git log -1 --oneline
git show --stat HEAD

Show to user:

✅ Release commit created:

abc1234 chore: release version 0.3.0

Files changed:
- Cargo.toml
- Cargo.lock
- flake.nix
- README.md
- README.ru.md
- README.zh.md
- doc/en/installation.md
- doc/ru/installation.md
- doc/zh/installation.md
- packaging/aur/*
- CHANGELOG.md

12 files changed, 87 insertions(+), 42 deletions(-)
Step 10: Create Git Tag

Tag format: NEW_VERSION (NO 'v' prefix)

Check if tag exists:

bash
if git rev-parse NEW_VERSION >/dev/null 2>&1; then
    # Tag exists
fi

For recreate mode:

bash
# Delete local tag
git tag -d NEW_VERSION

# Delete remote tag (if exists)
git push origin :refs/tags/NEW_VERSION 2>/dev/null || true

Create annotated tag:

bash
git tag -a NEW_VERSION -m "Release NEW_VERSION"

Verify tag:

bash
git show NEW_VERSION --no-patch

Show to user:

✅ Git tag created:

Tag: 0.3.0
Commit: abc1234 chore: release version 0.3.0
Message: Release 0.3.0
Step 11: Push and Create Release

IMPORTANT: Ask user before pushing!

🚀 Ready to Push Release

This will push to origin (github.com/termide/termide):
- Commit: abc1234 chore: release version 0.3.0
- Tag: 0.3.0

This will:
1. Push commit and tag to GitHub
2. Create GitHub Release with CHANGELOG description
3. Trigger GitHub Actions workflow which will:
   - Run quality checks (fmt, clippy, test)
   - Build cross-platform binaries (Linux x86/ARM, macOS x86/ARM)
   - Build .deb packages (Debian/Ubuntu)
   - Build .rpm packages (Fedora/RHEL)
   - Upload artifacts to the Release

Expected workflow duration: ~15-20 minutes

Do you want to push now? [yes/no]

Use the platform's interactive prompt mechanism.

If yes:

bash
# Push commit and tag
git push && git push origin NEW_VERSION

# Extract changelog section for this version
changelog_content=$(awk '/^## \[NEW_VERSION\]/{flag=1; next} /^## \[/{flag=0} flag' CHANGELOG.md)

# Create GitHub release with changelog as description
gh release create NEW_VERSION \
  --title "Release NEW_VERSION" \
  --notes "$changelog_content"

If no:

Release prepared locally but not pushed.

To push later, run:
  git push && git push origin 0.3.0
  changelog=$(awk '/^## \[0.3.0\]/{flag=1; next} /^## \[/{flag=0} flag' CHANGELOG.md)
  gh release create 0.3.0 --title "Release 0.3.0" --notes "$changelog"

To undo this release:
  git tag -d 0.3.0
  git reset --hard HEAD^
Step 12: Final Report

Show comprehensive release summary:

✅ Release 0.3.0 Created Successfully!

📦 Commit: abc1234 chore: release version 0.3.0
🏷️  Tag: 0.3.0
🚀 Pushed to: github.com/termide/termide

📊 Release Stats:
- Files updated: 12
- CHANGELOG sections: Added (3), Changed (3), Fixed (1)
- Quality checks: All passed ✅

🔗 Links:
- Release: https://github.com/termide/termide/releases/tag/0.3.0
- CI/CD Status: https://github.com/termide/termide/actions

⏱️  GitHub Actions Workflow:
The release workflow is now running. Expected completion: 15-20 minutes.

Workflow steps:
1. ✅ Trigger received (tag push)
2. ⏳ Quality checks (fmt, clippy, tests)
3. ⏳ Build binaries (4 platforms)
4. ⏳ Build .deb packages
5. ⏳ Build .rpm packages
6. ⏳ Create GitHub Release

You can monitor progress at:
https://github.com/termide/termide/actions/workflows/release.yml

📧 Notifications:
GitHub will send you an email when the release is published.

Error Handling

Uncommitted Changes at Start

If git status --porcelain shows uncommitted changes:

⚠️  Uncommitted changes detected:

M  src/main.rs
M  Cargo.toml

Options:
1. Include in release commit
2. Commit separately first (pause release)
3. Stash and continue (not recommended)
4. Cancel release
Version Tag Already Exists (non-recreate mode)
❌ Tag 0.3.0 already exists!

This tag was created: 2025-12-04 19:03:10

Options:
1. Cancel and use different version (0.3.1?)
2. Switch to recreate mode (delete and recreate tag)
3. Delete tag manually and restart release
Quality Check Failures

For any failing check, show:

❌ [Check Name] Failed

[Full error output]

Common fixes:
- cargo fmt failure: Run `cargo fmt` to fix formatting
- cargo clippy failure: Fix warnings shown above
- cargo test failure: Fix failing tests
- cargo build failure: Fix compilation errors

After fixing, restart the release process.
Network/Push Failures
❌ Failed to push to origin

Error: [git error message]

The release commit and tag are created locally but not pushed.

To retry push:
  git push && git push origin 0.3.0

To undo release:
  git tag -d 0.3.0
  git reset --hard HEAD^

Example Usage

User invokes skill by saying:

  • "Create a new release"
  • "Release a patch version"
  • "Prepare version 0.3.0"
  • "Recreate the 0.2.0 release tag"

Implementation Notes

Tools Required
  • Read - Read files for version detection and changelog
  • Edit - Update version strings in files
  • Bash - Run git commands and quality checks
  • Grep - Find version occurrences
  • Interactive prompt or input mechanism - Use it for decisions that require user confirmation
State Management
  • Track current step in workflow
  • Store user selections (version type, changelog edits)
  • Remember old and new version strings
  • Keep change analysis results
Validation
  • Validate semantic version format (X.Y.Z)
  • Check all quality checks pass before proceeding
  • Verify git tag format (no 'v' prefix)
  • Ensure conventional commit format
Safety
  • Always run quality checks BEFORE and AFTER file updates
  • Ask confirmation before destructive operations (recreate tag, push)
  • Provide undo instructions if user wants to cancel
  • Show clear diffs of what will change

Success Criteria

A successful release execution should:

  1. ✅ All quality checks pass (twice)
  2. ✅ Version updated in all 12+ files consistently
  3. ✅ CHANGELOG.md has complete entry
  4. ✅ Documentation reviewed/updated as needed
  5. ✅ Conventional commit created
  6. ✅ Annotated tag created with correct format
  7. ✅ Changes pushed to GitHub (if user confirmed)
  8. ✅ GitHub Actions workflow triggered
  9. ✅ User receives clear next steps and monitoring links

Maintenance

When updating this skill:

  • If new files need version updates, add to Step 5
  • If new quality checks needed, add to Steps 1 and 8
  • If changelog format changes, update Step 7
  • Keep file paths and line numbers accurate with project structure

© termide, MIT. 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 .agents/skills/release-management of termide/termide.

Open the folder on GitHubat commit 5c550fc

Compare with similar skills

Release Management 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 Management compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Management this skilltermide/termide171—~6.8kAutomated safety check: PassMIT
Release Crater3bl-org/r3bl-open-core485—~2.4kAutomated safety check: PassApache-2.0
Mole Release Notes Publishertw93/Mole69k—~1.9kAutomated safety check: PassGPL-3.0
Worktrunk Release Workflowmax-sixty/worktrunk8.9k—~6.9kAutomated safety check: PassCustom licence
Releasexin2017338/lynx-proxy502—~1.1kAutomated safety check: PassMIT
Prepare Releasefrozenlib/parse-display193—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • Release Crate

    r3bl-org/r3bl-open-core

    Publish a crate release to crates.io with changelog, standalone release notes, git tag, and GitHub release.

    485 GitHub stars~2.4k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    69k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Worktrunk Release Workflow

    max-sixty/worktrunk

    Walks a maintainer through cutting a Worktrunk release: sync the release branch, pass two test gates, review the changes, then publish.

    8.9k GitHub stars~6.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    xin2017338/lynx-proxy

    Publish a new release version of Lynx Proxy. An agent skill from xin2017338/lynx-proxy.

    502 GitHub stars~1.1k tokensUpdated 23 days ago
    DevelopmentAuto-check passed
  • Prepare Release

    frozenlib/parse-display

    Prepare parse-display release changes before publishing with a Rust Cargo script when nightly Cargo is available.

    193 GitHub stars~1.3k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Git Release

    wesammustafa/opencode-primer

    Draft release notes from merged PRs, propose a semver bump, and emit a copy-pasteable gh release create command.

    397 GitHub stars~409 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed

More from termide/termide

  • Refactor

    termide/termide

    Full-workspace code quality analysis and refactoring with validation

    171 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed
  • Commit

    termide/termide

    Collect uncommitted changes and create a semantic commit with a descriptive message

    171 GitHub stars~499 tokensUpdated yesterday
    Auto-check: notes

Categories

Questions about Release Management

What does Release Management do?

Prepare and publish a project release with version updates, changelog generation, tagging, and validation. Release Management is an agent skill from termide/termide.

When should I use Release Management?

Release Management fits situations like: tasks that involve Open source maintenance; tasks that involve Changelog and release notes.

How do I install Release Management in Claude Code?

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

How do I install Release Management in Codex?

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

Can I use Release Management 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 termide/termide --skill release-management -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-management, .gemini/skills/release-management, .github/skills/release-management and .opencode/skills/release-management in your project.

What does Release Management need to run?

Going by SKILL.md and its folder, Release Management needs the command-line tools its instructions call (git, cargo and gh).

Does Release Management 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 Management 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 Management use?

Release Management is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release Management use?

About 6.8k tokens (SKILL.md is roughly 27k 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 Management?

Skills that share tags, products or a category with Release Management: Release Crate (r3bl-org/r3bl-open-core, 485 stars), Mole Release Notes Publisher (tw93/Mole, 69k stars), Worktrunk Release Workflow (max-sixty/worktrunk, 8.9k stars) and Release (xin2017338/lynx-proxy, 502 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Management?

termide (a GitHub organization) maintains it in termide/termide, which has 171 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.

Source: termide/termide on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.