Agent Skills: Create Release

Create a versioned release of claudecode_webui — bump version fields, update CHANGELOG.md, tag the commit, push, and create the GitHub Release.

UncategorizedID: edanstarfire/claudecode_webui/create-release

Install this agent skill to your local

pnpm dlx add-skill https://github.com/EdanStarfire/claudecode_webui/tree/HEAD/.claude/skills/create-release

Skill Files

Browse the full folder contents for create-release.

Download Skill

Loading file tree…

.claude/skills/create-release/SKILL.md

Skill Metadata

Name
create-release
Description
Create a versioned release of claudecode_webui — bump version fields, update CHANGELOG.md, tag the commit, push, and create the GitHub Release.

Create Release

Purpose

Tag a stable commit on main as an official release of claudecode_webui, update the changelog, and publish a GitHub Release so self-hosters know a stable baseline exists.

This skill is for repository management only — it has no effect on running app instances.

Arguments

  • <version> — required. The version number to release, without the v prefix. Examples: 1.0.0, 1.1.0, 1.0.3.
  • [notes hint] — optional. A one-sentence theme for this release (e.g. "navigation reliability fixes"). Used to frame the CHANGELOG entry if no detailed notes are supplied interactively.

Versioning Scheme (SemVer)

MAJOR.MINOR.PATCH

| Segment | When to bump | Examples | |---------|-------------|---------| | PATCH | Bug fixes, polish, dependency bumps with no behavior change | :8001 crash fix, message contamination fix, tint colour tweak | | MINOR | New backward-compatible features | Message Queue improvements, Legion minion tree, MCP OAuth support | | MAJOR | Breaking changes requiring user action to upgrade | Docker setup change, DB schema migration, config format change, renamed env vars |

Pre-1.0 (0.x.y) signals unstable API; 1.0.0 signals the project is self-hostable and intentionally stable.

Pre-Release Checklist

Run these before starting. Stop and resolve any failures.

# Must be on main
git branch --show-current

# Must be clean (no uncommitted changes)
git status --short

# Must be up to date with remote
git fetch origin && git status -sb | head -1

# Confirm all intended PRs are merged
gh pr list --repo EdanStarfire/claudecode_webui --state open

If there are open PRs that belong in this release, merge them first.

Step-by-Step Process

1. Confirm the version

Decide which SemVer segment to bump (see table above). The new version is <MAJOR>.<MINOR>.<PATCH> — no v prefix in the files, v prefix on the tag.

2. Update version fields in source files

Two files track the version number:

pyproject.toml — Python backend:

version = "<new-version>"

frontend/package.json — Vue frontend:

"version": "<new-version>",

Edit both. Do NOT edit frontend/package-lock.json — npm install regenerates it; the version field there updates when the user next runs npm install, which is fine.

3. Update CHANGELOG.md

The changelog lives at the project root: CHANGELOG.md.

Format — Keep a Changelog:

# Changelog

All notable changes to claudecode_webui are documented here.
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [<version>] - <YYYY-MM-DD>

### Added
- Brief description of new features

### Changed
- Behaviour changes, dependency updates, refactors visible to users

### Fixed
- Bug fixes (reference issue numbers where helpful, e.g. "Fix #1511 — …")

### Removed
- Removed features or deprecated items

[<version>]: https://github.com/EdanStarfire/claudecode_webui/releases/tag/v<version>

Rules:

  • Newest release always appears at the top, below ## [Unreleased].
  • Keep ## [Unreleased] as an empty placeholder for ongoing work.
  • Use plain English — describe user-visible impact, not internal implementation details.
  • Omit sections that have no entries for this release.
  • Reference issue numbers for bug fixes (Fix #1511).

First release (v1.0.0): Create CHANGELOG.md from scratch. Summarise the project's major capabilities (not every commit) — aim for 15–30 bullet points covering the notable features shipped since the project started. Use closed issues and merged PRs for reference:

gh pr list --repo EdanStarfire/claudecode_webui --state merged --limit 50 \
  --json number,title,mergedAt | jq 'sort_by(.mergedAt) | reverse | .[] | "#\(.number) \(.title)"'

Subsequent releases: Add only changes since the previous tag:

git log v<previous>..HEAD --oneline --merges | head -40
gh pr list --repo EdanStarfire/claudecode_webui --state merged \
  --search "merged:>$(git log v<previous> -1 --format=%aI)" \
  --json number,title --jq '.[] | "#\(.number) \(.title)"'

4. Commit the version bump and changelog

Stage only the version files and changelog — do not accidentally include unrelated uncommitted work:

git add pyproject.toml frontend/package.json CHANGELOG.md
git status  # verify only the right files are staged
git commit -m "chore: release v<version>

Update version fields and changelog for v<version>."

5. Create the annotated tag

Annotated tags carry a message and appear properly in GitHub Releases:

git tag -a v<version> -m "Release v<version>"

6. Push the commit and tag

git push origin main
git push origin v<version>

Verify the tag appears on GitHub:

gh api repos/EdanStarfire/claudecode_webui/git/refs/tags | jq '.[-1]'

7. Create the GitHub Release

gh release create v<version> \
  --repo EdanStarfire/claudecode_webui \
  --title "v<version>" \
  --notes-file <(sed -n '/^## \[<version>\]/,/^## \[/p' CHANGELOG.md | head -n -1)

This extracts the relevant CHANGELOG section and uses it as the release body. GitHub automatically attaches a source .zip and .tar.gz — no manual artifact upload is needed for a source-only release.

Verify the release was created:

gh release view v<version> --repo EdanStarfire/claudecode_webui

8. Confirm and report

After the release is published:

  • Report the release URL to the user: https://github.com/EdanStarfire/claudecode_webui/releases/tag/v<version>
  • Confirm the tag, release page, and source archives are visible
  • Note that self-hosters can now pin to v<version> via git checkout v<version>

Ongoing Release Cadence

There is no fixed schedule. A release is appropriate when:

  • A meaningful batch of user-visible fixes or features has accumulated on main
  • A critical bug fix needs to be clearly marked for self-hosters to find
  • A breaking change requires users to take action on upgrade

Releases do not need to be frequent — monthly or on significant milestones is fine. Every commit to main is already stable (squash-merged PRs); tagging is about communicating intentional stable points, not gatekeeping code quality.

What NOT to do

  • Do not tag a commit that has failing tests or a known broken state.
  • Do not skip the CHANGELOG update — it is the human-readable record self-hosters rely on.
  • Do not use lightweight tags (git tag v1.0.0) — always use annotated tags (git tag -a).
  • Do not force-push or move a published tag — if a tag was pushed with an error, create a new patch release instead.