| name | check-new-runtime-asset |
| description | 新規データアセット (JSON/TOML) を追加した PR で「7 箇所の package metadata 更新が全て揃っているか」を 1 コマンドで確認。MANIFEST.in / pyproject package-data / Cargo features / npm files / C# Content / Android assets / SPM resources の更新漏れを fail-fast。PR |
| disable-model-invocation | true |
| allowed-tools | Bash(git diff *) Bash(git status *) Bash(grep *) Bash(python *) Bash(uv run *) |
新規ランタイムアセット配布チェック
新規 JSON/TOML データファイルを 1 つでも追加した PR で、各ランタイムの配布物
metadata に同期して載っているかを PR 提出前に 確認する。レビュアーが
毎回同じ指摘を出していた配布物欠落 (PR #397 で zh_en_loanword.json が
wheel 漏れ、PR #400 で Android assets DSL コメント、PR #438 で setup.py /
pyproject 分離) を local で潰すための skill。
何をチェックするか
git diff --name-only origin/dev...HEAD から 新規追加されたデータ
ファイル を検出する (data/dictionaries/、src/python*/g2p/data/、
tests/fixtures/、Sources/.../Resources/、android/.../assets/ 等)
- 検出された各ファイルについて、以下 7 箇所の更新有無を grep で確認:
MANIFEST.in または pyproject.toml [tool.setuptools.package-data]
src/python/g2p/MANIFEST.in (G2P 独立 wheel)
Cargo.toml の include または features.bundled-dicts
- npm
package.json の files
- C#
.csproj の <Content> / <EmbeddedResource>
- Android
build.gradle.kts の assets.srcDirs (asset auto-bundle なら自動)
- SPM
Package.swift の .process("Resources/...")
- 更新漏れがあれば file path と 修正例を提示
実行手順
1. 新規追加されたデータファイルを列挙
git diff --name-only --diff-filter=A origin/dev...HEAD | \
grep -E '\.(json|toml|tsv|txt)$' | \
grep -E '(data/|fixtures/|Resources/|assets/)' || \
echo "新規データファイルなし — このチェックは skip 可"
2. 検出されたファイルごとに 7 箇所の grep を回す
BASENAME=$(basename src/python/g2p/piper_plus_g2p/data/new_dict.json)
echo "=== MANIFEST.in / pyproject ==="
grep -rn "$BASENAME" MANIFEST.in src/python/g2p/MANIFEST.in src/python_run/MANIFEST.in 2>/dev/null
grep -rn "$BASENAME" pyproject.toml src/python_run/pyproject.toml src/python/g2p/pyproject.toml 2>/dev/null
echo "=== Cargo.toml ==="
grep -rn "$BASENAME" src/rust/*/Cargo.toml src/rust/*/src/*.rs 2>/dev/null
echo "=== npm files ==="
grep -rn "$BASENAME" src/wasm/*/package.json 2>/dev/null
echo "=== C# csproj ==="
grep -rn "$BASENAME" src/csharp/**/*.csproj 2>/dev/null
echo "=== Android assets ==="
grep -rn "$BASENAME" android/**/build.gradle.kts android/**/src/main/assets/ 2>/dev/null
echo "=== SPM Package.swift ==="
grep -rn "$BASENAME" Package.swift Sources/**/Resources/ 2>/dev/null
3. 既存 sync gate との連携
新規ファイルが「他ランタイムに mirror される」ものなら、対応する sync gate
(scripts/check_loanword_consistency.py、scripts/check_pua_consistency.py、
scripts/check_dictionary_consistency.py 等) に canonical path と mirror
path を追加 する。新規 sync gate が必要なら check_dictionary_consistency.py
をテンプレートにコピーする。
cp scripts/check_dictionary_consistency.py scripts/check_<topic>_consistency.py
確認すべき事項
関連ドキュメント