Use this skill when the user asks to publish a release, create a release, "create release", "create-release", "tag a release", or generate a changelog. Requires Gitee MCP Server to be configured.
Installs into .claude/skills of the current project.
Are you the author of Gitee Create Release?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/luokai0-gitee-create-release)
---
name: create-release
description: Use this skill when the user asks to publish a release, create a release, "create release", "create-release", "tag a release", or generate a changelog. Requires Gitee MCP Server to be configured.
version: 1.0.0
requires:
mcp-servers:
- gitee
---
> **Note**: If you have `mcporter` installed locally, you should use `mcporter` to invoke the MCP tool instead of directly calling the MCP tool. The `mcporter` CLI provides a more convenient interface and better error handling.
# Create Release via Gitee MCP
Auto-generate a changelog from merged PR history and publish a well-structured release on Gitee.
## Prerequisites
- Gitee MCP Server configured (tools: `list_releases`, `list_repo_pulls`, `create_release`)
- User must provide: repository owner, repository name, version number
- Optional: previous version number (to determine the changelog range)
## Steps
### Step 1: Confirm the Version Number
Confirm the version number with the user, following Semantic Versioning:
```
vMAJOR.MINOR.PATCH
- MAJOR: incompatible API changes
- MINOR: backward-compatible new features
- PATCH: backward-compatible bug fixes
```
If the user hasn't provided one, suggest an appropriate version based on the nature of the changes.
### Step 2: Review Release History
Use `list_releases` to retrieve existing releases:
- Confirm the previous version number
- Understand the version naming convention (e.g., whether a `v` prefix is used)
- Avoid version number conflicts
### Step 3: Collect PR Changes
Use `list_repo_pulls` to get PRs merged since the last release:
- `state`: `merged`
- Sort by merge time, filtering for PRs after the last release
Classify each PR:
- `feat` / `feature`: new feature
- `fix` / `bugfix`: bug fix
- `refactor`: code refactoring
- `perf`: performance improvement
- `docs`: documentation update
- `chore`: dependency / build / toolchain changes
- `breaking`: breaking change (title contains `breaking` or `!:`)
### Step 4: Analyze Code Changes
As a supplement to PR titles, use `compare_branches_tags` to get a more detailed diff analysis:
```
compare_branches_tags(owner="[owner]", repo="[repo]", target="[current_branch]", base="[previous_version_tag]")
```
This returns:
- Files changed (added, modified, deleted)
- Commit history between versions
- Code statistics (additions, deletions)
Use this to understand the actual code changes behind each PR, especially useful when PR titles are unclear.
### Step 5: Generate Changelog
Generate the changelog using this template:
```markdown
## [v{version}] - YYYY-MM-DD
### ⚠️ Breaking Changes
- [PR title] (#PR number) @author
### ✨ New Features
- [PR title] (#PR number) @author
- [PR title] (#PR number) @author
### 🐛 Bug Fixes
- [PR title] (#PR number) @author
### ⚡ Performance
- [PR title] (#PR number) @author
### 📖 Documentation
- [PR title] (#PR number) @author
### 🔧 Other
- [PR title] (#PR number) @author
---
**Full changelog**: [link comparing previous version...current version]
```
Omit sections with no changes.
### Step 6: Confirm and Create the Release
Show the generated changelog to the user for confirmation. After confirmation, use `create_release` with these parameters:
- `tag_name`: version number (e.g., `v1.2.0`)
- `name`: release title (e.g., `Release v1.2.0`)
- `body`: changelog generated in Step 4
- `prerelease`: set to `true` for pre-release versions (alpha / beta / rc)
After successful creation, output the link to the Release page.
## Notes
- Use the `v` prefix in version numbers (e.g., `v1.2.0`) to match common project conventions
- Breaking changes must be prominently highlighted to warn users upgrading
- If PR titles are not semantic, lightly rephrase them in the changelog while preserving the original intent
- Pre-release versions (alpha / beta / rc) should be marked `prerelease=true` so they don't affect the stable release line