ワンクリックで
prepare-release
// 9 パッケージ × 5 レジストリの version bump と関連ファイル更新 (Cargo.lock / package-lock.json / Swift checksum / CHANGELOG 昇格) を 1 コマンドで適用案にする read-mostly skill。`release-prep` (確認用) の続きに呼び、 実 bump 差分の markdown 提案 + 順序付き publish ガイドを生成する。
// 9 パッケージ × 5 レジストリの version bump と関連ファイル更新 (Cargo.lock / package-lock.json / Swift checksum / CHANGELOG 昇格) を 1 コマンドで適用案にする read-mostly skill。`release-prep` (確認用) の続きに呼び、 実 bump 差分の markdown 提案 + 順序付き publish ガイドを生成する。
「PR を作って」「pull request を出して」要求で発動。 push → 構造化 PR 本文 (pull_request_template.md 準拠) で PR 作成 → CI 監視ループ → review thread 返信+resolve まで 1 skill で完結。 skill 間 handoff を排除し工程の取りこぼしを防ぐ。 マイルストーン非付与、 auto-merge 非使用。
ORT / openjtalk / ruff のような cross-runtime に canonical sync が必要な依存関係を 1 コマンドで bump する read-mostly skill。 既存の `check_ort_versions.py` / `check_openjtalk_version_sync.py` / `check_ruff_version_sync.py` が drift 検出後に「どこを何バージョンに上げる」を提示する逆方向 helper。
学習済み Lightning checkpoint (.ckpt) を ONNX export → sanity check → RTF benchmark → HuggingFace upload まで連鎖実行する read-mostly skill。 export 仕様 (FP16 / EMA / emb_lang unify / opset 15) を `docs/spec/onnx-export-contract.toml` から取得し、 全 7 ランタイムでの load 可否を gate する。
PR レビューコメントへの対応 / review thread の resolve / Copilot や human reviewer のコメントに返信 する文脈で発動。修正コミット後に呼ぶと、各 unresolved thread に対して返信本文を生成し thread を resolve する。`--stale-check` で「コメント以降に該当ファイルが更新済」を自動 flag、`--skip-copilot-style` で Copilot 定型ノイズ regex 除外、`--dry-run` で計画のみ表示、`--auto-safe` で stale + Copilot ノイズ category のみ自動 reply + resolve (人間 reviewer / 非 stale はユーザ判断)。
`.claude/skills/*/SKILL.md` の frontmatter / referenced script 実在 / trigger 衝突 / `.claude/hooks/*.sh` の executable+shebang を検査する meta-skill。 メタワークフロー監査で「hook script rot が最高リスク」と判明したため、 commit 前または skill 編集後に呼んで health check を行う。
CI workflow の最近 run を集計し、 failure を「flake / drift / env / test bug」に自動分類する skill。 既存 `/watch-pr <PR>` の workflow-level 拡張。 引数なしで全 workflow の health check、 `--workflow <name>` で個別 workflow の最近失敗パターンを抽出。 docker-build 45% / go-ci 14% / csharp-ci 13% のような chronic flake を可視化する。
| name | prepare-release |
| description | 9 パッケージ × 5 レジストリの version bump と関連ファイル更新 (Cargo.lock / package-lock.json / Swift checksum / CHANGELOG 昇格) を 1 コマンドで適用案にする read-mostly skill。`release-prep` (確認用) の続きに呼び、 実 bump 差分の markdown 提案 + 順序付き publish ガイドを生成する。 |
| argument-hint | <runtime|all> --target-version X.Y.Z [--dry-run] |
| disable-model-invocation | true |
| allowed-tools | Bash(cat *) Bash(grep *) Bash(jq *) Bash(rg *) Bash(awk *) Bash(curl -s *) Bash(npm view *) Bash(git diff *) Bash(git log *) Bash(git status *) Bash(swift package compute-checksum *) Read Edit Grep |
release-prep (read-mostly な確認) の続きとして、 実際の version bump 差分 を全 manifest にわたり生成する skill。
ユーザは memory feedback_conservative_changes.md / feedback_merge_caution.md に従い、 適用は明示確認を取ってから (デフォルト dry-run、 markdown diff 提示のみ)。
| 段階 | 対応 |
|---|---|
| Version 散在検出 | 9 manifest を一括 bump 案として markdown 出力 |
| Lockfile 再生成 | uv.lock / Cargo.lock / package-lock.json の更新コマンド提示 |
| Swift checksum | xcframework artifact 取得後の swift package compute-checksum 手順 |
| CHANGELOG 昇格 | [Unreleased] → [X.Y.Z] - YYYY-MM-DD の markdown diff |
| Tag 順序ガイド | npm tag (g2p 先行) / shared-lib tag / 内部 chain tag の順序 |
| 公開後検証 | 各 registry で publish 完了確認の手順 |
$ARGUMENTS 1 つ目: all / python / rust / csharp / npm / swift / kotlin--target-version X.Y.Z: 次回リリース version (必須)--dry-run (default): markdown 出力のみ、 ファイル変更しない--apply: dry-run の確認後にユーザが追加で渡す flag。 これがある時のみ Edit を実行git rev-parse --abbrev-ref HEADgit tag --sort=-v:refname | head -3並列で Read し、 各 manifest の現 version を抽出:
| Runtime | Manifest | 抽出キー |
|---|---|---|
| Python | VERSION | ファイル全体 |
| Python (g2p) | src/python/g2p/pyproject.toml | [project].version |
| Rust | src/rust/Cargo.toml | [workspace.package].version |
| C# Core | src/csharp/PiperPlus.Core/PiperPlus.Core.csproj | <Version> |
| C# Cli | src/csharp/PiperPlus.Cli/PiperPlus.Cli.csproj | <Version> |
| npm synth | src/wasm/openjtalk-web/package.json | .version |
| npm g2p | src/wasm/g2p/package.json | .version |
| Swift | Package.swift | let version = 行 + let g2pVersion = 行 |
| Kotlin | android/gradle.properties | VERSION_NAME= |
uv run python scripts/check_voice_catalog_parity.py 2>&1 | tail -3
uv run python scripts/check_ort_versions.py 2>&1 | tail -3
uv run python scripts/check_openjtalk_version_sync.py 2>&1 | tail -3
uv run python scripts/check_ruff_version_sync.py 2>&1 | tail -3
uv run python scripts/check_migration_changelog_parity.py 2>&1 | tail -3
drift があれば bump 前に修復するよう警告。
--target-version を基準に、 該当 runtime の manifest 全てに対する diff を markdown 出力:
出力例 (markdown):
VERSION): 1.12.0 → 1.13.0src/rust/Cargo.toml [workspace.package].version): 0.4.0 → 0.5.0src/wasm/openjtalk-web/package.json): 0.6.0 → 0.7.0all の場合は 9 manifest 全てを順次出力する。
# Python
uv lock --upgrade-package piper-plus
# Rust
(cd src/rust && cargo update -p piper-plus)
# npm synth
(cd src/wasm/openjtalk-web && npm install --package-lock-only)
# npm g2p
(cd src/wasm/g2p && npm install --package-lock-only)
--apply 時は順次実行、 そうでなければコマンドのみ表示。
Package.swift の checksum を release-shared-lib.yml の artifact から取得する手順:
# 1. release-shared-lib.yml の release run の zip URL を取得
gh run list --workflow=release-shared-lib.yml --limit 1 --json databaseId,headBranch
# 2. 各 artifact をダウンロード
gh release download v<TARGET_VERSION> --pattern "*.xcframework.zip"
# 3. swift package compute-checksum
swift package compute-checksum piper-plus-<TARGET_VERSION>.xcframework.zip
swift package compute-checksum piper-plus-g2p-<TARGET_VERSION>-apple.xcframework.zip
# 4. Package.swift の checksum / g2pChecksum 行を更新
これは release artifact が出てから行うため、 tag push 後の作業。 dry-run でも手順を出力する。
awk '/^## \[Unreleased\]/{flag=1; next} /^## /{flag=0} flag' CHANGELOG.md
を抽出し、 以下を提案:
## [<TARGET_VERSION>] - <YYYY-MM-DD>
(Unreleased から移動した内容)
## [Unreleased]
(空 or next-version 着手項目)
--apply で直接 Edit、 そうでなければ diff のみ出力。
CONTRIBUTING.md の規約に従い、 tag push 順序を明示:
wasm-g2p-v<X.Y.Z> (npm @piper-plus/g2p)npm-v<X.Y.Z> (npm piper-plus、 g2p に依存)v<X.Y.Z> (root)
→ dev-create-release.yml 内部で PyPI / crates.io / NuGet を sleep 30 入りで連鎖kotlin-g2p-v<X.Y.Z> (Maven Central、 独立)v<X.Y.Z> の release-shared-lib.yml (libpiper_plus + iOS xcframework)順序逆転による npm install 失敗 (g2p が無いと piper-plus install fail) を防ぐ。
# 各 registry で publish 完了を確認
curl -s https://pypi.org/pypi/piper-plus/json | jq -r '.info.version'
curl -s https://crates.io/api/v1/crates/piper-plus | jq -r '.crate.max_version'
npm view piper-plus version
npm view @piper-plus/g2p version
curl -s "https://api.nuget.org/v3-flatcontainer/piperplus.core/index.json" | jq -r '.versions[-1]'
curl -s "https://search.maven.org/solrsearch/select?q=g:io.github.ayutaz+AND+a:piper-plus-g2p-android&rows=1&wt=json" | jq -r '.response.docs[0].latestVersion'
target version と一致するまで sleep 30 で polling、 30 分以内に揃わなければエラー報告。
release-prep は「現状の version 散在確認」、 本 skill は「次回 version へ bump する適用案生成」。 先に release-prep で drift を解消してから本 skill を使う流れが推奨。--dry-run がデフォルト で、 --apply は明示指定が必要。# 全 runtime の v1.13.0 リリース bump 案を生成 (dry-run)
/prepare-release all --target-version 1.13.0
# Python だけ確定、 適用
/prepare-release python --target-version 1.13.0 --apply
# Rust 0.5.0 リリース、 lockfile 再生成手順のみ表示
/prepare-release rust --target-version 0.5.0
[Unreleased] 昇格 の規定化 (現状: 手動 markdown 編集)