Skip to content
Content
Skill

/release-skills

Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, and generic projects. Use when user says "release", "发布", "new version", "bump version", "push", "推送".

BOOST
From plugin
canghe-skills
46431 skills
Install
$ npx -y skills add freestylefly/canghe-skills --skill release-skills --agent claude-code

How it fires

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

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/release-skills

Context preview

The summary Claude sees to decide when to auto-load this skill.

Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, and generic projects. Use when user says "release", "发布", "new version", "bump version", "push", "推送".

SKILL.md

release-skills.SKILL.md
name: release-skills
description: Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, and generic projects. Use when user says "release", "发布", "new version", "bump version", "push", "推送".

Release Skills

Universal release workflow supporting any project type with multi-language changelog.

Quick Start

Just run `/release-skills` - auto-detects your project configuration.

Supported Projects

| Project Type | Version File | Auto-Detected | |--------------|--------------|---------------| | Node.js | package.json | ✓ | | Python | pyproject.toml | ✓ | | Rust | Cargo.toml | ✓ | | Claude Plugin | marketplace.json | ✓ | | Generic | VERSION / version.txt | ✓ |

Options

| Flag | Description | |------|-------------| | `--dry-run` | Preview changes without executing | | `--major` | Force major version bump | | `--minor` | Force minor version bump | | `--patch` | Force patch version bump |

Workflow

Step 1: Detect Project Configuration

1. Check for `.releaserc.yml` (optional config override) 2. Auto-detect version file by scanning (priority order):

  • `package.json` (Node.js)
  • `pyproject.toml` (Python)
  • `Cargo.toml` (Rust)
  • `marketplace.json` or `.claude-plugin/marketplace.json` (Claude Plugin)
  • `VERSION` or `version.txt` (Generic)

3. Scan for changelog files using glob patterns:

  • `CHANGELOG*.md`
  • `HISTORY*.md`
  • `CHANGES*.md`

4. Identify language of each changelog by filename suffix 5. Display detected configuration

**Language Detection Rules**:

| Filename Pattern | Language | |------------------|----------| | `CHANGELOG.md` (no suffix) | en (default) | | `CHANGELOG.zh.md` / `CHANGELOG_CN.md` / `CHANGELOG.zh-CN.md` | zh | | `CHANGELOG.ja.md` / `CHANGELOG_JP.md` | ja | | `CHANGELOG.ko.md` / `CHANGELOG_KR.md` | ko | | `CHANGELOG.de.md` / `CHANGELOG_DE.md` | de | | `CHANGELOG.fr.md` / `CHANGELOG_FR.md` | fr | | `CHANGELOG.es.md` / `CHANGELOG_ES.md` | es | | `CHANGELOG.{lang}.md` | Corresponding language code |

**Output Example**:

Project detected:
  Version file: package.json (1.2.3)
  Changelogs:
    - CHANGELOG.md (en)
    - CHANGELOG.zh.md (zh)
    - CHANGELOG.ja.md (ja)

Step 2: Analyze Changes Since Last Tag

LAST_TAG=$(git tag --sort=-v:refname | head -1)
git log ${LAST_TAG}..HEAD --oneline
git diff ${LAST_TAG}..HEAD --stat

Categorize by conventional commit types:

| Type | Description | |------|-------------| | feat | New features | | fix | Bug fixes | | docs | Documentation | | refactor | Code refactoring | | perf | Performance improvements | | test | Test changes | | style | Formatting, styling | | chore | Maintenance (skip in changelog) |

**Breaking Change Detection**:

  • Commit message starts with `BREAKING CHANGE`
  • Commit body/footer contains `BREAKING CHANGE:`
  • Removed public APIs, renamed exports, changed interfaces

If breaking changes detected, warn user: "Breaking changes detected. Consider major version bump (--major flag)."

Step 3: Determine Version Bump

Rules (in priority order): 1. User flag `--major/--minor/--patch` → Use specified 2. BREAKING CHANGE detected → Major bump (1.x.x → 2.0.0) 3. `feat:` commits present → Minor bump (1.2.x → 1.3.0) 4. Otherwise → Patch bump (1.2.3 → 1.2.4)

Display version change: `1.2.3 → 1.3.0`

Step 4: Generate Multi-language Changelogs

For each detected changelog file:

1. **Identify language** from filename suffix 2. **Detect third-party contributors**:

  • Check merge commits: `git log ${LAST_TAG}..HEAD --merges --pretty=format:"%H %s"`
  • For each merged PR, identify the PR author via `gh pr view <number> --json author --jq '.author.login'`
  • Compare against repo owner (`gh repo view --json owner --jq '.owner.login'`)
  • If PR author ≠ repo owner → third-party contributor

3. **Generate content in that language**:

  • Section titles in target language
  • Change descriptions written naturally in target language (not translated)
  • Date format: YYYY-MM-DD (universal)
  • **Third-party contributions**: Append contributor attribution `(by @username)` to the changelog entry

4. **Insert at file head** (preserve existing content)

**Section Title Translations** (built-in):

| Type | en | zh | ja | ko | de | fr | es | |------|----|----|----|----|----|----|-----| | feat | Features | 新功能 | 新機能 | 새로운 기능 | Funktionen | Fonctionnalités | Características | | fix | Fixes | 修复 | 修正 | 수정 | Fehlerbehebungen | Corrections | Correcciones | | docs | Documentation | 文档 | ドキュメント | 문서 | Dokumentation | Documentation | Documentación | | refactor | Refactor | 重构 | リファクタリング | 리팩토링 | Refactoring | Refactorisation | Refactorización | | perf | Performance | 性能优化 | パフォーマンス | 성능 | Leistung | Performance | Rendimiento | | breaking | Breaking Changes | 破坏性变更 | 破壊的変更 | 주요 변경사항 | Breaking Changes | Changements majeurs | Cambios importantes |

**Changelog Format**:

## {VERSION} - {YYYY-MM-DD}

### Features
- Description of new feature
- Description of third-party contribution (by @username)

### Fixes
- Description of fix

### Documentation
- Description of docs changes

Only include sections that have changes. Omit empty sections.

**Third-Party Attribution Rules**:

  • Only add `(by @username)` for contributors who are NOT the repo owner
  • Use GitHub username with `@` prefix
  • Place at the end of the changelog entry line
  • Apply to all languages consistently (always use `(by @username)` format, not translated)

**Multi-language Example**:

English (CHANGELOG.md):

## 1.3.0 - 2026-01-22

### Features
- Add user authentication module (by @contributor1)
- Support OAuth2 login

### Fixes
- Fix memory leak in connection pool

Chinese (CHANGELOG.zh.md):

## 1.3.0 - 2026-01-22

### 新功能
- 新增用户认证模块 (by @contributor1)
- 支持 OAuth2 登录

### 修复
- 修复连接池内存泄漏问题

Japanese (CHANGELOG.ja.md):

## 1.3.0 - 2026-01-22

### 新機能
- ユーザー認証モジュールを追加 (by @contributor1)
- OAuth2
Read more
Ships withcanghe-skills

Skills shared by Canghe for improving daily work efficiency with Claude Code.

Get the whole plugin

Other skills on canghe-skills.