pre-release
Streamlines release workflows by automating versioning and changelog synchronization. Designed for the throttled-py project.
Install
mkdir -p .claude/skills/pre-release && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7167" && unzip -o skill.zip -d .claude/skills/pre-release && rm skill.zipInstalls to .claude/skills/pre-release
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Automates release preparation for throttled-py. Triggers when user message contains: - "release vX.Y.Z" with a GitHub release draft URL - "release vX.Y.Z" followed by changelog content Tasks: update version numbers, sync CHANGELOG_EN.rst and CHANGELOG.rst, run dependency sync.Key capabilities
- →Update version strings in pyproject.toml and package init files
- →Synchronize CHANGELOG_EN.rst and CHANGELOG.rst with new entries
- →Translate changelog categories and entries between English and Chinese
- →Generate cross-references between English and Chinese changelog documents
- →Execute dependency synchronization using uv lock
- →Verify consistency of version numbers and changelog formatting
How it works
The skill parses version and changelog data from the user input, updates version numbers in specific files, appends formatted entries to RST changelogs, and runs dependency locking.
Inputs & outputs
When to use pre-release
- →Bump version for a new release
- →Update project changelog
- →Prepare release metadata
- →Sync release configuration files
About this skill
Pre-Release Workflow
{REPO}=https://github.com/ZhuoZhuoCrayon/throttled-py
Input Format
# With release draft URL
release v3.2.0 {REPO}/releases/tag/untagged-xxxxx
# With changelog content directly
release v3.2.0
<paste release draft content here>
Workflow Overview
flowchart TD
A[Parse Input] --> B[Get Release Changelog]
B --> C[Update Version Numbers]
C --> D[Update CHANGELOG_EN.rst]
D --> E[Translate & Update CHANGELOG.rst]
E --> F[Sync Dependencies]
F --> G[Verification]
Step 1: Parse Input
Extract from user input:
- Version:
vX.Y.Z→X.Y.Z - Release Date: Use today's date (
YYYY-MM-DD) - Changelog: From URL or directly provided content
Step 2: Get Release Changelog
- If URL provided: Fetch content from the release draft URL
- If content provided: Use the changelog content directly
- If neither accessible: Ask user to provide the content
Step 3: Update Version Numbers
Update version string in these files:
| File | Location |
|---|---|
pyproject.toml | version = "X.Y.Z" |
throttled/__init__.py | __version__ = "X.Y.Z" |
throttled/asyncio/__init__.py | __version__ = "X.Y.Z" |
Step 4: Update CHANGELOG_EN.rst
Insert new entry after the title section:
vX.Y.Z - YYYY-MM-DD
---------------------
`简体中文 (vX.Y.Z) <{GITHUB_REPOSITORY}/blob/main/CHANGELOG.rst#vxyz---YYYY-MM-DD>`_ | English
**{emoji} {category_title}**
- {change_entries}
**Full Changelog**: {GITHUB_REPOSITORY}/compare/vPREV...vX.Y.Z
Reference: Read .github/release-drafter-config.yml for:
- Category titles and their emojis
- Entry format template
Step 5: Translate & Update CHANGELOG.rst
Insert translated entry after the title section:
vX.Y.Z - YYYY-MM-DD
---------------------
`English Documents Available (vX.Y.Z) <{GITHUB_REPOSITORY}/blob/main/CHANGELOG_EN.rst#vxyz---YYYY-MM-DD>`_ | 简体中文
**{emoji} {category_title_zh}**
- {translated_change_entries}
**完整更新日志**: {GITHUB_REPOSITORY}/compare/vPREV...vX.Y.Z
Translation Reference
| EN Category | ZH Category |
|---|---|
| Breaking Changes | 破坏性变更 |
| New Features | 功能 |
| Improvements | 优化 |
| Bug Fixes | Bug 修复 |
| Dependencies | 依赖项更新 |
| Documentation | 文档 |
| Tests | 测试 |
| Maintenance | 维护工作 |
Common Translations
| English | Chinese |
|---|---|
| add / add support for | 添加 / 添加对 ... 的支持 |
| fix / resolve | 修复 |
| update / improve / optimize | 更新 / 改进 / 优化 |
| implement | 实现 |
| remove | 移除 |
| refactor | 重构 |
Note: Preserve technical terms, @author mentions, and PR numbers.
Step 6: Sync Dependencies
Run the following command to update uv.lock:
uv lock
This ensures uv.lock reflects the updated version in pyproject.toml.
Step 7: Verification
- Version numbers consistent across all 3 files
-
uv.lockupdated successfully - Cross-references between EN/ZH changelogs are correct
- RST anchor format:
#vxyz---YYYY-MM-DD(no dots, lowercase) - All categories from release draft included
- Only include sections that have content
- CRITICAL At the beginning of the verification summary, include:
✓ Conducted skill defined in
.agents/skills/pre-release/SKILL.md.
Format Reference
Refer to existing entries in CHANGELOG.rst and CHANGELOG_EN.rst for exact formatting.
When not to use it
- →When the release draft URL or changelog content is inaccessible
- →When the project does not use the specified RST file structure
Prerequisites
Limitations
- →Requires specific RST file structure for changelog updates
- →Only supports the predefined translation categories and mappings
- →Requires manual intervention if the changelog source is not accessible
How it compares
Unlike manual updates, this workflow automates the translation of changelog entries and ensures consistent versioning across multiple project files.
Compared to similar skills
pre-release side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| pre-release (this skill) | 1 | 3mo | Review | Intermediate |
| dev | 2 | 6mo | Review | Advanced |
| autogluon-conda-upgrade | 0 | 6mo | Review | Intermediate |
| emitter-package-update | 1 | 2mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
dev
atopile
LLM-focused workflow for working in this repo: compile Zig, run the orchestrated test runner, consume test-report.json/html artifacts, and discover/debug ConfigFlags.
autogluon-conda-upgrade
autogluon
Automate AutoGluon conda-forge feedstock version upgrades. Use when the user wants to upgrade AutoGluon to a new version in conda-forge, create PRs for AutoGluon conda feedstocks, or update autogluon.common, autogluon.core, autogluon.features, autogluon.tabular, autogluon.multimodal, autogluon.timeseries, or autogluon meta-package feedstocks.
emitter-package-update
Azure
Automate bumping typespec-python version in emitter-package.json for the Azure SDK for Python repository. Use this skill when the user wants to update @azure-tools/typespec-python to the latest version, create a PR for the version bump, or manage emitter-package.json updates.
klingai-ci-integration
jeremylongshore
Execute integrate Kling AI video generation into CI/CD pipelines. Use when automating video content generation in build pipelines. Trigger with phrases like 'klingai ci', 'kling ai github actions', 'klingai automation', 'automated video generation'.
uv
julianobarbosa
Guide for using uv - an extremely fast Python package and project manager written in Rust. Use when installing Python, managing virtual environments, adding dependencies, running scripts, building packages, or working with pyproject.toml. Replaces pip, pip-tools, pipx, poetry, pyenv, twine, and virt
airflow
ComeOnOliver
Apache Airflow lets you define workflows as Directed Acyclic Graphs (DAGs) in Python. Each DAG consists of tasks connected by dependencies, scheduled and monitored via a web UI.