Skip to content
Development
Command

/release

Production-ready release orchestrator with semantic versioning, changelog generation, and multi-platform distribution

From plugin
claude-cmd
313180 skills180 commands

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/release

Context preview

What this command does when you run it.

Production-ready release orchestrator with semantic versioning, changelog generation, and multi-platform distribution

Command definition

release.md
allowed-tools: Task, Read, Write, Edit, MultiEdit, Bash(git:*), Bash(gh:*), Bash(npm:*), Bash(cargo:*), Bash(go:*), Bash(mvn:*), Bash(gradle:*), Bash(deno:*), Bash(docker:*), Bash(jq:*), Bash(gdate:*), Bash(fd:*), Bash(rg:*), Bash(bat:*)
name: "Release"
description: "Production-ready release orchestrator with semantic versioning, changelog generation, and multi-platform distribution"
author: "wcygan"
tags: ["workflow","manage"]
version: "1.0.0"
created_at: "2025-07-14T00:00:00Z"
updated_at: "2025-07-14T00:00:00Z"

Context

  • Session ID: !`gdate +%s%N 2>/dev/null || date +%s%N 2>/dev/null || echo "$(date +%s)$(jot -r 1 100000 999999 2>/dev/null || shuf -i 100000-999999 -n 1 2>/dev/null || echo $RANDOM$RANDOM)"`
  • Target release: $ARGUMENTS
  • Current directory: !`pwd`
  • Git status: !`git status --porcelain`
  • Current branch: !`git branch --show-current`
  • Latest tag: !`git describe --tags --abbrev=0 2>/dev/null || echo "No tags found"`
  • Uncommitted changes: !`git diff --name-only HEAD | wc -l | tr -d ' '` files
  • Recent commits: !`git log --oneline -5 --format="%h %s"`
  • Project structure: !`fd "(package\.json|Cargo\.toml|go\.mod|pom\.xml|build\.gradle|deno\.json)" . -d 2 | head -5 || echo "No build files detected"`
  • Release tools status: !`echo "git: $(which git >/dev/null && echo ✓ || echo ✗) | gh: $(which gh >/dev/null && echo ✓ || echo ✗) | docker: $(which docker >/dev/null && echo ✓ || echo ✗) | jq: $(which jq >/dev/null && echo ✓ || echo ✗)"`

Your Task

STEP 1: Initialize comprehensive release session and validate environment

  • CREATE session state file: `/tmp/release-session-$SESSION_ID.json`
  • VALIDATE working directory is clean (no uncommitted changes)
  • CONFIRM current branch is main/master or release branch
  • CHECK required tools availability (git, gh, build tools)
  • DETECT project type and build system from Context section
# Initialize release session state
echo '{
  "sessionId": "'$SESSION_ID'",
  "targetRelease": "'$ARGUMENTS'",
  "projectType": "auto-detect",
  "currentVersion": null,
  "nextVersion": null,
  "releaseType": "auto-detect",
  "changelogGenerated": false,
  "assetsBuilt": false,
  "published": false
}' > /tmp/release-session-$SESSION_ID.json

STEP 2: Intelligent version analysis and semantic versioning strategy

TRY:

**Version Detection and Analysis:**

# Extract current version from project files
current_version=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.0.0")
echo "📋 Current version detected: $current_version"

# Analyze commits since last release for semantic versioning
latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [[ -n "$latest_tag" ]]; then
  commits_since_tag=$(git log $latest_tag..HEAD --oneline)
  echo "📝 Commits since $latest_tag:"
  echo "$commits_since_tag"
else
  echo "📝 No previous tags found - preparing initial release"
fi

**Semantic Version Bump Analysis:**

CASE commit_analysis: WHEN "breaking_changes_detected":

  • DETERMINE major version bump (X.0.0)
  • IDENTIFY breaking changes from commit messages
  • FLAG need for migration guide generation

WHEN "new_features_detected":

  • DETERMINE minor version bump (X.Y.0)
  • EXTRACT feature list from conventional commits
  • PREPARE feature highlighting for release notes

WHEN "bug_fixes_only":

  • DETERMINE patch version bump (X.Y.Z)
  • COMPILE bug fix list for changelog
  • FOCUS on stability and reliability messaging

STEP 3: Parallel changelog generation and release notes creation

IF project_complexity == "large" OR commit_count > 50:

LAUNCH parallel sub-agents for comprehensive changelog generation:

  • **Agent 1: Commit Analysis**: Parse all commits since last release, categorize by conventional commit types
  • Focus: feat, fix, docs, style, refactor, perf, test, chore patterns
  • Tools: git log parsing, conventional commit validation
  • Output: Categorized commit manifest with issue linking
  • **Agent 2: Breaking Changes Assessment**: Identify breaking changes and API modifications
  • Focus: BREAKING CHANGE footers, exclamation marks in types, API removals
  • Tools: git diff analysis, API surface comparison
  • Output: Breaking changes summary with migration requirements
  • **Agent 3: Security & Dependency Updates**: Track security fixes and dependency updates
  • Focus: Security patches, vulnerability fixes, dependency upgrades
  • Tools: Dependency file analysis, commit message scanning
  • Output: Security update summary and impact assessment
  • **Agent 4: Performance & Optimization**: Catalog performance improvements and optimizations
  • Focus: Performance commits, optimization changes, benchmark improvements
  • Tools: Performance-related commit analysis
  • Output: Performance improvement summary

ELSE:

EXECUTE streamlined changelog generation:

# Generate structured changelog from git history
echo "📝 Generating changelog from git history..."

# Extract commits by type using conventional commit format
git log $latest_tag..HEAD --pretty=format:"%s" | while read commit; do
  if [[ $commit =~ ^feat(\(.+\))?: ]]; then
    echo "### Added" >> /tmp/changelog-$SESSION_ID.md
    echo "- ${commit#feat*: }" >> /tmp/changelog-$SESSION_ID.md
  elif [[ $commit =~ ^fix(\(.+\))?: ]]; then
    echo "### Fixed" >> /tmp/changelog-$SESSION_ID.md
    echo "- ${commit#fix*: }" >> /tmp/changelog-$SESSION_ID.md
  elif [[ $commit =~ ^docs(\(.+\))?: ]]; then
    echo "### Documentation" >> /tmp/changelog-$SESSION_ID.md
    echo "- ${commit#docs*: }" >> /tmp/changelog-$SESSION_ID.md
  fi
done

STEP 4: Multi-language version updates with comprehensive build file management

CASE detected_project_type: WHEN "rust":

# Update Cargo.toml version
echo "🦀 Updating Rust project version to $next_version"
sed -i.bak "s/^version = \".*\"/version = \"$next_version\"/" Cargo.toml

# Update any version constants in source
if fd "version\.rs|main\.rs|lib\.rs" src/ | head -1 >/dev/null; then
  rg "const VERSION
Read more
Ships withclaude-cmd

A lightweight (~46kB) and comprehensive CLI tool for managing Claude commands, configurations, and workflows.

Get the whole plugin