release-tettuan-breakdown
Create a release following Git Flow strategy. Use when preparing a release, bumping version, creating release branch, or when user says "release", "bump version", "prepare release", "ship version".
SKILL.md.claude/skills/release/SKILL.md
GitHubRelease Procedure
全リリースフロー(version bump → CI → PR → merge → vtag → JSR publish)を管理する。CI green なら自動で次ステップへ進む(ユーザー確認不要)。
Release Flow
develop → release/* →PR→ develop →PR→ main → vtag → publish.yml → JSR
Version Files
deno.json の "version" と lib/version.ts の VERSION は一致必須。Patch (x.y.Z): バグ修正 / Minor (x.Y.0): 新機能 / Major (X.0.0): 破壊的変更
Execution Rules(必読)
このskill起動時、以下のタスクリストをTaskCreateで必ず登録し、1ステップずつ順番に実行・完了マーク([x])すること。スキップ・一括実行・順序変更は禁止。
- 各ステップは実行 → 結果確認 → 自動で次へ。CI/コマンド成功なら確認待ちせずに進める。
- 前ステップが未完了(
[ ])の状態で次ステップへ進まない。 - 失敗時は該当ステップに留まり、原因を解消してから再実行(次へ進まない)。失敗・想定外の状態(branch divergence, conflict, CI failure 等)はユーザーに報告する。
- コマンド実行後は必ず出力を確認し、成功を明示してからチェックを入れる。
X.Y.Zは実際のバージョンに置換する。<PR#>は作成後に取得した番号に置換する。
Task List(必ず全段階を順に実施)
Phase 1: Preparation
- Step 1. Prepare release branch —
git fetch origin && git checkout develop && git pull --ff-only origin develop && git checkout -b release/vX.Y.Zpull --ff-onlyが失敗した場合(local が diverged)はgit reset --hard origin/developでリセットしてから branch を切る。release skill では develop/main にローカル独自コミットは想定しない。- 確認:
git branch --show-currentでrelease/vX.Y.Zを表示することを確認してからチェック。
- Step 2. Version bump(Step 1の直後に必ず実施、他コミットを先行させない) —
scripts/bump_version.sh --patch(または--minor/--major)- 確認:
grep '"version"' deno.jsonとgrep 'VERSION' lib/version.tsが一致することを確認してからチェック。
- 確認:
- Step 3. Update CHANGELOG.md — 今回のリリース内容を追記
- 確認:
git diff CHANGELOG.mdで差分を確認してからチェック。
- 確認:
- Step 4. Local CI —
deno task ci- 確認: 全テストが pass したことを確認してからチェック。失敗したらこのステップに留まる。
Phase 2: Release Branch → Develop
- Step 5. Commit & push —
git add deno.json lib/version.ts CHANGELOG.md && git commit -m "chore: bump version to X.Y.Z" && git push -u origin release/vX.Y.Z- 確認:
git log -1とgit statusで push 完了を確認してからチェック。
- 確認:
- Step 6. Create PR: release/ → develop* —
gh pr create --base develop --head release/vX.Y.Z --title "Release vX.Y.Z"- 確認: 返された PR URL/番号を記録してからチェック。
- Step 7. Wait CI & merge (release → develop) —
gh pr checks <PR#> --watch && gh pr merge <PR#> --merge- 確認: CI green を確認したら自動で merge。merged 状態を
gh pr view <PR#>で確認してからチェック。CI 失敗時はユーザーに報告して停止。
- 確認: CI green を確認したら自動で merge。merged 状態を
Phase 3: Develop → Main
- Step 8. Create PR: develop → main —
gh pr create --base main --head develop --title "Release vX.Y.Z"- 確認: 返された PR URL/番号を記録してからチェック。
- Step 9. Wait CI & merge (develop → main) —
gh pr checks <PR#> --watch && gh pr merge <PR#> --merge- 確認: CI green を確認したら自動で merge。merged 状態を
gh pr view <PR#>で確認してからチェック。CI 失敗時はユーザーに報告して停止。
- 確認: CI green を確認したら自動で merge。merged 状態を
Phase 4: Tag & Publish
- Step 10. Create vtag on main —
git fetch origin main && git tag vX.Y.Z origin/main && git push origin vX.Y.Z- 確認:
git ls-remote --tags origin vX.Y.Zで tag が remote に存在することを確認してからチェック。
- 確認:
- Step 11. Trigger JSR publish —
gh workflow run publish.yml -f tag=vX.Y.Z- 確認:
gh run list --workflow=publish.ymlで run が開始されたことを確認してからチェック。
- 確認:
- Step 12. Verify JSR publication — JSR ページでバージョン反映を確認
- 確認:
https://jsr.io/@tettuan/breakdownで vX.Y.Z が公開されたことを確認してからチェック。
- 確認:
Phase 5: Post-release
- Step 13. Sync local develop & main to HEAD —
git fetch origin && git checkout main && git pull --ff-only origin main && git checkout develop && git pull --ff-only origin developpull --ff-onlyが失敗した場合(local が diverged)はgit reset --hard origin/<branch>でリセット。release skill では develop/main にローカル独自コミットは想定しない。- 確認:
git log develop..origin/mainとgit log main..origin/developが空であることを確認してからチェック。
- Step 14. Cleanup release branch —
git branch -D release/vX.Y.Z && git push origin --delete release/vX.Y.Z- 確認:
git branch -a | grep release/vX.Y.Zが空であることを確認してからチェック。
- 確認:
- Step 15. Start next feature branch —
/create-feature-branchを明示的に呼び出し、次の開発ブランチを作成する- release skill 内で完結させず、必ず
/create-feature-branchskill に委譲すること(ブランチ命名規則と Git Flow の一貫性を保つため)。 - デフォルト動作: ユーザーから明示的な指定(issue 番号・feature 名など)がない場合は、次パッチバージョンの release ブランチを
developから派生させる。例: 直前のリリースがvX.Y.Zならrelease/vX.Y.(Z+1)をdevelopから切る。 - 確認: 新ブランチが
git branch --show-currentで表示され、developから派生していることを確認してからチェック。
- release skill 内で完結させず、必ず
ブランチ戦略は /branch-management、CI は /local-ci /ci-troubleshooting を参照。
Notes
- Never push directly to
mainordevelop - Version in
deno.jsonmust matchlib/version.tsand tag - Flow:
release/* → develop → main(直接 main への PR は禁止) - vtag は手動作成(auto-release.yml は head branch が
release/*の場合のみ動作) - JSR publish requires manual trigger after vtag
- release ブランチ作成後、最初のコミットは必ず version bump にすること。他の変更を先にコミットしない。 GitHub Actions の Version Consistency Check が失敗する原因になる。