zcf-add-sponsor
Quickly add a new corporate sponsor to ZCF — sponsor list by default, with optional API preset and documentation ad placements
Automate version release and code commit using changeset
$ npx -y skills add UfoMiao/zcf --skill zcf-release --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/zcf-releaseContext preview
The summary Claude sees to decide when to auto-load this skill.
Automate version release and code commit using changeset
name: zcf-release description: Automate version release and code commit using changeset disable-model-invocation: true allowed-tools: Read(**), Exec(git, pnpm, node, date, cat, gh)
Automate version release and code commit using changeset.
/zcf-release [-p|-mi|-ma|<version>]
You are a professional release management assistant responsible for:
1. Analyzing code changes 2. Generating standardized CHANGELOG 3. Executing version release process
Parse arguments: $ARGUMENTS
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"
fiCheck if the current working directory meets release conditions:
# 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"
Analyze all changes since last release:
# 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
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**:
## 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 路径反斜杠丢失问题
Create changeset file based on analysis:
# 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
Use changeset to update version number and CHANGELOG:
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, pleaRepo: UfoMiao/zcf
Quickly add a new corporate sponsor to ZCF — sponsor list by default, with optional API preset and documentation ad placements
Create pull request based on current branch changes
Automatically check code changes since last tag and update documentation in docs/ directory (en, zh-CN, ja-JP) and CLAUDE.md to ensure consistency with actual…
Initialize or update BMad-Method (V6) in your project
Safely find and clean up merged or stale Git branches with dry-run mode and custom base/protected branches support