release

Create release candidates with version validation, changelog updates, and tests for iOS projects.

70|6|Updated Feb 14, 2026
One-click install
npx skills add https://github.com/crazytan/KeeForge --skill release-crazytan
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: release
Source: https://github.com/crazytan/KeeForge/tree/main/.claude/skills/release
Command: npx skills add https://github.com/crazytan/KeeForge --skill release-crazytan

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Automates and guards the high-risk, multi-step process of cutting a release candidate so that version bumps, changelog updates, tests, and deployment triggers are performed correctly and consistently, reducing human error and release friction.

Core Features & Use Cases

  • Version validation: Reads the current MARKETING_VERSION, validates semver formatting, and ensures the requested tag does not already exist.
  • Changelog management: Extracts Unreleased entries, organizes them into categorized subsections, and creates a dated v{version} section while leaving an empty Unreleased heading.
  • Project and CI updates: Updates MARKETING_VERSION and CURRENT_PROJECT_VERSION for both KeeForge and AutoFillExtension targets, regenerates the Xcode project, runs unit and UI tests, and commits, tags, and pushes to trigger Xcode Cloud and TestFlight.
  • Use Case: When preparing to ship 1.6.0, run the workflow to validate the version, move changelog entries, run all tests, and push a tagged release that Xcode Cloud will build and distribute.

Quick Start

Create a release candidate for version 1.6.0, validate version and changelog entries, run the full test suite, and push the commit and tag if everything passes.

Frequently Asked Questions about release

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automate cutting an iOS release candidate with XcodeGen and Xcode Cloud?

Automating an iOS release candidate involves validating semver and tag uniqueness, updating MARKETING_VERSION and CURRENT_PROJECT_VERSION, regenerating the Xcode project, running tests, and pushing a tag to trigger Xcode Cloud. This workflow handles all those steps end-to-end.

How do I move Unreleased changelog entries into a dated version section automatically?

To update your changelog, the workflow extracts Unreleased entries from CHANGELOG.md, organizes them into categorized subsections, creates a dated v{version} section, and leaves an empty Unreleased heading behind.

Does this release workflow support iOS projects that use project.yml and XcodeGen?

Yes, this release workflow is specifically designed for iOS Swift/Xcode projects that use project.yml, XcodeGen-generated Xcode projects, and Xcode Cloud or TestFlight pipelines for distribution.

What happens if I try to cut a release with a Git tag that already exists?

If the requested Git tag already exists, the workflow halts during tag uniqueness validation to prevent duplicate releases and deployment pipeline conflicts.

Can I run unit and UI tests before pushing a release candidate to TestFlight?

Yes, the workflow runs unit and UI tests after updating project versions and regenerating the Xcode project, only committing and pushing the release tag if the full test suite passes.

Why do I need to update both MARKETING_VERSION and CURRENT_PROJECT_VERSION for an iOS release?

Updating both MARKETING_VERSION and CURRENT_PROJECT_VERSION ensures your iOS app and its extensions, such as AutoFillExtension, share synchronized build and version numbers required by Xcode Cloud and TestFlight distribution.