| name | release |
| description | Prepare a new app release as a PR. Analyzes git history to determine semver bump, updates version files, runs checks, and opens a release PR. Merging the PR auto-builds (and auto-deploys for stable). Use when user says "release", "prepare release", "bump version", or "new version". |
Release
๋ฆด๋ฆฌ์ค๋ main ์ง์ ์ปค๋ฐ์ด ์๋๋ผ PR๋ก ๋ง๋ ๋ค. PR์ ๋จธ์งํ๋ฉด:
- main push๊ฐ
tauri.conf.json ๋ณ๊ฒฝ์ ๊ฐ์งํด build-app.yml์ด ์๋ ์คํ๋๋ค.
- ๋ฒ ํ(
-beta.N ๋ฑ prerelease): ๋น๋ ํ draft ๋ฆด๋ฆฌ์ค๋ก ๋จ๋๋ค. ์๋ ์
๋ฐ์ดํธ๋ ๋๊ฐ์ง ์๋๋ค.
- ์ ์(
x.y.z): ๋น๋ โ ๋ฆด๋ฆฌ์ค ๋
ธํธ ์๋ ์์ฑ โ draft ์๋ publish โ deploy(์๋ ์
๋ฐ์ดํธ + Homebrew Cask + Discord)๊น์ง ์๋ ์งํ๋๋ค.
Workflow
1. Sync to latest main
git checkout main
git pull origin main
Working directory must be clean. Abort if uncommitted changes exist.
2. Determine version
Read current version from apps/app/package.json.
Analyze commits since last tag:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
Apply conventional commits rules:
BREAKING CHANGE or !: in any commit โ major bump
- Any
feat: or feat(โฆ): โ minor bump
- Otherwise (
fix:, perf:, refactor:, chore:, etc.) โ patch bump
Present the recommended version and commit summary to the user. Wait for confirmation before proceeding. The user may override with a different version.
3. Quality checks
bun check:all
bun --filter @moa/app check:all
Abort on failure.
4. Update version files
Run from project root:
bash .claude/skills/release/update-versions.sh <clean_version>
This updates 4 files:
apps/app/package.json
apps/app/src-tauri/Cargo.toml
apps/app/src-tauri/tauri.conf.json
bun.lock (via bun install)
5. Rust compilation check
cd apps/app/src-tauri && cargo check
6. Create release branch and PR
Ask the user for confirmation, then create a branch, commit the version bump, and open a PR:
git checkout -b release/v<version>
git add .
git commit -m "chore: release v<version>"
git push -u origin release/v<version>
gh pr create \
--base main \
--title "chore: release v<version>" \
--body "<๋ฆด๋ฆฌ์ฆ ๋
ธํธ>"
๋ฆด๋ฆฌ์ฆ ๋
ธํธ(PR body) ์์ฑ: git log $(git describe --tags --abbrev=0)..HEAD --oneline ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ํ์์ผ๋ก ์ง์ ์์ฑํ๋ค.
## Release v<version>
### What's Changed
- <feat/fix ๋ฑ ์ฃผ์ ๋ณ๊ฒฝ ์์ฝ (์ปค๋ฐ/PR ๊ธฐ์ค)>
### ๋ฐฐํฌ ์ํฅ
- (์ ์) ๋จธ์ง ์ ์๋ ๋น๋ โ ๋ฆด๋ฆฌ์ค ๋
ธํธ ์๋ ์์ฑ โ ์๋ publish โ ์ ์ฒด ์ฌ์ฉ์ ์๋ ์
๋ฐ์ดํธ
- (๋ฒ ํ) ๋จธ์ง ์ ๋น๋๋ง, draft ์ ์ง โ ์๋ ์
๋ฐ์ดํธ ์ ๋๊ฐ
prerelease ์ฌ๋ถ์ ๋ง๋ "๋ฐฐํฌ ์ํฅ" ํญ๋ชฉ๋ง ๋จ๊ธด๋ค.
์คํฌ์์ git ํ๊ทธ๋ฅผ ์ง์ ๋ง๋ค์ง ์๋๋ค. ๋จธ์ง ํ build-app.yml์ tauri-action์ด with.tagName(v<version>)์ผ๋ก GitHub Release๋ฅผ ๋ง๋ ๋ค. ๋จ GitHub์ draft ๋ฆด๋ฆฌ์ค์๋ git ํ๊ทธ ref๋ฅผ ์์ฑํ์ง ์๊ณ , ๋ฆด๋ฆฌ์ค๊ฐ publish๋ ๋ ํด๋น ์ปค๋ฐ์ ํ๊ทธ๋ฅผ ๋ง๋ ๋ค. ๋ฐ๋ผ์ ์ ์์ ์๋ publish ์์ ์ v<version> ํ๊ทธ๊ฐ ์์ฑ๋๊ณ , ๋ฒ ํ๋ draft๋ก ๋จ๋ ๋์ git ํ๊ทธ๊ฐ ๋ง๋ค์ด์ง์ง ์๋๋ค(์๋ publish ์ ๊น์ง). ๋จธ์ง ์ ์ git ํ๊ทธ๊ฐ ๊ผญ ํ์ํ๋ฉด ๋ณ๋๋ก ์์ฑํด์ผ ํ๋ค.
7. Inform the user
PR ์์ฑ ํ ์๋ด:
- PR์ ์ง์ ๋จธ์งํ๋ฉด ๋น๋๊ฐ ์๋ ์์๋๋ค (์๋ ๋จธ์ง ์ ํจ).
- ์ ์ ๋ฆด๋ฆฌ์ค: ๋จธ์งํ๋ฉด ์๋ publish + ๋ฐฐํฌ๊น์ง ์งํ๋๋ค.
- ๋ฒ ํ ๋ฆด๋ฆฌ์ค: ๋จธ์งํด๋ draft๋ก ๋จ๋๋ค. ์ฌ์ฉ์์๊ฒ ๋ด๋ณด๋ด๋ ค๋ฉด https://github.com/nexters/moa/releases ์์ ์๋ publish.