ワンクリックで
release
Prepare a Metalastic release — analyze commits, generate release notes, update version references, commit, tag, and push
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Prepare a Metalastic release — analyze commits, generate release notes, update version references, commit, tag, and push
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | release |
| description | Prepare a Metalastic release — analyze commits, generate release notes, update version references, commit, tag, and push |
| disable-model-invocation | true |
| argument-hint | [version] |
You are preparing a new Metalastic release. Follow each step below carefully and in order. This process has side effects (commits, tags, pushes) — always confirm with the user before destructive or irreversible actions.
Parse version from the argument $ARGUMENTS.
git tag --sort=-v:refname | grep '^v' | head -1) and the number of commits since it (git rev-list {LAST_TAG}..HEAD --count), then ask the user for the version number.v prefix. Validate it matches MAJOR.MINOR.PATCH (all numeric).NEW_VERSION to the validated version string (without v).Check tag doesn't exist: git tag -l "v{NEW_VERSION}" — if output is non-empty, abort with a message.
Check branch: git branch --show-current — must be main or master. If not, warn and ask user whether to continue.
Check clean working directory: git status --porcelain — if non-empty, warn the user, show the dirty files, and ask whether to continue.
Check up to date with remote: Run git fetch origin then git status -sb to check ahead/behind. If behind, warn and suggest pulling first.
git tag --sort=-v:refname | grep '^v' | head -1 → LAST_TAGOLD_VERSION = LAST_TAG without the v prefix.git log {LAST_TAG}..HEAD --oneline --no-mergesfeat → Featuresfix → Bug Fixeschore(deps) → Dependency Updateschore (other) → Maintenancerefactor → Refactoringdocs → Documentationtest → TestsNEW_VERSION: from Step 1OLD_VERSION: from Step 2NEXT_SNAPSHOT: propose {NEW_VERSION}-SNAPSHOT (matching the pattern in gradle.properties). Confirm with user.Create release-notes/RELEASE_NOTES_v{NEW_VERSION}.md following the structure of existing release notes. Use the commit analysis from Step 2 to populate the content.
Required structure (adapt sections based on what's actually in the commits):
# Metalastic v{NEW_VERSION} Release Notes
## [Category sections based on commit analysis]
- Group related changes under descriptive headers
- Include links to external release notes when upgrading dependencies
- Provide migration notes if relevant
## ✅ No Breaking Changes / ⚠️ Breaking Changes
- State clearly whether there are breaking changes
- If breaking, provide migration guide
## 🔗 Links
- **Documentation:** https://ekino.github.io/Metalastic/
- **Maven Central:** https://central.sonatype.com/search?q=g:com.ekino.oss
- **Gradle Plugin Portal:** https://plugins.gradle.org/plugin/com.ekino.oss.metalastic
## ⬆️ Upgrade Guide
### Using Gradle Plugin
[code block with NEW_VERSION, read current KSP version from versions.data.ts]
### Using Manual Dependencies
[code block with NEW_VERSION]
## 🙏 Credits
Thank you for using Metalastic! Report issues at https://github.com/ekino/Metalastic/issues
Show the generated release notes to the user and ask for approval before proceeding. The user may want to edit the content — if so, apply their changes.
Update the following 7 files. Important: For each file, search for the ACTUAL old version string present (versions may be inconsistent across files from past partial releases). Do not blindly assume OLD_VERSION is used everywhere — read each file first and replace what's actually there.
Already created in Step 4: release-notes/RELEASE_NOTES_v{NEW_VERSION}.md
## [{NEW_VERSION}] - {TODAY's DATE in YYYY-MM-DD format}
with the categorized changes from Step 2.[Unreleased] comparison link at the bottom to compare from v{NEW_VERSION}:
[Unreleased]: https://github.com/ekino/Metalastic/compare/v{NEW_VERSION}...HEAD
[{NEW_VERSION}]: https://github.com/ekino/Metalastic/compare/v{OLD_VERSION}...v{NEW_VERSION}
Replace ALL occurrences of the old Metalastic version with {NEW_VERSION}. This includes:
version "1.2.1" → version "{NEW_VERSION}")metalastic-core:1.2.1 → metalastic-core:{NEW_VERSION})Update the version values:
metalastic: '{NEW_VERSION}'dsl.rolling: '{NEW_VERSION}'dsl.frozen55: '{NEW_VERSION}'dsl.frozen53: '{NEW_VERSION}'Update localVersion to {NEXT_SNAPSHOT}:
localVersion={NEXT_SNAPSHOT}
Update the fallback version string in the else branch (local development version) to {NEXT_SNAPSHOT}:
else -> project.findProperty("localVersion") as String? ?: "{NEXT_SNAPSHOT}"
Replace ALL Metalastic version references throughout the file. Search for the old version string and replace with {NEW_VERSION}. This appears in:
After all updates, show a summary of files modified and key changes made.
./gradlew spotlessApply to format any changed files../gradlew clean build to verify the full build passes./release {NEW_VERSION}.Show the user a summary:
v{OLD_VERSION} → v{NEW_VERSION}v{NEW_VERSION}{NEXT_SNAPSHOT}git diffAsk the user to confirm before committing. If they want changes, go back and apply them.
Create a release branch:
git checkout -b release/v{NEW_VERSION}
Stage only the specific modified files (list them explicitly, no git add .):
git add release-notes/RELEASE_NOTES_v{NEW_VERSION}.md CHANGELOG.md README.md docs/.vitepress/versions.data.ts gradle.properties build.gradle.kts CLAUDE.md
Commit:
git commit -m "chore: prepare v{NEW_VERSION} release"
Push branch and create PR:
git push -u origin release/v{NEW_VERSION}
Then create a PR targeting main using gh pr create with a summary of all changes.
Display post-merge instructions: After the PR is merged, the user needs to tag and push to trigger the release pipeline:
git checkout main
git pull
git tag v{NEW_VERSION}
git push origin v{NEW_VERSION}
Then monitor:
https://github.com/ekino/Metalastic/actionshttps://central.sonatype.com/search?q=com.ekino.osshttps://plugins.gradle.org/plugin/com.ekino.oss.metalastichttps://github.com/ekino/Metalastic/releases/tag/v{NEW_VERSION}/release {NEW_VERSION}