home / skills / questnova502 / claude-skills-sync / release-skills

release-skills skill

/skills/release-skills

This skill automates the release process for baoyu-skills by updating changelogs, bumping version, committing, and tagging.

npx playbooks add skill questnova502/claude-skills-sync --skill release-skills

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
5.8 KB
---
name: release-skills
description: Release workflow for baoyu-skills plugin. Use when user says "release", "发布", "push", "推送", "new version", "新版本", "bump version", "更新版本", or wants to publish changes to remote. Analyzes changes since last tag, updates CHANGELOG (EN/CN), bumps marketplace.json version, commits, and creates version tag. MUST be used before any git push with uncommitted skill changes.
---

# Release Skills

Automate the release process for baoyu-skills plugin: analyze changes, update changelogs, bump version, commit, and tag.

## CRITICAL: Mandatory Release Checklist

**NEVER skip these steps when releasing:**

1. ✅ Update `CHANGELOG.md` (English)
2. ✅ Update `CHANGELOG.zh.md` (Chinese)
3. ✅ Update `marketplace.json` version
4. ✅ Update `README.md` / `README.zh.md` if needed
5. ✅ Commit all changes together
6. ✅ Create version tag

**If user says "直接 push" or "just push" - STILL follow all steps above first!**

## When to Use

Trigger this skill when user requests:
- "release", "发布", "create release", "new version"
- "bump version", "update version"
- "prepare release"
- "push to remote" (with uncommitted changes)

## Workflow

### Step 1: Analyze Changes Since Last Tag

```bash
# Get the latest version tag
LAST_TAG=$(git tag --sort=-v:refname | head -1)

# Show changes since last tag
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --stat
```

Categorize changes by type based on commit messages and file changes:

| Type | Prefix | Description |
|------|--------|-------------|
| feat | `feat:` | New features, new skills |
| fix | `fix:` | Bug fixes |
| docs | `docs:` | Documentation only |
| refactor | `refactor:` | Code refactoring |
| style | `style:` | Formatting, styling |
| chore | `chore:` | Build, tooling, maintenance |

**Breaking Change Detection**: If changes include:
- Removed skills or scripts
- Changed API/interfaces
- Renamed public functions/options

Warn user: "Breaking changes detected. Consider major version bump (--major flag)."

### Step 2: Determine Version Bump

Current version location: `.claude-plugin/marketplace.json` → `metadata.version`

Version rules:
- **Patch** (0.6.1 → 0.6.2): Bug fixes, docs updates, minor improvements
- **Minor** (0.6.x → 0.7.0): New features, new skills, significant enhancements
- **Major** (0.x → 1.0): Breaking changes, only when user explicitly requests with `--major`

Default behavior:
- If changes include `feat:` or new skills → Minor bump
- Otherwise → Patch bump

### Step 3: Check and Update README

Before updating changelogs, check if README files need updates based on changes:

**When to update README**:
- New skills added → Add to skill list
- Skills removed → Remove from skill list
- Skill renamed → Update references
- New features affecting usage → Update usage section
- Breaking changes → Update migration notes

**Files to sync**:
- `README.md` (English)
- `README.zh.md` (Chinese)

If changes include new skills or significant feature changes, update both README files to reflect the new capabilities. Keep both files in sync with the same structure and information.

### Step 4: Update Changelogs

Files to update:
- `CHANGELOG.md` (English)
- `CHANGELOG.zh.md` (Chinese)

Format (insert after header, before previous version):

```markdown
## {NEW_VERSION} - {YYYY-MM-DD}

### Features
- `skill-name`: description of new feature

### Fixes
- `skill-name`: description of fix

### Documentation
- description of docs changes

### Other
- description of other changes
```

Only include sections that have changes. Omit empty sections.

For Chinese changelog, translate the content maintaining the same structure.

### Step 5: Update marketplace.json

Update `.claude-plugin/marketplace.json`:
```json
{
  "metadata": {
    "version": "{NEW_VERSION}"
  }
}
```

### Step 6: Commit Changes

```bash
git add README.md README.zh.md CHANGELOG.md CHANGELOG.zh.md .claude-plugin/marketplace.json
git commit -m "chore: release v{NEW_VERSION}"
```

**Note**: Do NOT add Co-Authored-By line. This is a release commit, not a code contribution.

### Step 7: Create Version Tag

```bash
git tag v{NEW_VERSION}
```

**Important**: Do NOT push to remote. User will push manually when ready.

## Options

| Flag | Description |
|------|-------------|
| `--dry-run` | Preview changes without executing. Show what would be updated. |
| `--major` | Force major version bump (0.x → 1.0 or 1.x → 2.0) |
| `--minor` | Force minor version bump |
| `--patch` | Force patch version bump |
| `--pre <tag>` | (Reserved) Create pre-release version, e.g., `--pre beta` → `0.7.0-beta.1` |

## Dry-Run Mode

When `--dry-run` is specified:
1. Show all changes since last tag
2. Show proposed version bump (current → new)
3. Show draft changelog entries (EN and CN)
4. Show files that would be modified
5. Do NOT make any actual changes

Output format:
```
=== DRY RUN MODE ===

Last tag: v0.6.1
Proposed version: v0.7.0

Changes detected:
- feat: new skill baoyu-foo added
- fix: baoyu-bar timeout issue
- docs: updated README

Changelog preview (EN):
## 0.7.0 - 2026-01-17
### Features
- `baoyu-foo`: new skill for ...
### Fixes
- `baoyu-bar`: fixed timeout issue

README updates needed: Yes/No
(If yes, show proposed changes)

Files to modify:
- README.md (if updates needed)
- README.zh.md (if updates needed)
- CHANGELOG.md
- CHANGELOG.zh.md
- .claude-plugin/marketplace.json

No changes made. Run without --dry-run to execute.
```

## Example Usage

```
/release-skills              # Auto-detect version bump
/release-skills --dry-run    # Preview only
/release-skills --minor      # Force minor bump
/release-skills --major      # Force major bump (with confirmation)
```

## Post-Release Reminder

After successful release, remind user:
```
Release v{NEW_VERSION} created locally.

To publish:
  git push origin main
  git push origin v{NEW_VERSION}
```

Overview

This skill automates the release workflow for the baoyu-skills plugin. It inspects changes since the last git tag, updates English and Chinese changelogs, bumps the version in .claude-plugin/marketplace.json, commits the updates, and creates a local version tag. Use it before any git push that would publish uncommitted or untagged release changes.

How this skill works

The skill scans commits and diffs since the latest tag to categorize changes (feat, fix, docs, refactor, style, chore) and detects breaking changes that may require a major bump. It determines a version bump (patch/minor/major) by rules and optional flags, drafts changelog entries in English and Chinese, checks README files for required updates, updates marketplace.json, commits all release files together, and creates a local git tag. A --dry-run option previews every step and shows the proposed changelog, files to modify, and the new version without making changes.

When to use it

  • When you say release / 发布 / create release / new version
  • When you need to bump version or update package for publishing
  • Before pushing to remote if there are uncommitted or untagged changes
  • When adding new skills or making feature changes
  • When fixing bugs and preparing a release package

Best practices

  • Always run without --dry-run first in dry-run mode to review proposed changes
  • Keep commit messages prefixed (feat:, fix:, docs:, refactor:, style:, chore:) to improve automatic categorization
  • Update README.md and README.zh.md in the same commit when features change
  • Do not push to remote until you verify the local tag and commit; the tool creates a local tag only
  • Use --major only when you intentionally introduce breaking changes and confirm the bump

Example use cases

  • Auto-detect and create a v0.7.0 release after adding new skills and docs updates
  • Run --dry-run to preview changelogs and files modified before committing
  • Force a patch bump after small bug fixes with /release-skills --patch
  • Prepare a release candidate with --minor after adding several features
  • Detect breaking API changes and prompt for an explicit --major bump

FAQ

Will this push tags or commits to the remote?

No. The skill commits and tags locally. You must run git push origin main and git push origin v{NEW_VERSION} manually.

How does it decide patch vs minor vs major?

Default rules: feat/new skills → minor; bug fixes/docs → patch; breaking changes require an explicit --major flag.