Get the FREE Ultimate OpenClaw Setup Guide →

release

npx machina-cli add skill madeinoz67/madeinoz-knowledge-system/release --openclaw
Files (1)
SKILL.md
5.6 KB

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)

    "version": "X.Y.Z"
    
  2. docker/Dockerfile (line 8)

    LABEL version="X.Y.Z"
    
  3. README.md (line 6)

    pack-id: madeinoz67-madeinoz-knowledge-system-core-vX.Y.Z
    
  4. src/skills/SKILL.md (line 3)

    version: X.Y.Z
    

Production Docker Compose (Manual Update)

  1. src/skills/server/docker-compose-production.yml (line 85)
    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:

# 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:

# 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

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

# 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

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:

# 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

TypeExampleWhen
Major1.8.0 → 2.0.0Breaking changes
Minor1.8.0 → 1.9.0New features, backward compatible
Patch1.8.0 → 1.8.1Bug fixes, small improvements

Quick Reference

# 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

Source

git clone https://github.com/madeinoz67/madeinoz-knowledge-system/blob/main/.claude/skills/release/SKILL.mdView on GitHub

Overview

Automates version bumps, git tagging, and CI-triggered releases for the Madeinoz Knowledge System. Keeps version numbers in sync across package.json, docker/Dockerfile, README.md, SKILL.md, and production docker-compose. Enables smooth, repeatable release cycles.

How This Skill Works

The skill updates all designated version files to the new X.Y.Z, commits the changes, creates an annotated git tag (vX.Y.Z), and pushes the tag to trigger the CI workflow which builds images, updates changelogs, and deploys docs.

When to Use It

  • 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

Quick Start

  1. Step 1: Update version numbers in package.json, docker/Dockerfile, README.md, src/skills/SKILL.md, and src/skills/server/docker-compose-production.yml
  2. Step 2: Commit changes: git add ...; git commit -m "chore: bump version to X.Y.Z"
  3. Step 3: Create annotated tag and push to trigger CI: git tag -a vX.Y.Z -m "Release vX.Y.Z"; git push origin vX.Y.Z

Best Practices

  • Update all listed version files consistently (package.json, docker/Dockerfile, README.md, src/skills/SKILL.md, and src/skills/server/docker-compose-production.yml)
  • Use an annotated git tag with a descriptive message
  • Commit changes before tagging
  • Push the tag to origin to trigger the CI workflow rather than pushing a regular commit
  • Do not manually edit CHANGELOG.md; let the automated workflow generate it

Example Use Cases

  • Bump from 1.8.0 to 1.9.0 across package.json, Dockerfile, README.md, SKILL.md, and production docker-compose
  • Bump patch 1.9.0 to 1.9.1 and prepare release
  • Create annotated tag v1.9.1 and push to origin to trigger CI
  • CI runs, changelog is generated, and Docker image is built
  • Verify release notes appear and docs are deployed

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers