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", "推送".
- Skill ID
- freestylefly/canghe-skills/release-skills
- Publisher
- freestylefly
- Repository
- canghe-skills
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
freestylefly/canghe-skills/release-skillsInstalls these files- SKILL.md
What this skill tells the agent
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
- Check for
.releaserc.yml(optional config override) - Auto-detect version file by scanning (priority order):
package.json(Node.js)pyproject.toml(Python)Cargo.toml(Rust)marketplace.jsonor.claude-plugin/marketplace.json(Claude Plugin)VERSIONorversion.txt(Generic)
- Scan for changelog files using glob patterns:
CHANGELOG*.mdHISTORY*.mdCHANGES*.md
- Identify language of each changelog by filename suffix
- 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 --statCategorize 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):
- User flag
--major/--minor/--patch→ Use specified - BREAKING CHANGE detected → Major bump (1.x.x → 2.0.0)
feat:commits present → Minor bump (1.2.x → 1.3.0)- 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:
- Identify language from filename suffix
- 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
- 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
- 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 changesOnly 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 poolChinese (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 ログインをサポート
### 修正
- コネクションプールのメモリリークを修正Step 5: Group Changes by Skill/Module
Analyze commits since last tag and group by affected skill/module:
- Identify changed files per commit
- Group by skill/module:
skills/<skill-name>/*→ Group under that skill- Root files (CLAUDE.md, etc.) → Group as "project"
- Multiple skills in one commit → Split into multiple groups
- For each group, identify related README updates needed
Example Grouping:
canghe-cover-image:
- feat: add new style options
- fix: handle transparent backgrounds
→ README updates: options table
canghe-comic:
- refactor: improve panel layout algorithm
→ No README updates needed
project:
- docs: update CLAUDE.md architecture sectionStep 6: Commit Each Skill/Module Separately
For each skill/module group (in order of changes):
- Check README updates needed:
- Scan
README*.mdfor mentions of this skill/module - Verify options/flags documented correctly
- Update usage examples if syntax changed
- Update feature descriptions if behavior changed
- Stage and commit: ``
bash git add skills/<skill-name>/* git add README.md README.zh.md # If updated for this skill git commit -m "<type>(<skill-name>): <meaningful description>"``
- Commit message format:
- Use conventional commit format:
<type>(<scope>): <description> <type>: feat, fix, refactor, docs, perf, etc.<scope>: skill name or "project"<description>: Clear, meaningful description of changes
Example Commits:
git commit -m "feat(canghe-cover-image): add watercolor and minimalist styles"
git commit -m "fix(canghe-comic): improve panel layout for long dialogues"
git commit -m "docs(project): update architecture documentation"Common README Updates Needed: | Change Type | README Section to Check | |-------------|------------------------| | New options/flags | Options table, usage examples | | Renamed options | Options table, usage examples | | New features | Feature description, examples | | Breaking changes | Migration notes, deprecation warnings | | Restructured internals | Architecture section (if exposed to users) |
More from freestylefly
Use this skill in a project
Open any RiverX project, search the Skills panel for freestylefly/canghe-skills/release-skills, and install it in one click.
