Skip to content
Back to skills

Release

ASecurity

Release automation skill for version bumping and tagging. Use when creating a new release, bumping version, tagging release, pushing release tag, or synchronizing version numbers across files. Handles package.json, README.md, SKILL.md, Dockerfile, and docker-compose files.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
devopsbashdockergitapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add madeinoz67/madeinoz-knowledge-system --skill release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Release
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/madeinoz67-release/badge)](https://www.skillsdirectory.com/skills/madeinoz67-release)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: release
description: Release automation skill for version bumping and tagging. Use when creating a new release, bumping version, tagging release, pushing release tag, or synchronizing version numbers across files. Handles package.json, README.md, SKILL.md, Dockerfile, and docker-compose files.
---

# Release Automation Skill

## Purpose

Automate the release process for the Madeinoz Knowledge System, including version synchronization across all files, git tagging, and triggering the CI workflow.

## When to Use

Use this skill when:
- Creating a new release (major, minor, or patch version)
- Bumping the version number
- Tagging a release commit
- Pushing a release to trigger CI workflow
- Synchronizing version numbers across multiple files

## Version Sync Locations

The following files MUST be updated with the new version:

### Primary Version Files

1. **package.json** (line 3)
   ```json
   "version": "X.Y.Z"
   ```

2. **docker/Dockerfile** (line 8)
   ```dockerfile
   LABEL version="X.Y.Z"
   ```

3. **README.md** (line 6)
   ```yaml
   pack-id: madeinoz67-madeinoz-knowledge-system-core-vX.Y.Z
   ```

4. **src/skills/SKILL.md** (line 3)
   ```yaml
   version: X.Y.Z
   ```

### Production Docker Compose (Manual Update)

5. **src/skills/server/docker-compose-production.yml** (line 85)
   ```yaml
   image: ghcr.io/madeinoz67/madeinoz-knowledge-system:X.Y.Z
   ```

**Note:** All other docker-compose files use `:latest` tag and do NOT need updates.

### Do NOT Edit

- **CHANGELOG.md** - Auto-generated by git-cliff workflow
- Modifying this file will conflict with automated changelog generation

## Pre-Release Checklist

Before creating a release, verify:

```bash
# 1. Check you're on main branch
git branch --show-current  # Should output: main

# 2. Pull latest changes
git pull origin main

# 3. Verify working tree is clean (no uncommitted changes)
git status  # Should show: "nothing to commit, working tree clean"

# 4. Verify latest CI passed
gh run list --limit 1  # Check status is "completed success"
```

## Release Workflow

### Step 1: Update Version Numbers

Manually edit the version files listed above. For example, bumping from `1.8.0` to `1.9.0`:

```bash
# Edit package.json
# Edit docker/Dockerfile
# Edit README.md
# Edit src/skills/SKILL.md
# Edit src/skills/server/docker-compose-production.yml
```

### Step 2: Commit Version Changes

```bash
git add package.json docker/Dockerfile README.md src/skills/SKILL.md src/skills/server/docker-compose-production.yml
git commit -m "chore: bump version to X.Y.Z"
```

### Step 3: Create Annotated Tag

```bash
# Single-line description
git tag -a vX.Y.Z -m "Release vX.Y.Z"

# OR multi-line description (opens editor)
git tag -a vX.Y.Z
```

In the editor, use this format:
```
Release X.Y.Z

Summary of what's in this release:
- Feature one
- Bug fix two
- Improvement three
```

### Step 4: Push Tag to Trigger CI

```bash
git push origin vX.Y.Z
```

This triggers the CI workflow which:
- Generates changelog from git-cliff
- Updates CHANGELOG.md on main branch
- Builds and pushes multi-arch Docker image to GHCR
- Creates GitHub Release with formatted release notes
- Deploys documentation to GitHub Pages

## Verification

After pushing the tag:

```bash
# Watch workflow run
gh run watch

# Confirm release created
gh release view vX.Y.Z

# Verify Docker image on GHCR
# https://github.com/madeinoz67/madeinoz-knowledge-system/pkgs/container/madeinoz-knowledge-system
```

## Common Pitfalls

### DO NOT Use `gh release create` Directly

❌ **Wrong:** `gh release create vX.Y.Z --notes "Release notes"`

This creates the tag via GitHub API without triggering the CI workflow. The release job will never run, leaving a broken release (no Docker image pushed, no docs deployed).

✅ **Correct:** `git push origin vX.Y.Z`

This triggers the `push` event for the tag, which runs the CI workflow.

### DO NOT Edit CHANGELOG.md

❌ **Wrong:** Manually editing CHANGELOG.md

This file is auto-generated by git-cliff during the CI workflow. Manual edits will be overwritten.

✅ **Correct:** Use conventional commit messages. The changelog is generated from commit history.

### Version Inconsistency

Ensure all version files use the exact same version string:
- package.json: `"version": "1.9.0"`
- Dockerfile: `LABEL version="1.9.0"`
- README.md: `pack-id: madeinoz67-madeinoz-knowledge-system-core-v1.9.0"`
- SKILL.md: `version: 1.9.0`

### Production Compose Version

The `docker-compose-production.yml` file pins specific versions. Remember to update this file when releasing, as it's used for production deployments.

## Release Types

| Type | Example | When |
|------|---------|------|
| **Major** | 1.8.0 → 2.0.0 | Breaking changes |
| **Minor** | 1.8.0 → 1.9.0 | New features, backward compatible |
| **Patch** | 1.8.0 → 1.8.1 | Bug fixes, small improvements |

## Quick Reference

```bash
# Full release workflow (replace X.Y.Z with actual version)
# 1. Edit version files
vim package.json docker/Dockerfile README.md src/skills/SKILL.md src/skills/server/docker-compose-production.yml

# 2. Commit changes
git add package.json docker/Dockerfile README.md src/skills/SKILL.md src/skills/server/docker-compose-production.yml
git commit -m "chore: bump version to X.Y.Z"

# 3. Create annotated tag
git tag -a vX.Y.Z -m "Release vX.Y.Z"

# 4. Push tag to trigger CI
git push origin vX.Y.Z

# 5. Verify
gh run watch
gh release view vX.Y.Z
```

## Related Documentation

- [CLAUDE.md](../../CLAUDE.md) - Release checklist (critical section)
- [.github/workflows/ci.yml](../../.github/workflows/ci.yml) - CI workflow definition
- [docs/reference/releases.md](../../docs/reference/releases.md) - Release documentation

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.