name: bump-deps
description: 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。
argument-hint: "<ort|openjtalk|ruff|all> --target [--apply]"
disable-model-invocation: true
allowed-tools: Bash(uv run *) Bash(grep *) Bash(rg *) Bash(curl -s *) Bash(jq *) Bash(awk *) Bash(git diff *) Bash(git status *) Read Edit Grep
Cross-Runtime Dependency Bump Skill
ORT / openjtalk / ruff のような「複数ファイル散在 / canonical source あり」 系の依存関係を、 canonical を更新したら mirror 箇所も同時に提案する skill。
既存の sync gate (check_*_sync.py) は drift を検出するだけ、 本 skill は drift を 解消する diff を提示する。
memory feedback_conservative_changes.md に従い、 デフォルト dry-run、 markdown diff の提示のみ。 --apply で Edit を実行。
対象依存
| 名前 | Canonical | Mirror 数 | 既存 gate |
|---|---|---|---|
| ONNX Runtime | cmake/OnnxRuntime.cmake (ONNXRUNTIME_VERSION) |
6+ ファイル | check_ort_versions.py / check_ort_version_drift.py |
| openjtalk | cmake/ExternalDeps.cmake (URL 内の version) |
3+ ファイル | check_openjtalk_version_sync.py |
| ruff | pyproject.toml (dev group の最初の出現) |
6 箇所 | check_ruff_version_sync.py |
| (将来) | cmake/... (新 dep) |
TBD | (新 gate) |
引数
$1(必須):ort/openjtalk/ruff/all--target X.Y.Z(必須): 新 version--apply: dry-run の確認後 Edit を実行 (default は dry-run)
現在の状態
- ブランチ: !
git rev-parse --abbrev-ref HEAD - 引数: $ARGUMENTS
フェーズ 1: 現状 + drift 確認
uv run python scripts/check_ort_versions.py --verbose 2>&1 | head -30
uv run python scripts/check_openjtalk_version_sync.py --verbose 2>&1 | head -20
uv run python scripts/check_ruff_version_sync.py 2>&1 | head -20
drift があれば「先に解消」を提案、 なければ「新 target への bump 案」を作る。
フェーズ 2: ORT bump 案 (ort の場合)
# 6 ファイルの diff を生成
TARGET="$2" # 例 1.18.0
# 1. cmake/OnnxRuntime.cmake
rg "set\(ONNXRUNTIME_VERSION" cmake/OnnxRuntime.cmake
# 2. .github/workflows/{ort-version-sync,release-shared-lib,android-build,release-kotlin-g2p,kotlin-g2p-ci,build-piper,_build-test-cpp}.yml
rg "ONNXRUNTIME_VERSION:" .github/workflows/ -l
# 3. docker/cpp-dev/Dockerfile
rg "ONNXRUNTIME_VERSION" docker/cpp-dev/Dockerfile
# 4. src/python/pyproject.toml + src/python_run/requirements*.txt
rg "onnxruntime[<>=~]" src/python/ src/python_run/
# 5. src/csharp/*.csproj
rg "Microsoft.ML.OnnxRuntime" src/csharp/
# 6. src/go/go.mod
rg "github.com/yalue/onnxruntime_go" src/go/go.mod
# 7. src/wasm/openjtalk-web/package.json
rg "onnxruntime-web" src/wasm/openjtalk-web/
各 hit の前後を markdown diff 形式で出力:
- set(ONNXRUNTIME_VERSION 1.17.1)
+ set(ONNXRUNTIME_VERSION 1.18.0)
フェーズ 3: openjtalk bump 案 (openjtalk の場合)
cmake/ExternalDeps.cmake の URL pattern (例えば pyopenjtalk-plus/archive/v0.4.1.post7.tar.gz) と、 src/python/pyproject.toml / requirements.txt / src/python/g2p/pyproject.toml の pyopenjtalk-plus==0.4.1.post7 を同期。
フェーズ 4: ruff bump 案 (ruff の場合)
6 箇所同時更新:
.pre-commit-config.yamlrev: v<VER>.github/workflows/python-lint.ymlpip install ruff==<VER>.github/workflows/ci.ymluv pip install ... ruff==<VER>pyproject.toml3 dependency group の"ruff==<VER>"
フェーズ 5: 再検証
--apply で Edit を実行した後、 同じ check_*_sync.py を再走させて drift 0 を確認:
uv run python scripts/check_ort_versions.py
uv run python scripts/check_openjtalk_version_sync.py
uv run python scripts/check_ruff_version_sync.py
フェーズ 6: 追加検証 (ORT の場合)
ORT bump は ABI 変更があり得るため、 以下の dependent check も走らせる:
# Python load test
uv run python -c "import onnxruntime; print(onnxruntime.__version__)"
# Rust load test
(cd src/rust && cargo check -p piper-core)
# 各 runtime CI workflow が pass しているか
gh run list --workflow=ci.yml --limit 5
注意
- memory feedback_conservative_changes: ORT は ABI 互換が崩れやすいため、 patch bump (
0.0.X) のみ default、 minor / major bump は明示--target指定必須。 - memory feedback_pin_actions_sha: actions の SHA pin に類する操作はこの skill では行わない (
/check-action-pins別 skill)。 - memory feedback_merge_caution:
--applyで Edit を実行する時はファイル単位で confirm。
使用例
# ORT を 1.18.0 に bump (dry-run)
/bump-deps ort --target 1.18.0
# ruff を 0.16.0 に bump して即適用
/bump-deps ruff --target 0.16.0 --apply
# openjtalk patch bump
/bump-deps openjtalk --target 0.4.1.post8
期待効果
- ORT / openjtalk / ruff の bump 漏れ を check_*_sync.py に頼らず能動的に防ぐ
- canonical source → mirror への 手作業 grep + Edit を 1 skill 化
- Dependabot uv-workspace PR (pyproject.toml だけ bump) のような partial bump に対する後追い fix
- ABI 互換確認の post-bump dependent check