Skill6.1k repo starsupdated 5d ago
zcf-release
Automate version release and code commit using changeset
Install in Claude Code
Copygit clone --depth 1 https://github.com/UfoMiao/zcf /tmp/zcf-release && cp -r /tmp/zcf-release/.claude/skills/zcf-release ~/.claude/skills/zcf-releaseThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
# ZCF Release - Automated Release and Commit
Automate version release and code commit using changeset.
## Usage
```bash
/zcf-release [-p|-mi|-ma|<version>]
```
## Parameters
- `-p` or `--patch`: Patch version (default) - bug fixes, minor changes
- `-mi` or `--minor`: Minor version - new features, backward compatible
- `-ma` or `--major`: Major version - breaking changes, incompatible
- `<version>`: Specific version number (e.g., 1.2.3, 2.0.0-beta.1) - directly use provided version
## Context
- Automatically analyze code changes and generate bilingual CHANGELOG
- Use changeset for version management
- Create release branch and pull request for protected main branch
- Auto commit code changes (NO manual tags)
- Support GitHub Actions auto publish to npm with automatic tagging after PR merge
## Your Role
You are a professional release management assistant responsible for:
1. Analyzing code changes
2. Generating standardized CHANGELOG
3. Executing version release process
## Execution Flow
Parse arguments: $ARGUMENTS
### 1. Parameter Parsing
```bash
VERSION_TYPE="patch" # Default to patch version
SPECIFIC_VERSION="" # For user-specified exact version
# Check if argument looks like a version number (matches semver pattern)
if [[ "$ARGUMENTS" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-].*)?$ ]]; then
SPECIFIC_VERSION="$ARGUMENTS"
VERSION_TYPE="custom"
echo "🚀 Preparing to release exact version: $SPECIFIC_VERSION"
else
case "$ARGUMENTS" in
-p|--patch)
VERSION_TYPE="patch"
;;
-mi|--minor)
VERSION_TYPE="minor"
;;
-ma|--major)
VERSION_TYPE="major"
;;
"")
VERSION_TYPE="patch"
;;
*)
echo "❌ Unknown parameter: $ARGUMENTS"
echo "Usage: /zcf-release [-p|-mi|-ma|<version>]"
echo "Examples:"
echo " /zcf-release -p # Patch version bump"
echo " /zcf-release -mi # Minor version bump"
echo " /zcf-release -ma # Major version bump"
echo " /zcf-release 1.2.3 # Exact version"
echo " /zcf-release 2.0.0-beta.1 # Pre-release version"
exit 1
;;
esac
echo "🚀 Preparing to release $VERSION_TYPE version"
fi
```
### 2. Check Working Directory Status
Check if the current working directory meets release conditions:
```bash
# Ensure in project root directory
if [ ! -f "package.json" ]; then
echo "❌ Error: package.json not found, please run in project root"
exit 1
fi
# Check for uncommitted changes and handle automatically
HAS_UNCOMMITTED=false
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "⚠️ Detected uncommitted changes:"
git status --short
echo ""
HAS_UNCOMMITTED=true
fi
echo "✅ Working directory status OK"
```
### 3. Analyze Version Changes
Analyze all changes since last release:
```bash
# Get last release tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
echo "📊 No previous version tag found, analyzing all commits"
COMMITS=$(git log --oneline)
else
echo "📊 Last version: $LAST_TAG"
echo "Analyzing changes since $LAST_TAG..."
COMMITS=$(git log $LAST_TAG..HEAD --oneline)
fi
# Show commit history
echo -e "\n📝 Changes:"
echo "$COMMITS"
# Analyze file changes
echo -e "\n📁 File change statistics:"
if [ -z "$LAST_TAG" ]; then
git diff --stat
else
git diff --stat $LAST_TAG..HEAD
fi
```
### 4. Generate CHANGELOG Content
Based on code change analysis, I will generate CHANGELOG following these standards:
**Format Requirements**:
1. English description first, Chinese description second
2. No mixing Chinese and English on the same line
3. Organize by category: New Features, Optimization, Fixes, Documentation, etc.
4. Each entry should be concise and clear
**Example Format**:
```markdown
## New Features
- Add technical execution guidelines with command best practices
- Support automated release command /zcf-release
- Automatic quote handling for Windows paths
## 新功能
- 添加技术执行指南文档,提供命令执行最佳实践
- 支持自动化发版命令 /zcf-release
- Windows 路径自动加引号处理
## Optimization
- Prioritize ripgrep for better search performance
- Improve template file organization
## 优化
- 优先使用 ripgrep 提升搜索性能
- 改进模板文件组织结构
## Fixes
- Fix Windows path backslash escaping issue
## 修复
- 修复 Windows 路径反斜杠丢失问题
```
### 5. Create Changeset
Create changeset file based on analysis:
```bash
# Generate timestamp
TIMESTAMP=$(date +%Y%m%d%H%M%S)
CHANGESET_FILE=".changeset/release-$TIMESTAMP.md"
# Create changeset file
echo "📝 Creating changeset file..."
if [ "$VERSION_TYPE" = "custom" ]; then
# For specific version, use the exact version number
cat > "$CHANGESET_FILE" << EOF
---
"zcf": $SPECIFIC_VERSION
---
[Bilingual CHANGELOG content generated based on actual changes]
EOF
echo "✅ Changeset file created with exact version: $SPECIFIC_VERSION"
else
# For version type (patch/minor/major), use the type
cat > "$CHANGESET_FILE" << EOF
---
"zcf": $VERSION_TYPE
---
[Bilingual CHANGELOG content generated based on actual changes]
EOF
echo "✅ Changeset file created with version type: $VERSION_TYPE"
fi
```
### 6. Update Version Number
Use changeset to update version number and CHANGELOG:
```bash
echo "🔄 Updating version number and CHANGELOG..."
pnpm changeset version
# Note: The changeset version command will automatically:
# 1. Update package.json version
# 2. Generate/update CHANGELOG.md
# 3. DELETE the temporary changeset file in .changeset/ directory
# No manual cleanup needed!
# Get new version number
NEW_VERSION=$(node -p "require('./package.json').version")
if [ "$VERSION_TYPE" = "custom" ]; then
echo "📦 New version set to: v$NEW_VERSION (specified: $SPECIFIC_VERSION)"
else
echo "📦 New version: v$NEW_VERSION"
fi
# Show CHANGELOG update
echo -e "\n📋 CHANGELOG has been updated, please review the content"
echo "✅ Temporary changeset file has been automatically deleted"
```
### 7. Create Release Branch and Handle Commits
Create release branch first, then handle commitMore from this repository
typescript-cli-architectSubagent
TypeScript CLI architecture specialist for ZCF project
zcf-config-architectSubagent
Advanced configuration management and backup system architect for ZCF project
zcf-devops-engineerSubagent
Build, deployment, and release management specialist for ZCF project
zcf-i18n-specialistSubagent
Advanced i18next internationalization specialist for ZCF project
zcf-template-engineSubagent
Template system and workflow configuration specialist for ZCF project
zcf-testing-specialistSubagent
Comprehensive testing architecture specialist for ZCF project using Vitest
zcf-tools-integration-specialistSubagent
CCR, Cometix, and CCusage integration specialist for ZCF project
bmad-masterSlash Command
bmad-master agent